last updated:02 Feb 2004 19:53 UK time
Joel On Software Discussion Forum
JOS Statistics - Recent Comments
(Comments added for week ending Sun 01 Feb 2004) | View Other Weeks
Recording software | Sun 01 Feb | Ronnie Omuga
Hallo there, Im looking for a software thats able to record,convert,edit,burn and manipulate music, something in the calibre of Cool Edit Pro 2.0 but better. Any suggestions
Sun 01 Feb | Damian | Sound Forge http://www.sonicfoundry.com/
Sun 01 Feb | Caliban Tiresias Darklock | Better how? CoolEdit Pro is not a music application, it's a SOUND application. SoundForge is, too. If you are working with sound, you may be surprised to learn thet CoolEdit and CoolEdit Pro are completely different beasts and the base CoolEdit may be exactly what you need. (Check the demo.) If you're working with MUSIC, i.e. you want to work with measures and beats and notes instead of seconds and samples and frequencies, you're asking a whole different question and I'll need to know more about what you want.
Sun 01 Feb | www.marktaw.com | CEP2 is good, what do you want to do with it? It's the standard recording application at Clearvision radio stations. How much money do you want to spend anyway?
Sun 01 Feb | no name | pro tools, garage band, logic, cubase, peak, sound forge. google is your friend.
Sun 01 Feb | www.marktaw.com | (ps visit my website for a large overview of this kind of software)
Specifying IE Settings from Group Policy | Sun 01 Feb | Chris Ormerod
Hi all, I have a web application that supports Integrated Windows Authentication. In IE6 on Windows XP the tick box on the advanced tab of IE Options called Enable Integrated Windows Authentication is ticked on by default. In Windows 2000 this tick box is off by default. Now one of our customers had an issue with the single sign on mechanism of our application that we now know to be caused by this tick box being unticked. We have informed them that turning this tickbox on will resolve the problem they are having BUT I am predicting that it is only a matter of hours before we get a call exclaiming that they cant be expected to go around to 12,000 PCs and turn this option on and that we will need to find a different resolution. So my question to you all here is - is it possible to specify this setting using group policy? I have been fiddling with the GP on our domain and I can disable the Advanced tab completely and I can do mean things like disable the media player activex control. but I cant find an option to actually specify the Advanced settings (this tick box in particular) from the policy. Chris.
Sun 01 Feb | Caliban Tiresias Darklock | I would take another approach to this. When the application starts, I would *check* the setting of that option to make sure it was on. If it was off, I would tell the user it was off. If I could legitimately and securely turn it on, I would offer to turn it on for the user. If I couldn't, I would instruct the user in how to turn it on. I would NOT turn it on automatically, because it requires a reboot before it works. This setting is described in HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Internet Explorer/AdvancedOptions/CRYPTO/NEGOTIATE/ and apparently can be enabled by writing a key called ValueName with a value of CheckedValue to the registry path specified in RegPath. I assume that if you check RegPath and do not find ValueName, the setting is currently DefaultValue. I don't feel like rebooting repeatedly to play with this, so I'll let you do that if you like.
writing a paper on software developed? | Sun 01 Feb | Confused
I have been involved in writing a data mining system for information retrevial and text parsing of very large databases. In course I have developed some heuristic algorithms combining and modifying other peoples work for the requirements of the project. In the end my results are by and large comparable with the software which is the industry standard in use, developed by some people at one of the worlds top universities. I am not an academic(BS in cs), but in the course of the project read many papers and came up with interesting approaches to various problems. I think the work is quality enough that it can be published as a paper, unfortunately this is a real world live system developed for a company which owns the work. Publishing a paper would be something which my boss wont definitely allow. But its something I feel will help advance my career, as the whole system has been developed by me from scratch( design,development and testing). While its not perfect, it rivals the industry standard software tool most of the time. Is there any way I can publish a paper or article on this work? My boss will definitely say no, and I dont want to do anything unethical. Anybody have an idea on this? the source code is owned by the company, but all the ideas,algorithms, techniques have been developed from scratch using a bunch of AI and statistical techniques. Any comments appreciated
Sun 01 Feb | Tom H | Most employers rightfully expect to review anything job related that you publish, mostly just to ensure it doesn't contain anything proprietary or unflattering. Try selling the idea of a paper to your manager; it should be good publicity for the company.
Sun 01 Feb | no name | You are right that your work is probably worthy of a paper. A lot of serious software development is similar to academic work. However it would be commercial suicide for companies in competitive markets to disclose the details of their work. If you want to write papers, you need to get a job in a university.
Sun 01 Feb | Philo | Is the ability of the algorithms something by which your company directly earns money? If so, give it up now. Think of the reaction if the head chemist at Coca-Cola wanted to publish a paper on 'a new taste developed by combining simple household ingredients' [grin] However, if the algorithms are tangential or even orthogonal to how the company earns profits (for example, their HR system or an accounting system) then there may be room to negotiate a paper. Best of luck, Philo
Sun 01 Feb | Confused | No it's not a way that they earn money currently, but they might incorporate it with their revenue model
Sun 01 Feb | C Rose | You are probably correct that your work is worth of publication. However, you need to be aware that most employment contracts state that intellectual property that an employee generates belongs to the company (even if it is developed in their own time). This is even the case in academia (in the UK, if not elsewhere). It sucks, but that's what happens. It you give away company secrets, you may not only get fired, but possibly sued, too. In the US, I believe that it is possible to patent ideas such as yours (check with an IP lawyer!). After getting a patent, you could then publish the paper, and would be protected under patent law. This has several benefits: 1. You get a publication! 2. You get a patent! 3. Your company possibly gets to license the technology to other companies. 3. Your company gets to claim it has state-of-the-art technology. 4. Your company may get interest from companies and universities. 5. Your company may get to collaborate with a university. While I don't advocate patents on mathematical ideas (since that allows patent holders to prevent others from using mathematics, which is a very bad idea), in your situation, this may be to your benefit. If you enjoy this kind of thing, have you though about doing a PhD?
Sun 01 Feb | Caliban Tiresias Darklock | > In the US, I believe that it is possible > to patent ideas such as yours It is worth noting that patents are considered intellectual property, so any patentable idea would more than likely belong to the company.
Sun 01 Feb | Warren Henning | Maybe you could talk this over with a professor at a local university who works on database stuff?
Sun 01 Feb | Koz | If your boss wants to patent the ideas / algorithms he'll need to disclose most of the valuable IP anyways. After that's happened, the incremental effect of a paper is minimal. I'd convince the boss to patent the algorithms, then once he's done, sell him on the 'prestige' of getting the company's work published.
How common are sniffers, anyway? | Sun 01 Feb | Philo
Every security protocol will explicitly forbid sending authentication data in the clear. SSL, SFTP, SSH - all manner of methods are established to protect data streams. But Im curious - how often does this happen? How many documented cases of cracking via sniffing over the internet are there? Im not saying its not a risk, and Id never advise anything but secure protocols; Im just wondering. Philo
Sun 01 Feb | veal | How common are sniffers? Pretty common in shopping malls and, I'd wager, grade schools. Parents really nead to teach their kids earlier how to blow their noses.
Sun 01 Feb | veal | Seriously though... sniffers are pretty damn common here in the US. The federal government has them installed at all the major ISPs and on the major backbones. In fact, some poor analyst somewhere is probably evaluating this post right now, after some baysian filter flagged it as suspicious. Hi, whoever you are. Keep up the good work. :-)
Sun 01 Feb | Joe Blandy | 'In fact, some poor analyst somewhere is probably evaluating this post right now, after some baysian filter flagged it as suspicious.' At least the tinfoil hat keeps him from reading your thoughts though, right. ;)
Sun 01 Feb | Matt Conrad | The recent Debian compromise started with a sniffed password.
Sun 01 Feb | Mike Swieton | A server at the same colo facility as my company's was compromised, and a sniffer was installed there. The hosting company is no longer in business.
Sun 01 Feb | anon | One can mitigate the effects of network sniffers with the use of decent switching technology, e.g. If you make each port its own VLAN. That doesn't make it impossible for the sniffer to operate, something similar to 'overflow the switch' to revert it to default 'hub' operation or arp cache poisoning will (possibly) circumvent this, but it makes it a bit harder.
Sun 01 Feb | hoser | I sniff and log the wire all the time at home. Keeping an eye on who is surfing what and when. I can watch the IM chat in real-time if I like. At work, we sniff the wire as a matter of routine - we do networked hardware products and often analyze the round trip response time of packets as we attempt to understand performance issues. A 'sniffer' is nothing more than ethereal, an ethernet hub and physical access to the last router or switch.
Sun 01 Feb | Philo | Hoser - I know that, but it's the 'physical access' part that makes me think that's why it's not that common; not that people aren't bothering, but that they simply can't get to where they need to be to do it. Philo
Sun 01 Feb | veal | Ahh... secure by lucky happenstance.
Sun 01 Feb | Wayne | If all you have is a switch, then the only traffic you should be able to sniff will be your own and broadcasts right? Is there a way to get around this? I'm asking because I was using ethereal in my office and I couldn't see anything but that.
Sun 01 Feb | anon | Yes, at least that's the theory. If someone manages to hijack your router/end point and gets it to log all packets (no doubt some routers do this for diagnostic purposes, I really don't know, though) then it's game over man, f'ing game over !! [leading space added for extra effect ;-)] In theory you can poison the arp caches of other hosts on the switch, i.e. tell them to associate the IP address of the router with your Ethernet MAC address (this assumes an Ethernet) and log packets on their way through, before forwarding them on to the real router. This is basically a man-in-the-middle attack and a similar effect could be achieved one level up the protocol stack (in the OSI model) by using an ICMP redirect. In that case, you'd only get IP traffic, though. At a very (and I do mean very) basic level, a switch is just a hub with a lookup table mapping port number -> IP address. It is, in theory, possible to overflow the lookup table and make the switch revert to a hub-like operation. There's probably some info about this in some issue of phrack, though I imagine it depends very much on the switch manufacturer. More advanced switches allow the administrator to dedicate a port or a group of ports to be a VLAN. As an aside, there are some interesting ways to detect sniffers on the network. Try and ping an IP address that doesn't exist on the network and if a sniffer is running it will probably send out an ARP request for the Ethernet address. This is more a side-effect of the Ethernet card being in promiscuous mode than a software sniffer running. I believe the l0pht wrote a utility to detect sniffers that used the round trip time of ping under heavy network load, the idea being that if a machine is logging loads of packets it would take it longer to respond, I think.
Sun 01 Feb | Ori Berger | Many switches can designate one (or more) of their ports as 'span ports', which get _every_ packet that arrives at the switches (except when their buffer overflows, etc. ). If your switch doesn't have a span port, you can try to force it into hub mode by arp poisining and similar techniques, or connect an ethernet 'tap', which is a passive device that goes in the middle of an ethernet cable, and connects to two ethernet ports, through which you can sniff the ingoing and outgoing communication respectively. Sniffers are common; Keyboard loggers are _much_ more common, and -- from a hacker's point of view -- much more useful. Who cares about encryption when you can tap into the data before it's encrypted?
Sun 01 Feb | www.marktaw.com | It depends on who you're concerned with sniffing your conversations. The government probably (echelon/carnivore anyone?), AOL probably, your corporate firewall probably, your wife, maybe. Hackers? I dunno. Why, afraid Bill Gates is reading your lovey-dovey AOL messages? And what are you doing on AIM anyway, you should be on MSN messenger!
Sun 01 Feb | Philo | No, it's just that at various points in time, due to various lapses, I've had SMTP servers hijacked and FTP servers tagged. In both cases it's happened when I allowed relaying or anonymous FTP 'just for a little while' - I think it generally takes hours. But due to client requirements, I've sent usernames/ passwords in cleartext for years and never been hacked. That doesn't make it good practice or advisable, but knowing that you generally need either physical access to a switch or malignant code on the machine, it makes me wonder how often cleartext passwords are actually grabbed. And now that I think of it, I've been 'reprimanded' several times for using standard FTP, but nobody ever says a word about allowing anonymous FTP access... Philo
Sun 01 Feb | Voice of rationality | I've always personally thought the anxiety over sniffing was a silly one, but am gradually giving it more credence. I'm still highly skeptical of anyone who tells me that I'm at risk from my home DSL or dial-up connection. Is someone really going to install a sniffer at my ISP? Well, the FBI, sure. (google on Carnivore). But I doubt anyone else. And my online banking service told me there's never (i.e. NEVER) been a case of someone using sniffed credit credit for a false transaction. They're probably telling the truth. But what has me now worried are the following trends. (1) Corporations monitoring Internet access by their employees (one of my clients, for example) (2) People who sit in Internet cafes and grab wireless packets. (a guess, but a likely one) and (3) There's documented cases of people installing keyboard loggers at public internet sites like Kinkos. (c.f. http://www.theregister.co.uk/content/55/31832.html ) So, it's worth being careful. Especially on a public internet terminal or over a wireless link.
Exception handling: where to put initialization | Sun 01 Feb | Me
Easy in C++: RAII pattern, right? In C# or Java we have two alternatives: ItemContext ctx = null; try { ctx = ItemContext.Open (@\machine\Legal Documents); [...] } finally { if (ctx != null) ctx.Dispose(); } ..or.. ItemContext ctx = ItemContext.Open (@\machine\Legal Documents); try { [...] } finally { ctx.Dispose(); } Which one do you prefer? Why?
Sun 01 Feb | Gwyn | I must be missing something because I'd obviously prefer the first because it actually catches the error! With the second you're potentially going to end up with an unhandled exception (unless you're proposing the method that called this one will have a try..catch block in it. I'd still go for the first and catch the error at the most specific level where I can probably give some more meaningful diagnostics.
Sun 01 Feb | Joe | With the second you're potentially going to end up with an unhandled exception (unless you're proposing the method that called this one will have a try..catch block in it. ??? neither version catches the error, presumably the intention is that it's caught further up the call stack. I'd have a slight preference for the second variant, but better than either is the using statement: using (ctx = ItemContext.Open (@'\machine\Legal Documents') { [...] }
Sun 01 Feb | somebody | I concur with Joe.  'using' is the way to go.
Sun 01 Feb | Gwyn | Sorry! See I knew I must have missed something! Glossed over the absence of the Catch statement! Rereading it I can't really find a preference. The second approach (or its using variant) looks attractive but surely it depends... it must depend on the number of different objects I create within that method, espeically if they have different lifetimes within the method, e.g. Create A Create B Dispose A Create C Dispose B Dispose C In this case you're really have to go for the first option and in your finally block do a possible free of all 3. Of course the way I manage my objects could be non-standard (I am my own mentor and guide on these sorts of things!) and perhaps it is more normal to wait until the end before disposing: Create A Create B Create C Dispose A,B,C In fact, I really should go and look up a bit more detail about disposing in .Net as I'm still a bit ignorant about all the implications.
Sun 01 Feb | veal | I consider the second to be absolutely the proper Java idiom for ensuring release of a resource. Obviously, neither is outright wrong. The first example contains pointless activity and clutter, and is therefore inferior. However, the first one has one minor 'advantage' in that nested allocations of resources can be cleaned up, albeit somewhat carelessly, in a single finally. I see that done all the time, and I don't usually give the programmer any grief over it. With JDBC, you often must nest releases three deep. (Connection, Statement, ResultSet.) Doing all these close calls in a single finally, using the null check of example 1, tends to work, as none of the JDBC close methods seem to ever throw exceptions in practice. (It's still not truly correct though, and is can be burned by an unusual but properly behaving driver.) I've found that average Java programmers get really unconmfortable around the nested finally for some reason. In fact, merely having try without a catch seems to often baffle them. Still, I'd rather the second example by far. If you make an exception to the typical Java coding-style rules to plop the release all on a line, it also reads quite clean once you're familiar with it. Connection connection = dataSource.getConnection(); try { Statement statement = connection.... try { // do work } finally { statement.close(); } } finally { connection.close(); }
windows Update not working? | Sun 01 Feb |
Is windows update not working for anyone else at the moment.  It just locks up IE when I go to the page.  Also cant register my WinXP.
Sun 01 Feb | Brad Wilson | Just used it to update one of my W2K3 VPCs. Worked fine. You know, if you're using the well know cracked key for Windows XP, you're locked out of Windows Update as well as service packs. Hope that's not the case. ;)
Sun 01 Feb | no name | I'm using the Windows XP that I recieved with my MSDN subscription.  Maybe I should try reinstalling it.
Sun 01 Feb | Tim Lara | >>Maybe I should try reinstalling it.<< That's the only thing that fixed it for me. (Doing the 'upgrade' over the existing install.) Check out: http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=99021
Sun 01 Feb | no name | Thanks for the link Tim, I'll try the upgrade thing.
Throwing the Baby Along with the Water | Sun 01 Feb | Shlomi Fish
There was an IIS bug some time ago, in which IIS could accept paths with ../../../ etc. leading to other documents in the hard-disk. (e.g: http://myhost.com/../../../windows/system.ini) Microsoft fixed this bug by saying that it wont allow a path component which starts with a dot in it URLs. Thus, I cannot serve http://myhost.com/~shlomi/.vimrc - I have to rename it. Now, Microsoft is ruling that Internet Explorer will not accept a username on the URL, because it had some security vulnerabilities in handling it. These fixes do not remedy the bug or increase the code quality. And they harm the users due to the developers incompetence. Its like throwing the baby along with the water.
Sun 01 Feb | Row | Microsoft also produces extremely high quality software. Yes, it has some problems, but all software has some problems. We must look at the global picture, not at small features.
Sun 01 Feb | Simon Lucy | Well you could also consider that .xxxx files are also generally hidden on *nix and that they shouldn't be expressly displayed by default.
Sun 01 Feb | Lou | You should probably serve that file as vimrc.txt, or serve it as a gzipped file with the .vimrc file inside of it.  Your server probably defaults the mime type to text for the .vimrc file, but these solutions make sure it gets served the way you want it (as text) and retains enough of the name to make it identifiable and useful as well as servable from an Apache host if you ever decide to move your server.
Sun 01 Feb | Shlomi Fish | Simon Lucy: yes, but if I do 'less $HOME/.bashrc' I see the contents of .bashrc. Similarly, I expect that if a web server has a file lilke that I can do a 'wget http://myhost.com/~shlomif/.bashrc', I'll retrieve the file, whether I may or may not see it in http://myhost.com/~shlomif/. In IIS however, I cannot do that, and it sucks, because I may want to. I know it causes problems with potentially serving Subversion repositories with such files over IIS. Lou: why should I bother renaming the file? I'm not looking for workarounds, I'm looking for fixes that fix the bugs and not avoid the problem, and make life worse for the users. Imagine telling a webmaster which has thousands of accounts on his machine, telling all the people there to rename their files. If you have a problem fix it, but don't disable otherwise legitimate functionality.
Sun 01 Feb | son of parnas | Row, the problem is that bugs are a good indicator of other bugs and poor design and implementation. Work arounds do work around the bugs you don't know about. Given the stream of bugs poor quality must be the case. They need to fix it in the code for anyone to feel secure. Work arounds should make you feel less secure.
Sun 01 Feb | son of parnas | Should read Work arounds do NOT work around bugs...
Sun 01 Feb | Dennis Forbes | 'Microsoft 'fixed' this bug by saying that it won't allow a path component which starts with a dot in it URLs. ' While I've never had the need, a quick test (IIS 5.1 fully patched) just confirmed that IIS has no such limitations -- it'll happily serve up . prefaced files successfully. Do you have IIS Lockdown with URLScan installed? If so, URLScan is rule driven -- if you think that that rule is unnecessary then change the rules to allow it.
Sun 01 Feb | old fart | ln -s /home/shlomif/.vimrc /home/shlomif/vimrc.txt
Sun 01 Feb | Tony Chang | Ah shit. I am going to have to change every single page on all my web sites. I used HREF="../../index.html" type links everywhere in my documentation webs to refer back to parent pages so that my pages work as well on a local folder as they do in a hosted browser.
Sun 01 Feb | Tony Chang | I agree with Shlomi that this is not a fix for the stated bug - it is a horid and poorly thought out hack by the code monkeys at MS. .. links don't go above the web directory on any web server I've ever used - I guess IIS is some freaky exception. The way to fix it was to fix it (a single line of code I imagine), not to break 20% of the web.
Sun 01 Feb | Jorel on Software | It's don't throw out the baby with the bath water.
Sun 01 Feb | Tony Chang | 'Microsoft also produces extremely high quality software.' How do you define quality Row?
Sun 01 Feb | Tony Chang | 'Given the stream of bugs poor quality must be the case. They need to fix it in the code for anyone to feel secure. Work arounds should make you feel less secure.' son of parnas, this is a fantastically lucid statement. Couldn't have said it better myself.
Sun 01 Feb | sgf | 'Microsoft also produces extremely high quality software.' Great news. Must have missed those titles. Tell me what they are and I'll switch to using them. :)
Sun 01 Feb | Caliban Tiresias Darklock | Shlomi, relax. You are not going to have any problem with user directories or dot-files. IE is removing support for RFC-1738 'user:pw@' syntax, which is a monumentally stupid idea anyway. The people using this for legitimate purposes ought to know better, and are probably NOT using IE or IIS. Nothing is going to break. http://support.microsoft.com/?id=834489 Furthermore, the use of '..' in path names through ASP code may be disabled on IIS 5 and earlier, and is disabled by default in IIS 6. You can still turn it back on, and it only affects ASP code anyway. http://support.microsoft.com/?id=332117 Any announcement that 'Microsoft is about to make all of our web sites stop functioning' should generally be rephrased as 'Microsoft is going to make everyone stop using their web browser' which is such an incredibly absurd concept that you will intuitively give it precisely the attention and credit it deserves.
Sun 01 Feb | i like i | Damn, plain-text authentication is perfectly acceptable for many situations, e.g. forums.  I have appropriate bookmarks set to username:password@forum.whatever.com to keep things simple for me.  The idea of having to periodically type it in again is annoying.
Sun 01 Feb | veal | I'm rather embarassed to post, when I sense that I missed a joke. But... I really hope, Row, you were being ironic and we just missed the joke, because that response is ridiculous. (Just on the off chance that you weren't being ironic... exactly which big picture could possibly justify such a shameful workaround?) Shlomi, if you didn't have reason already, that sounds like reason enough to dump IIS. There are plenty of much better web servers, even on Windows.
Sun 01 Feb | Brad Wilson | 'Damn, plain-text authentication is perfectly acceptable for many situations, e.g. forums. I have appropriate bookmarks set to username:password@forum.whatever.com to keep things simple for me. The idea of having to periodically type it in again is annoying.' Considering Windows will remember these passwords for you, why don't you just let the browser do the work instead of contriving the URL? It's not like it's that big a deal to hit enter when prompted with the already-filled-in user and password information... ;)
Sun 01 Feb | Zahid | Because then the browser will periodically transmit my password information to Microsoft, allowing Bill Gates to surf my favorite porn sites while spoofing as me.
Sun 01 Feb | H. Lally Singh | Zahid: that's it, he's crossed the line!  DOWN WITH GATES!!!
ASP.NET better than asp? | Sun 01 Feb | redguard
Now we are developing an asp.net project. I already developed some old asp project. Now I just doubt why asp.net is better than asp in soft engineering view? We just follow the microsoft s team guide to configure our project. Now we met a few problems. 1. .net consumes too much memory (800M) when .net, iis is running on my pc (no database server) 2. It took 8 minutes to build the project (30-40 pages, no complicated dependent relations) 3. .NETs smart sourcesafe addin is too hard to understand, operate and easy to corrupt. 4. I can not edit code when debugging mode 5. Its smart configuration file almost kill us. 6. seems not easy to debug client script. Yes, I do like some language syntax, data structure improvement in vb.net (we use vb to develop asp.net). but .nets ide is too friendly. In old days, we use simple editor+microsoft script debugger. simple, free and easy to use. redguard http://www.d2ksoft.com
Sun 01 Feb | Matthew Lock | I hear you. ASP.NET has certainly more features and power than ASP classic, but it is much harder to understand and as a consequence I think most non-professional time coders such as a graphic designers and people looking to add a little functionality to their sites will be migrating to PHP rather than ASP.NET. I can't help feeling that abandoning the simple and straightforward ASP classic will be a terrible strategic move for Microsoft. I like ASP.NET but it lacks what Larry Wall calls 'whipupitude.'. The ability to whip things up in a few minutes.
Sun 01 Feb | Matthew Lock | Actually this guys states it better than me: http://groups.google.com.au/groups?hl=en&lr=&ie=UTF-8&oe=utf-8&safe=off&selm=3E559B0D.100CE4C1%40hal-pc.org&rnum=6
Sun 01 Feb | NNL | I'm not quite sure that PHP will stay that simple. Look what PHP developers are preparing for the next version (5.0): http://www.php.net/zend-engine-2.php Somehow it looks like ASP.NET or JSP/Java: Object-orientation everywhere! It's the price for being more powerful and being able to develop bigger and more complicated systems. And it's good - PHP developers are doing the right thing. Otherwise, PHP would have a reputation of being just an entry solution for simple web applications. Anyway, with smart spplication architecture (ie. with XML/XSLT) you can still make it easy for a designer to make her designs while not be forced to learn abstract classes and methods or copy constructors (both PHP 5.0 features). And, regarding that usenet thread: There's something that Microsoft and Sun haven't told to all the people who aren't software developers. YOU NEED TO KNOW OO TO USE OUR PLATFORM. Since ASP.NET release I'm reading similar posting: My ASP.NET application falls apart! Why is that? Well, a closer look reveals the lack of good OO design and good architecture. The principles of script programming don't apply anymore and, to be honest, I'm happy with that because I hated every day I needed to spend with those ASP include files. A problem I mitigated with WSC's (Window Scripting Components - basically scripting components with COM interface). PS - PHP syntax looks more and more like C++ (with all those __FILE__ where different number of underscores means something else) which is a bad thing. Even for Java/C# programmers :)))
Sun 01 Feb | Brad Wilson | Something is wrong. We have an ASP-model business. Our application runs on ASP.NET. An entire application, not just a web site. When IIS is running, it takes perhaps 25M of RAM for our application. Compiling the hundreds of thousands of lines of code takes no more than 30 seconds on ridiculously slow hardware, and on our typical development machines, only about 7-8 seconds for a full rebuild, and about 1 second for an incremental build. Allow me to repeat: something is wrong.
Sun 01 Feb | Matthew Lock | >> YOU NEED TO KNOW OO TO USE OUR PLATFORM. Since >> ASP.NET release I'm reading similar posting: My ASP.NET >> application falls apart! Why is that? Well, a closer look >> reveals the lack of good OO design and good architecture. I'm not going to deny that OO is a great tool for abstraction in the right hands but why does a graphic designer for example. need to understand OO just to whack together an guestbook, or email form? They don't, yet ASP.NET will now force them to understand it. Hence the migration I can see to languages that don't make OO compulsary, such as PHP, perl, Python etc.
Sun 01 Feb | NNL | A graphic designer who wants to put a page counter or a guestbook together can still do it in good ol' ASP. It's there, delivered with every IIS installation just like everyone can use simple PHP features for simple tasks and scale to the more complicated ones. One must know the difference between a simple screwdriver and a screwgun machine (ie. http://www.hilti.com/holcom/modules/prcat/prca_navigation.jsp?OID=-10079) and use them accordingly.
Sun 01 Feb | Matt Conrad | I agree with the other guy that your performance problems don't sound typical. We don't see anything like that here. I love ASP.NET. I can write complicated stuff SO much quicker than I could with ASP, and it's much nicer looking code when I'm done. It's an abstraction layer, and comments about leaking surely apply here. Some things, like the ASP.NET validators, just don't work the way I think they oughta. But working around those oddments is a trivial cost compared to the overall benefits. MS did a brilliant job of abstracting the web development process. I really hope the Mono guys can get their version polished up and ready for the real world. If I had spent a couple years doing serious ASP development, and had a nice little toolkit built up that I was very happy with, I'd probably keep using that most of the time. I'm not religious about it or anything. But I didn't, and so ASP.NET is a godsend. I would look into your performance problems as something to be troubleshot, not part of the normal price tag for ASP.NET. Sorry I don't have any more specific advice.
Sun 01 Feb | Greg Hurlman | Is it possible that your first foray into ASP.Net programming yielded some sort of memory leak? I have never seen an ASP.Net app take up 800MB of memory unless working under large stress or with very large files/objects. Perhaps this leak is contributing to the horribly slow build times you are experiencing. Other points: - The VSS 'smart' add-in you're talking about is terribly slow and prone to corruption because, well, it's VSS. I have high hopes for VSS 2004, but I'm not holding my breath. - If you prefer debugging ASP.Classic over ASP.Net, you've been living in scriptland entirely too long. Coming from a compiled software dev background, I personally think it's a godsend. - The 'smart' configuration file? Are you talking about the web.config/machine.config/app.config files? What about them is all that difficult? - If you're attached to the process running on the server, yes, it will be impossible to debug the client script. If you want free, try the ASP.Net Web Matrix (http://www.asp.net/webmatrix/default.aspx?tabIndex=4&tabId=46). If you want easy, perhaps you should stick with what you know.
Sun 01 Feb | Mark Hoffman | '1. .net consumes too much memory (800M) when .net, iis is running on my pc (no database server)' This is atypical. Most likely, something has been misconfigured on your end. I'm responsible for dozens of servers running ASP.NET and I've not seen this happen. '2. It took 8 minutes to build the project (30-40 pages, no complicated dependent relations)' Once again, something is wrong here. This isn't normal ASP.NET behavior. '3. .NET's 'smart' sourcesafe addin is too hard to understand, operate and easy to corrupt.' Hard to understand? You right click a source item and select check in or check out. I've not used in any other source control system with VS.NET, so maybe there is one that is easier, but VSS seems pretty straightforward. As far as the corruption goes..I hear ya on that. This is why it's sometimes known as SortaSafe. '4. I can not edit code when debugging mode' This is the nature of the beast. It's compiled, not interpreted like ASP. I've heard that Whidbey will offer this somehow, but I'm not certain about that.
Sun 01 Feb | Philo | 'why does a graphic designer for example. need to understand OO just to whack together an guestbook, or email form' They don't, and ASP.Net doesn't make them. In fact, you've pointed out one of the huge reasons ASP.Net is better than ASP - far better separation of business logic from presentation design. I worked for two years with a UI guy - he did all the forms layout, I did the coding behind the scenes. We worked very well together in ASP.Net. As for 'whipitupitude' - I suspect the issue with ASP.Net here is simply getting used to the new paradigm. I just 'whipped up' a pretty nice looking datagrid based on a fairly complex query in five minutes, all from within VS.Net: Use the Server Explorer to browse to your database, drag a table, view, or stored procedure to a blank ASP.Net form, create a dataset, set a few properties, write two lines of code, run. Philo
Sun 01 Feb | Matthew Lock | Philo, out of interest how long does MS plan to keep shipping ASP classic with IIS?
Amnesty human rights blasts Microsoft (Wrongly?) | Sun 01 Feb | karthik
http://observer.guardian.co.uk/business/story/0,6903,1136045,00.html I dont think they are right. I mean what kind of software would that be?. From what i remember, the Saudi Government also blocks sites that are against their religion. Is this a software or is this a simple setting at the main server end? Can someone elaborate?
Sun 01 Feb | Lou | Agreed, Amnetsy International is wrong on this one.  Should Microsoft allow companies to prevent access to site with explicit content but prevent the prevention of access to sites with "democracy"?  And how would they go about defining the words a user couldn't define?  Seems like a case of wanting to point the finger of blame so badly one fails to think of how the accused could have prevented the crime.
Sun 01 Feb | sgf | How much of the "Microsoft" software running in China is even legitimate, anyway? Much as I dislike M$, can't blame them for how their software is used, especially if it has been pirated.
Sun 01 Feb | Mark Hoffman | Oh good grief. ''[Microsoft] should be more concerned about human rights abuses and should be using its influence to lift restrictions on freedom of expression and get people out of prison. ' Um..no..They should be fixing their bugs in their code. We'd be happy with that. Let the knuckleheads at the UN use their influence to 'lift restrictions on freedom....' 'Amnesty believes Microsoft is in violation of a new United Nations Human Rights code for multinationals which says businesses should 'seek to ensure that the goods and services they provide will not be used to abuse human rights'. ' Another great piece of wonderment to come out of the UN. That sounds all nice, warm and fluffy on paper and makes it's creators feel better about themselves, but how in the hell do they plan on having companies do this? Are companies supposed to have entire regulatory divisions like the government to enforce proper use of the equipment they sell?
Sun 01 Feb | Andrew Cherry | Although, on the other hand, witness the recent controversy about Photoshop CS, where you can't open or work on any image containing a scan or picture of an official banknote (US dollars, Euros, etc.) It does seem that some companies ARE trying to enforce laws with their software... The line between this, DRM, and stopping China blocking sites on democracy, is quite blurry I would think...
Mike Rowe Soft The Final Chapter (Redux) | Sat 31 Jan | www.marktaw.com
http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=3382073018&category=2312 His book of legal documents is up to $100,000 on ebay & still has 5 days left.
Sat 31 Jan | no name | That can't be right, can it?
Sat 31 Jan | Dennis Atkins | One check in the hand is worth an infinite number of bids over $10,000 on ebay.
Sat 31 Jan | Schlemeil | A bid of $100,000 is not the same as actually collecting $100,000. I suspect that Mike is in for a bit of disappointment.
Sat 31 Jan | Belmont Park Born | I used to live in that part of town. Getting $100k US (and climbing) will be like winning the lotto. That's not to say ... Good on 'im. That is if he gets it.
Sat 31 Jan | T.J. | Well, with 251,000+ viewed on that site... might as well find a sucker big enough...
Sat 31 Jan | Mark Hoffman | It's interesting that the person who just bit over $100K most recent purchase on eBay was for a $40 GeForce 3 video card...
Sun 01 Feb | Dennis Forbes | He knew that if no other joker didn't outbid him, he could just make himself a new account and outbid himself. There is so little real accountability of Ebay bids that it amazes me that these sorts of auctions (like the town in California, or Eminem's childhood home, etc) get any interest at all -- It's bogus people. There is no real onus on a bidder to pay squat.
Sun 01 Feb | T. Norman | He may not be able to collect from the high bidder, but once that fails he can go to the second-highest bidder, and on down the line.  There is a good chance he will be able to collect at least the $10K he originally wanted from Microsoft.
Sun 01 Feb | Andy | I can just imagine the person who wins it poring over the legal documents. What fun. Some people have way too much money on their hands.
Sun 01 Feb | Simon Lucy | If you place a bid of over $15k then you have to have some form of id and value, like a credit card. For a high profile auction like this it wouldn't be too hard to evaluate whether someone has the money to back it up. I notice that its up to 117k now.
Sun 01 Feb | no name | >> 'Sorry, I will not be accepting bidders with 0 feedback. If you have 0 feedback and are serious, please contact me via the contact seller link at the top of this auction so that I may verify your intentions.' ROFL. What a naive piece of shit that Mike Rowe. Hey Mike! You have no feedback either dumbass.
Sun 01 Feb | www.marktaw.com | > Hey Mike! You have no feedback either dumbass. Have you seen his new advertising company? Visit MikeRoweSoft.com and check out the blurb on the page.
Sun 01 Feb | no name | Pfft... I bet that site lasts like 6 months.  One freak experience doesn't account for much...
Sun 01 Feb | GuyIncognito | 'I have joined together with students from Princeton University and the University of Pennsylvania 's top ranked Wharton School of Business to form a freelance marketing agency. I've seen first hand the power of technology and the media to bring any business the attention its owners desire. My partners and I have become experts in utilizing these tools to develop and deliver truly original concepts at the lowest possible cost. ' I'll be looking for your Superbowl commercial tonight... :)
Sun 01 Feb | www.marktaw.com | You know they're just going to tell you to register a controversial domain name.
Sun 01 Feb | MR | There is no way his 'ordeal' justifies a $200K+ reward. Does anyone think he naively thought that Microsoft wouldn’t come after him? $10 says that he started this purposely to cause all this commotion. But, I’m just jealous I don’t have a get-rich-quick scheme like this, too. :(
Sun 01 Feb | a cynic writes... | Just as I thought this whole thing couldn't get any sillier, other people are getting in on the act. There is, would you believe, an official Microsoft parking ticket being auctioned. This is going for 16c at the moment. Meanwhile you know who's letter and WIPO book is up at $200k. I suspect someone's pulling his leg. It's all got deeply, deeply silly.
Single Server Security in Colocation | Sat 31 Jan | anon b/c i am admitting i have a security hole.
Let me preface this question with the admission that I am being cheap. I have a single server that I am about to deploy in a collocation facility. I am trying to avoid paying for their PIX firewall, (@$75.00 a month.) Is there a software firewall that is robust enough that can sit on the same server as the Web/SQL/Application server that it would need to protect. I have changed all the default ports, but that alone isn’t enough. I’ll pay the $75, if there is not another viable alternative, but welcome any suggestions.
Sat 31 Jan | Wayne Earl | ipchains/iptables under Linux. ipf under *BSD. Dunno about Windows. Perhaps ZoneAlarm? You didn't specify the platform. Actually (this might seem a bit harsh, but that is not my intention - just a statment based on my experience), your biggest security hole is your apparant lack of security knowledge, not necessarily your lack of a firewall.
Sat 31 Jan | anon b/c i am admitting i have a security hole. | Is a windows box.  I can lock down the box pretty easily with a pix, my weakness is not knowledge, but cash, or the desire to preserve what revenue I am generating.
Sat 31 Jan | Joel Spolsky (Fog Creek Software) | Windows 2000 servers have something called Routing and Remote Access. If you turn it on you can set up input filters which are basically like a packet filter, not quite a firewall.
Sat 31 Jan | christopher baus (www.baus.net) | ipcop.org
Sat 31 Jan | Thought du jour. | So again.  Windows costs more, not less.
Sat 31 Jan | suggestion | Why don't you pay somebody a one-time fee to harden your box for you, or show you how?
Sat 31 Jan | Brad Wilson | On Windows 2000 and later, if you know what you're doing, you can use IPsec to lock things down. That's what we've done (as part of defense in depth that includes an actual hardware firewall, by the way), and it works splendidly.
Sun 01 Feb | Li-fan Chen | This is just my observation, but if a cohost isn't particular about having you bring in a few mini routers to a dual server operation (I know, your question is about a single server operation), you might consider bringing in a mini-firewall too. They go for around the USD$500 price point coming from professional firewall companies and USD$20 from LinkSys and are just a little bit bigger than those mini 5 port routers. I am sure there is a difference in throughput and quality somewhere worth observing but for now that's for you to research.
Sun 01 Feb | Li-fan Chen | Brad, I know you qualified your IPSec recommendation with mentioning that it's behind a hardware firewall. I just want to point out that IPSec do little or nothing for regular services fronting on the NIC card for public services like port 80 and friends. What comes with Windows 2000 is stateless TCP/UDP port blocking if I remember correctly, and they may or may not kick into operation early enough (before services are bound) in the boot up sequency (someone correct me if I am wrong on this). IPSec WILL do wonders for remote authorized personnels running LTP+IPSec who needs secure tunneling to all authorized services. With or without IPSec, a real firewall of some sort is still critical.
Sun 01 Feb | Li-fan Chen |

You'll have to know what you are getting into paying for the $75 security tax. Is the PIX firewall shared or dedicated to protecting your NIC card?

Will they put in the time to upgrade all firewalls with patches? Maybe $75 is a great deal if you are too lazy to patch your firewalls? Do you prefer to read hours of documentations to understand a new exploit that's flooding your server RIGHT NOW or call them up knowing they are familiar with adding that one IOS command that will just plug it?

Not often asked: A dedicated firewall? The custom ASICs/fabrics firewalls depend on have thru-put limits, figure out if they promise to out do what you can pump out via web protocols or receive via mail protocols (and secured ftp and ipsec). Did they get enough firewall oomph to do anything for your busy servers?

Sun 01 Feb | Brad Wilson | 'I just want to point out that IPSec do little or nothing for regular services fronting on the NIC card for public services like port 80 and friends.' Sorry, that's not true. IPsec is layers below any service, an integrated part of the IP stack.
Sun 01 Feb | fw | A firewall? Fair enough. Windows already has port filtering built in if that's what you want. But no firewall is going to protect you if you're using IIS for example with 100000 holes in it. Don't trust a firewall for security, it's a step, a feature, and not even a great one. I like to put out boxes which I have to secure, and no rely on some firewall. For example, make mssql listen on 127.0.0.1 only, and let your app connect to that. Make sure you stay up to date with anything that is open, get on announce lists for everything that is open. I've seen so many people piss away so much money on retarded things like firewalls, and still run a default out of the box IIS 4 webserver.
Sun 01 Feb |   | What type of performance hit, if any, is there on TCP/IP filtering? 
Sun 01 Feb | Gwyn | I recently set a Win2K3 box up as a colo. I didn't want to fork out for the extra either so I'm just using the basic port protection that comes with 2003. Plus of course simple things like setting a SQL Server SA password! I've only got the absolute minimum of ports open, but this includes VPN so that I can use Remote Admin over that. The server is not a life or death thing for me right now so I'm happy to see it get hacked. At least I can learn from that so that when I do put important stuff on it it'll be better protected. Anyone on this list who wants to can 'have a go' at it: 80.82.141.141. But please leave a calling card rather than trashing it!
Sun 01 Feb |   | Nice, Bring it on Mentality.  Security is just insurance, you get what you pay for and common sense goes a long way.
Sun 01 Feb | Rich | I've used SecurIIS (by eEye, I think) that only lets URLS with certain patterns make it through to the IIS server.  This limits buffer overflow attacks like Code Red.
External Hard Drive for backup | Sat 31 Jan | Prakash S
what do you guys usually do for backup? I am thinking of getting an External hard drive. Any recomendations or alternate solutions? thanks,
Sat 31 Jan | Philo | For a desktop? Or a laptop? If tape it out of your budget, my general recommendation would be to get a pair of large hard drives and a hot-swap enclosure. Put the drives in carriers, then switch them every night Philo
Sat 31 Jan | Eric Debois | I have my own server for this specific purpose.  I simply zip my work folders and upload them over FTP or the network depending on where I am.
Sat 31 Jan | Krish | Prakash, If I remember correctly, you have a Laptop. I use an external USB hard drive with OneTouch backup for my laptop. Whenever I want it (mostly once a week) I press the OneTouch button and back it up.
Sat 31 Jan | Prakash S | Philio: yeah, I have a laptop. Eric, do you do a backup of that server? Krish, Which one do you use, and how much did you pay for it? thanks guys.
Sun 01 Feb | Brad Wilson | +1 for the external Maxtor OneTouch drives. I love mine!
Sun 01 Feb | Cybersuraa | -1 for the Maxtor One touch 160 GB drive.  It crashed 3 months after I got it, and it cost a bundle to recover all the data off of it.
Sun 01 Feb | Immature programmer | I bought an ACOM Data USB 2.0 / FireWire HDD (80GB/5400RPM) a while back.  That + Norton Ghost 2003 has served all my backup needs well.
Sun 01 Feb | Eric Debois | >>Eric, do you do a backup of that server? Sort of. I occationally burn all the zips to a CD, but its more in the way of archiving than backing up so to speak. But since all the zips exist both on my laptop and the server, I figure its enough. Ive been thinking about putting in an extra HD in the server and either have a software raid or just put a script in there that copies the zips to the second drive, but I havent really felt the need to do that. (But then again, you only 'feel the need' for a stronger backup scheme when something has already gone wrong.)
Sun 01 Feb | Len Holgate (www.lenholgate.com) | I have 3 x 20gb Lacie firewire pocket drives. I have a script that does an xcopy backup of my data. At present I get around 2.5 complete backups per drive, uncompressed. I keep one of the drives on my desk for the next backup, one in my safe and one in a safe at my dad's office. I don't rotate them as often as I should which means the offsite one gets a bit out of date sometimes. Not the cheapest option, but it seems to work pretty well. Faster and easier to restore from than the tape drive I used to use. The machine I'm backing up from has multiple drives and the important stuff is stored in a CVS repository on one drive and worked on in a working area on another drive...
Sun 01 Feb | Andy Norman | I too take the network backup approach. There is a Win2k server here in my home office that I store all my data on. I also have a small Linux box here that handles my email and DNS services. I built a very cheap (under £350) and silent http://www.mini-itx.com/ box, installed Linux on it and installed it in the home office of an understanding friend (he doesn't have to be too understanding as the box really is silent when the disk is spun down). We both have DSL. I then use a rsync script running on my local Linux box at 4am each morning that mounts the Win2k box's data share via smb and syncs any changes to the remote server. I have another script that does things the other way so that my understanding friend has a samba share on the mini-itx box that he can use to back his data up. In theory you could do this between two Windows boxes, but I have found rsync on Windows to be too unreliable (it freezes during transfers). My original plan involved the Win2k box communicating directly with the remote Linux box using rsync, but that was unreliable which is why I do the somewhat less efficient thing of mounting the Win2k share on the local Linux box and syncing from that. I found tapes and CDs too unreliable (mainly that I couldn't be relied on to put the right media in at the right time). This way I know that all my data on my Win2k box is backedup remotely every day. The only flaws in my plan at the moment are: - I have to make sure I copy any data on my laptop to the Win2k server for backups (must get rsync running on the laptop or write some scripts to do it) - there are no historical backups (altough I do keep anything that gets deleted as the rsync scripts are set up not to mirror deletes) - I'm not backing up any open files (with my SQL server I backup the databases to files within the data share to get round this problem) I plan to add another mini-itx box at another friends house at some point (and again will backup their data onto my local server for them).
Sun 01 Feb | crusty admin | '+1 for the external Maxtor OneTouch drives. I love mine!' Nice and easy, but slow on USB. But if it's just for backups not a big deal. If you actually want to use files on it or move stuff back and forth regularily, the firewire Lacie D2 is MUCH nicer.
Sun 01 Feb | Brad Wilson | Mine is Firewire and USB 2.0. You are right that it's quite a bit slower on USB 2.0 (and hardly usable at all on USB 1.1), but it's as fast as an internal drive when used via Firewire.
Amazingly stupid, simple C++ question | Sat 31 Jan | No way. I feel like an idiot already.
I need to write a very, very simple program that writes out the computers name a text file and then copy this file out to a shared drive. Its been eons since Ive done C++, and Im struggling with strings. Here is a code snippet: char* temp = \r\n; outfile.write(temp,sizeof(temp)); Now..I know this wont work, because sizeof is gonna return 4, because it considers temp to be a pointer and does a sizeof on the pointer itself. So, how do I write a string like this to disk? How do I need to declare it so that I can use sizeof on it? Also...my code snippet to get the computer name (Were talking Windows here) is: char szBuffer[256]; DWORD dwNameSize=256; GetComputerName(szBuffer, &dwNameSize); this works, but the szBuffer will always be 256 bytes long. How do I trim this? Is there a better way to call this? Please..be gentle..I havent used C++ in years and I just need to finish this tiny app, then I promise I leave your language alone and go back to my C#!
Sat 31 Jan | mackinac | char temp[] = '\r\n'; outfile.write(temp,sizeof(temp) - 1); Or something like that.
Sat 31 Jan | Mike Swieton | Why not use a string class, such as the C++ standard one? For the file I/O, why not use the stream operators? Then you wouldn't need to know the length when you output it (it'll output to the null character, with c-strings, and it'll use the stored length in STL strings). Unless you are using some MS specific class? If GetComputerName takes a pointer to an already allocated char buffer, the docs should say how big that buffer is expected to be. And it looks like the length written to the buffer will be stored in dwNameSize (since you pass it as a pointer). At least, that'd be my guess, you should check the documentation. I don't know much about windows development, but on unix I'd accomplish your task with a shell script. I know windows has *some* scripting capabilities, so it may be simpler to use them. Hell, you could probably pull the computer name from an environment variable and use echo in a batch file to accomplish your task.
Sat 31 Jan | Dennis Atkins | Gawd macinac don't say if you don't know. First, that's not a minus you want there. Here's the C++ way: outfile << '\r\n'; and here's the C way: fprintf(outfile, '\r\n');
Sat 31 Jan | No way. I feel like an idiot already. | Thanks Dennis! That was much simpler and works great. I've still got some weirdness with the computer name and trailing characters, but I think I can Google that and figure it out. thanks again
Sat 31 Jan | Caliban Tiresias Darklock | > this works, but the szBuffer will always be 256 bytes > long. How do I trim this? Is there a better way to call > this? Yes. The size parameter is also an OUTPUT parameter. ----- char *szBuffer=NULL; DWORD dwNameSize=0; // Fails, because buffer too small GetComputerName(szBuffer,&dwNameSize); // Necessary buffer size is in dwNameSize szBuffer=new char[dwNameSize+1]; // ALWAYS CHECK NEW OBJECTS if(szBuffer!=NULL) { // Buffer is now big enough GetComputerName(szBuffer,&dwNameSize); // Some Win32 APIs don't null-terminate szBuffer[dwNameSize]='\0'; } ----- I can never keep track of which Win32 APIs do and don't null-terminate strings, so I always assume they don't.
Sat 31 Jan | No way. I feel like an idiot already. | Ok..one more simple question that has me confused. What is the best way to turn a number into a string? I've generated a random number using rand, and I want to use this as my filename. Do I use the ostringstream class? I see some stuff on Google, but I also see concerns about memory leaking. I just need to be able to take my usigned int, convert it to a string and add an .xml extension to it. This seems so simple, but I see about 43,213 ways of doing it.
Sat 31 Jan | Caliban Tiresias Darklock | char str[12]; srand(time(NULL)); int num=rand(); sprintf(str,'%d',num);
Sat 31 Jan | Caliban Tiresias Darklock | Oh yeah... your .xml extension. Sorry. That last line ought to be: sprintf(str,'%d.xml',num); There are more C++ ways to do it, of course, but I don't mess with those too much.
Sat 31 Jan | Mike Swieton | A few things: Don't use sprintf. Ever. Under any circumstances. This is because it is difficult to tell whether or not the buffer you give it will be big enough. If you must use an sprintf method, use snprintf, which can check the size. It's not a standard method, so you may have to go and find an implementation. Two: std::string is your friend. You won't leak memory with a stringstream and output to a std::string object. Don't fight C++ :) If you're using C++, at least consider doing it the C++ way. Basically everything C++ adds was meant to make it easier to develop good software in than C. Whether it acheived it or not is debatable, of course. Extremely debatable. As I recall: std::stringstream formatter; std::string output; formatter << someNum << '.xml'; formatter >> output;
Sat 31 Jan | Dennis Atkins | I like sprintf myself and find it is perfectly safe... when used appropriately. 'Never use'? I hope you are exaggerating... Me, I'd say , 'whenever' you use sprintf, make sure there is absolutely no possibilty of overflowing the input buffer. The * operator in the printf language is your friend.
Sat 31 Jan | Caliban Tiresias Darklock | But snprintf() truncates your string. So when your buffer is too small, you don't get an access violation -- you get the wrong filename. At least an access violation tells you that something is wrong.
Sat 31 Jan | Mister Fancypants | I agree with the other posts in this thread that you're better off using streams and the standard string class, but since I didn't see anyone mention it previously, what you were really looking for in the original post was strlen() rather than sizeof(). Assuming your char pointer string is null terminated, strlen will return the number of characters in it. If you want to be pedantic you can then multiply that number by sizeof(char) to get the size of the string data, but other than in very odd environments sizeof(char) will always be 1.
Sat 31 Jan | No way. I feel like an idiot already. | Thanks everyone for the helpful posts! I really appreciate it. If I had gone to the newsgroups with such a simple question, I would be have been yelled at with comments such as 'RTFM you newb!!' Thus ends my quick adventure with C++. I'm now retreating back to the land of C# where I actually feel like I know what I am doing. Thanks again.
Sat 31 Jan | Mike Swieton | Caliban: You only *might* get an access violation. You could just overwrite other variables in the stack, or if it's coming from user input, it could just smash the stack and run arbitrary code. Snprintf will usually tell you when it truncates, too. According to my linux manpage, the GNU libc up through 2.0.6 return -1 when the buffer was exceeded, and after 2.1 follows the C99 standard which specifies that it returns the length it would have written, had it not truncated, which can then be compared against the buffer size to see if a problem occured.
Sat 31 Jan | Caliban Tiresias Darklock | > According to my linux manpage But this is a Windows program. Besides, if you're not paying attention to your buffer sizes, you're certainly not checking your return values. Anyone smart enough to check the return from snprintf() is smart enough to add up the maximum buffer size they need for sprintf().
Sat 31 Jan | Andy | This is a little known (or under-known) distinction in C/C++. void f() { char* temp = 'crap'; // sizeof( temp ) = size of any pointer, commonly 4 } The above declares a pointer on the stack, which points to a string in memory, some data segment. void f() { char temp[] = 'crap'; // same as char temp[5] = { 'c','r','a','p','\0' }; // sizeof( temp ) = 5 } Declares an array of characters on the stack, and the compiler counts the characters and determines how big the array should be. But the answer is that why use sizeof -- you can should use strlen(). I guess for a string known at compile time, sizeof is more efficient, but you don't know the computer's name at compile time.
Sun 01 Feb | Koz | > smart enough to add up the maximum buffer size they need for sprintf(). That's a dangerous attitude to take. How many more Buffer Overflows will we need before people learn to *never* take those risks. Sure, if you're writing embedded software then the few ops it saves you are worth the time. However, if you're writing *anything* that gets used on the network or on a desktop PC, you should steer clear of sprintf and his other non-n function friends.
Sun 01 Feb | Bill P. | 'There are no stupid questions, only stupid people.'
Sun 01 Feb | Caliban Tiresias Darklock | > How many more Buffer Overflows will we need before > people learn to *never* take those risks. If you know it will never fail, it's not a risk. Look at this code. char s[12]; srand(time(NULL)); int num=rand(); sprintf(s,'%d',num); Where is the risk of buffer overflow? 1. The format specification is changed. 2. The int type is larger than 32 bits. Okay, so we have two potential risks. If they do not exist at compile time, will they exist at run time? No! So there's no risk. I know when the program is compiled whether the risk is there, and since I will undoubtedly fix it, the risk will simply never exist on the end user's system. The only other person who can introduce these risks is a programmer who modifies and recompiles the code, in which case he should understand the risks and do something about them. If he doesn't, it's not my fault.
Sun 01 Feb | Xaja | 'The only other person who can introduce these risks is a programmer who modifies and recompiles the code, in which case he should understand the risks and do something about them. If he doesn't, it's not my fault.' I'm not sure that it wouldn't be your fault. The person modifying the code might not understand the risks. Perhaps they're rushed; perhaps they're not a C programmer. It's up to you to write code that is not only safe now, but will be resistant to future error. (Okay, I'm not fussed about this particular example, just thought I'd comment on that attitude in general.)
Sun 01 Feb | Tony Chang | Wow! That's a new one! So I write good, bug-free code and later, somebody who doesn't know how to program comes along and changes it introducing bugs. And its my fault since I should have written 'code that is impervious to errors when modified'. Just out of curiosity, xapa, what country do you live in?
Sun 01 Feb | Mark Hoffman | When coders collide...
Sun 01 Feb | Mike Swieton | Sorry guys, I still say you should code defensively. There's a difference between writing bug-impervious code, and code that just begs for bugs to be introduced. Use of unchecked buffers is always less safe than the alternative. It is a ridiculous argument to try to excuse dangerous code (of which perhaps this simple sprintf usage is not a perfect example, but I think we can agree that fragile code does exist) by saying that 'well, you can't expect perfect code!' No, I can't expect perfect code. But I can fully expect you to write code that guards against known dangers. No, you can't perfectly future-proof your code, but that doesn't mean you shouldn't try.
Sun 01 Feb | Andy | Yeah, that is taking a pretty naive attitude to say "well *I* did it right, it was the other guy's fault."  Maybe so, but don't you care about your product?  Wouldn't you want to take some perfectly reasonable precautions to make it a little better?  AT LEAST add an assert after the sprintf.  Let's get real here. 
Sun 01 Feb | Caliban Tiresias Darklock | > It's up to you to write code that is not only > safe now, but will be resistant to future error. It is. If you make an error in that code, it will break. You will have to either fix it or ship broken code. If you ship broken code, people will notice that it's broken and either fix it or stop using it. Then there won't be an error, because either the code will be fixed, or people will not run the code that causes it. This also gives the modifying programmer a reputation. If he fixes his problems and ships good code, then he gets a good reputation, and is encouraged to write more code. If he just ships broken code, then he gets a bad reputation, and is encouraged to Stop That. The alternative is to allow bad programmers a way to ship good code, which gives them false confidence and a false reputation. That false reputation may allow them to get onto a major project where they will mess everything up and cause major headaches for the whole team. Furthermore, it prevents good programmers from earning good reputations based solely on their code, because good code is no longer the sole province of a good programmer.
Sun 01 Feb | Andy | Yeah, sometimes I purposely insert bugs in my code, just to make sure that the next guy who comes along won't accidentally gain a good reputation.
Sun 01 Feb | Caliban Tiresias Darklock | Of course he will. He'll fix them. You, on the other hand, will not score many points with your buggy code. Which evens everything out just the way it's supposed to be. The guy who writes crap gets a bad reputation, and the guy who fixes it gets a good one.
TN visa | Sat 31 Jan | Banjo
Any Canadians working in US on TN visas in this board? Is it easy to get an TN at the border?
Sat 31 Jan | Mongo | It's easy (although stressful) if you're qualified. Under what classification?
Sat 31 Jan | Dennis Forbes | Isn't the TN visa under the auspice of free trade (i.e. NAFTA)? Under such it shouldn't be difficult, presuming that you have the necessary qualifications. Having said that, there are designated list of professions that fall under the TN visa, and I distinctly recall (from back in the days when the US would be a good destination career-wise for a software developer) that computer programming, or any related discipline, is _not_ covered.
Sat 31 Jan | Mongo | ... computer programming, or any related discipline, is _not_ covered. Sort of. Computer programming is explicitly denied, but Computer Systems Analyst is a perfectly valid category. I believe this is due to the cheapening of the term 'programmer' from when it meant what we call analyst today to Excel macro writer, HTML 'coder', etc. You will need a 4 year degree in the field or a two year degree and three years experience. In the field can mean CS, MIS, or Mathematics as a slam dunk. If you don't have these, it's increasingly unlikely under this category. What's worse, it can depend entirely on the mood of the immigration inspector. I've had four Systems Analyst TNs, but have had to switch to Management Consultant, since immigration has since determined my Philosophy degree doesn't count any more (one INS inspector entry asked me about my 'sociology' degree - grrrr).
Sat 31 Jan | Dennis Atkins | And this is supposed to be easier because of special NAFTA privledges? It's easier than that to emigrate to New Zealand and we don't have any treaties with them.
Sat 31 Jan | Banjo | Mongo, I have a 4 year degree in cs, but do the immigration officials at the border cause any trouble, that is can I be rejected?
Sat 31 Jan | Mongo | What can I say? Only the government could screw up something so simple so badly.
Sat 31 Jan | Mongo | Banjo: They can always cause trouble, and you can also be rejected, but ... A 4 year in CS should be fine as long as your documents are in order, the paperwork is done correctly (e.g. - it does _not_ say or describe a programming position per se), you don't have a criminal record, etc. Also, if they ask about your job,make sure you talk about things like ... You might check out http://www.grasmick.com/dot.htm#Analyst Given that the TN visa has to be applied for by the company who has offered you the job (a US company has offerred you a job, no?), they should take care of all this. You just have to go to the border, look professional, submit your stuff, and off you go. Remember, they're beaurocrats, so if you don't give them a reason to reject you, they rarely will. Even if you are rejected (unlikely) at one port of entry, you can just go try at another. If you're _really_ worried, though,you should get a lawyer to help you. I really, really doubt you need one though.
Sat 31 Jan | Mongo | Banjo: Another thought. I've heard the Niagara crossing port has a bad reputation for hassling TNs, as does the BC peace arch port. Rumours only, but I thought I'd share them. Where are you from, BTW? I'm sort of from Calgary, myself.
Sat 31 Jan | Banjo | Nova Scotia, Halifax, will try the New Brunswick border
Sat 31 Jan | Banjo | Mongo, just another thing, my degree has mispelling in the last name, from my passport, do u think it will be trouble?
Sat 31 Jan | Now a U.S. citizen | I got my TN visa in about 10mins at Ogdensburg, south of Ottawa. I just showed my degree, job offer and paid $50. This was in 1994 though...
Sat 31 Jan | Mongo | Banjo: No, I don't think it'd be a problem, but I'd get it fixed anyway. The university should be willing to do this for a nominal fee. If that's a hassle, a letter from the registrar or the department head should work just as well.
Sat 31 Jan | coresi | Check the forums on this site: http://grasmick.com/board/ I didn’t use their services otherwise, but I bought the book and read the forums before I applied for a TN1 in 2001. You can find there more information pertaining to Canadians working in US than pure visa questions. Pay special attention if you want to import your car to US. I did not have any problems crossing the border at Buffallo in 2001 but I was quite well prepared.
Sun 01 Feb | jedidjab79 | I got a tn-1 visa last year back in March. A few points: 1) Ogdensburg -- it still works, two other friends of mine got theirs there before we went to work in Florida 2) Regardless of where you get it, you'll need your original degree (4-years+) and a letter from your employer. This is the fun part; depending on who you get at customs, your letter may or may not state enough things about the company. If you decide to get it at the airport/border, make sure you have the phone number for the company you're going to work for so they can fax a letter with whatever the customs officer wants to see on it right away. Besides that..it's pretty easy. I went in and out of the states several times with my canadian passport and tn-1 stapled in. Don't let anyone take it from you ... to be on the safe side, just photocopy it before you leave. btw - i'm from pei :) how's the weather in the maritimes these days? ;)
Sun 01 Feb | Banjo | Not bad at all in the maritimies, especially last week..
"Top grades and a track record of success" | Sat 31 Jan | Shlomi Fish
Reading from the Fog Creek summer internship page: http://www.fogcreek.com/Jobs/SummerIntern.html One of the requirements for an applicant are: <<< Top grades and a track record of success >>> Now, what does it mean? I am studying in the Technion where the tests are very hard and many times unfair. The global test average is 70%, and the average of the students is between 70% and 80%. (taking into account taking the second chance exam, or taking a course again). I have an average of 82%. However, cum laude students are considered those with an average of 85 and above and summa cum laude those with an average of 90 and above. While I was a cum laude students in several semesters, I will not graduate with a cum laude degree. Some of my grades are high or very high. I also have some other less flattering grades, some of which were received due to the unfairness of the test. I also have a policy of not taking a test again if I suceeded to get a passing grade. (its simply not worth the aggravation) On the other hand: * I have several years of proven experience at workplaces and many more of just experiencing on my own. * I wrote or contributed to several open-source projects (Freecell Solver, MikMod for Java, Quad-Pres, and contributions to Perl, Subversion and the GIMP) * I am one of the administrators of one of the servers of the local Linux user groups. * I wrote many presentations about technical topics to various local clubs, including a four part series of Perl for Perl Newbies with very verbose explanations. * I maintain a personal web-site and many other web-sites. For everybodys information, even someone who is smart enough to get a %70 average in the Technions Electrical Engineering department, is well above the average intelligence. So, would I or would I not be a very good candidate for this job? What do top grades have to do with it? The Technion is a very hard place to get good grades in. Im not ashamed of my grades, but they are not super-spectacular. Its just that I have better things to do in my team than study non-stop. (Note that this entire message was hypothetical. I do not wish to apply to the summer internship position.)
Sat 31 Jan | A Teacher | There is a direct relationship between the grade you recieve for the class and the amount of work or effort you put into it. A = A lot of work and studying F = No work - goof off This is the way school works. You should have put more effort into studying, more effort into your assignments and generally more effort all around. I hate it when students complain about 'tough tests.' There is no such thing. If you know your stuff you'll do fine. If not you won't. If you want to challenge that a question is wrong or worded poorly, I will hear you out. Other than that there are no excuses. Whining about, 'I went to a tough school... etc etc' doesn't cut it either.
Sat 31 Jan | Ali | Grading standards differ in different countries. An 'A' classification in the US is awarded for a more than 90% normalized grade, whereas an 'A' classification in the UK is awarded for a more than 70% normalized grade. Note that these 2 examples are the same grade, calculated exactly the same way, but the numbers are different. Someone who naively looks at a UK student's grade, not realizing that he has to scale up, will say: '70? That Sucks! I'm looking for 90% people around here!' - and miss a student of exactly the 'A' grade caliber he was looking for. I think this plays a big role in the effect the OP was describing.
Sat 31 Jan | Mongo | Shlomi Fish said: ... cum laude students are considered those with an average of 85 and above and summa cum laude those with an average of 90 and above. While I was a cum laude students in several semesters, I will not graduate with a cum laude degree. ... I also have some other less flattering grades, some of which were received due to the unfairness of the test. Hmm, 'unfairness of the test ... ' So, did no one in your class graduate summa cum laude or even cum laude?
Sat 31 Jan | FredF | Not only do standards differ, but they differ in the way they work. The US and Japan love multiple-choice questions, while other countries don't and present student with open questions, with pratically no chance of ever getting a 100% grade since professors always come up with an excuse not to give your a full grade :-) That's something to take into account when hiring students/workers from overseas...
Sat 31 Jan | ajs | I read an account of a MIT professor who didn't automatically hire 'straight-A' students, he preferred to see a couple of F's in their grades. Why? The idea was that these students had priorities, they passed what mattered to them, and ignored the rest. That explains my low marks for accounting! Bleh. The 'straight-A' students, on the other hand, simply do what is necessary to pass the course.
Sat 31 Jan | Shlomi Fish | A Teacher: <<< There is a direct relationship between the grade you recieve for the class and the amount of work or effort you put into it. >>> I wish this was true for the Technion. I can testify that there were many courses I knew the material perfectly for (did all the assignments, solved past tests, and in general mastered the material), and then they were followed by tests that were either too long or had no connection with the material at hand, or whatever. Sometimes, I failed to receive the grade, because I could not recall a certain technique or whatever. (at this case I was actually OK with it, and accepted my grade). But the Technion gives tests that can widely diverge from what students are expected to know or master. <<< This is the way school works. You should have put more effort into studying, more effort into your assignments and generally more effort all around. >>> I've placed a lot of effort into studying, a lot of efforts into assignments. There were several courses for which my partners and I spent days on ends working on the assignments. In other courses, I just solved all the assignments, usually successfully. <<< I hate it when students complain about 'tough tests.' There is no such thing. If you know your stuff you'll do fine. If not you won't. If you want to challenge that a question is wrong or worded poorly, I will hear you out. Other than that there are no excuses. >>> There is too, at least in the Technion. Some tests are too long. Some tests test on techniques with no similarity to such that the students have ever encountered. Some tests test on material that wasn't studied in class. I'll give you an example: in EE we have a course titled 'Introduction to Data Structures and Algorithms'. It is a basic course, with no correction proofs or whatever, just to give the basic taste of basic data structures and algorithms. (The more advanced course is called 'Design and Analysis of Algorithms'). My friend's test was littered with assignments to give correction proofs! They weren't shown in class, or assigned in assignments, and were never given in a past test. How can you explain that? <<< Whining about, 'I went to a tough school... etc etc' doesn't cut it either. >>> I'm not whining about it. I'm stating it as a fact. I'm just saying that if I: 1. Went to an easier university. And/or 2. Took Computer Science instead of Electrical Engineering. I would have fared better. And my GPA is _not_ so bad. Maybe you haven't been to the Technion, but that's the way it is. People who are super-smart and study hard can get awful grades there. Seriously.
Sat 31 Jan | FredF | >People who are super-smart and study hard can get awful grades there. Seriously But then, any knowledgeable HR person knows the Technion is a very good school, so would keep this in mind when reviewing your grades before hiring you.
Sat 31 Jan | Caliban Tiresias Darklock | I've never found grades to be terribly useful, because most classes fall into one of two camps. You have 'fact' classes, where parroting what the teacher tells you is all you need to do. And then you have 'opinion' classes, where you need to AGREE with the teacher. Parroting what the teacher tells you will still work, usually, but the teacher doesn't always tell you. What was the turning point of the Hundred Years War? Well, define 'turning point'. It started on the basis of trade, was joined in earnest with the defeat of the French fleet at Sluys, the English longbow made its famous stand at Crecy, the French king was captured at Poiters, and a treaty was signed in 1360. Most people would say that Crecy was the turning point, but the key problem here is that you need to agree with the teacher. Agreeing with your superiors is certainly a valuable skill, but I don't know that I would consider it *useful* in most jobs. Good grades, to me, means that you're good at playing certain real-world games. These games are very useful in politics and large corporate structures, but realistically they don't serve much useful purpose anywhere else. I think if we really think about it, we probably all want to hire people who got the same sort of grades we wanted. If we wanted to get straight A's, we'll hire people who got straight A's. If we wanted to get A's in science and math, we'll hire people who got A's in science and math. If we didn't care what we got, we don't care what our applicants got.
Sat 31 Jan | A Teacher | >> 'My friend's test was littered with assignments to give correction proofs! They weren't shown in class, or assigned in assignments, and were never given in a past test. How can you explain that?' What about your test? I don't care about your friend's test. I find it hard to believe that an instructor would test you on material that he did not cover in class. If it was in the syllabus and he still did not cover it then it is your responsibility to learn it. If it is a fact that it is not in your textbook and it is not in the syllabus then it would behoove you to speak with this professor. I personally don't like or trust third person accounts. My friend said this or that... My friend's test had this or that...
Sat 31 Jan | Shlomi Fish | Mongo: many people (some of which I know) graduate as cum laude or summa cum laude in the Technion. However, they are not the majority. I heard that about a quarter are cum laude or summa cum laude students. The reasons I'm not a cum laude student is because I'm: 1. I'm studying Electrical Engineering, which I am less fluent at than Computer Science. 2. I don't try to correct the low grades I received by going to the second chance exams, or taking the course again. (I know someone who never settles on grades below 80% and someone who always wants to get grades higher than 94%). 3. I don't invest a very large amount of my time in studying. I have other priorities as well. 4. I couldn't care less what my GPA is. Really, I know that it doesn't say squat about how good an engineer I am, which is what matters to me. Other people do more than I do. Generally, I many time prefer to hack on open source software, maintain web-sites, read my mail and surf the web, knowing that these activities contribute more to my quality as an engineer, than studying.
Sat 31 Jan | Philo | An unqualified 'I want to see high grades' generally means either the author isn't writing what they really mean, or else they haven't put a lot of though into what they're writing. I find it hard to believe that Joel would prefer a 4.0 from Podunk U to a 3.0 from MIT. However, let me also point out that when you're interviewing college students, all you pretty much have to go on are grades. But that prompts the question - would you prefer a 4.0 with no outside activities to a 3.0 who's running their own website at a profit? Is the real answer 'if you don't have anything else to show us, you'd better have damn good grades'? ;-) Philo
Sat 31 Jan | no name | It seems completely plausible that a Prof., Teacher, Instructor could give unfair tests. I have been subjected to several of them. As a group, they are like every other sector of society. Some good, some bad, some malicious, vindictive, sadistic pricks. I took a Certification Prepatory course years ago, when I thought that they had some value. I scored a 65% on the final. I knew the subject completely based on the lecture notes and the text. I pointed out to the instructor that there was a dramatic disparity between what was presented in class and the test questions. I believe his exact response was: 'Waaah!' So I dropped him in his shoes and proceeded with a pyrrhic dance... just kidding. I went to write the Cert. with very little confidence, as you can imagine. 96% So friggin' easy, I couldn't believe it. Moral, pricks are everywhere.
Sat 31 Jan | Shlomi Fish | A Teacher: my test for this particular course was very much OK, and I received a 100% in it. (And no, correction proofs are not in the syllabus of the course. ) But I can tell you about some of the tests which I personally experienced. One of them was too damn long. It was a multiple-choice test in 'Linear Circuits'. I knew the material perfectly, but it simply took me a long time to do all the calculations. The test did not test understanding or knowledge - just mere calculations. At the end, I ended up guessing all the stuff. I received 57% and the grade was factored. I was told the second chance test was even worse and that there was a 30% factor there. Another test was one in 'Processing and Analysis of Images'. In this case, we were given two questions (that together had over 55% percent of the grades) which we never encountered. Not even something remotely similar. I ended up failing the test, despite the fact it had a huge factor. This is beause I simply freaked out and did not know what to do. My friend (same one) was more cool-minded and simply wrote junk there to confuse the teachers and as a result got an above 80% grade. But the test was still very unfair.
Sat 31 Jan | Shlomi Fish | Caliban Teresias Darklock: I disagree here. When studying Electrical Engineering, there are many courses that test for the understanding and implementation of the material at hand. So I need to encounter problems which I did not ecnounter before in the test, and make sure I can solve them using the tools I learned throughout the course. What you describe may be more the case for Humanistic studies, but I be damned if I know, because I only seriously studied it in High School.
Sat 31 Jan | Mongo | Shlomi: I understand, and respect, that you have made conscious choices to prioritize on other things you feel are more valuable to you than high grades. However, the point I was driving at is that while some tests/courses you have taken feel arbitrary and unfair to you, it's clear that they are having, at least to some extent, the desired outcome for the institution: they are 'grading' the students based on some formalized criteria, just as inspectors grade raw materials for industrial products. That's why the scores in classes are called grades. All else being equal, people choosing a product will prefer higher graded products than lower graded products. Of course, the basis for grading is highly debatable, and 'all else being equal' perhaps more so, as you point out. Still, to deliberately choose to market yourself as a lower grade product to a potential employer on the basis of challenging the grading process strikes me as a high risk strategy. One interpretion of a potential employer hearing an explanation of lower grades of the form 'I had higher priorities than studying, etc.' is 'I will have higher priorities than working for you'. I'm not saying you're wrong, but you should not blame a potentialemployer for looking for a higher grade product for his or her business. As Philo has pointed out, the quality of the institution will likely bear on theinterpreation of the GPA, as well. Still, from Joel's personal resume: Yale University, New Haven, CT BS summa cum laude in Computer Science, with honors in major, May 1991. GPA 3.91. Elected to Phi Beta Kappa as a Junior
Sat 31 Jan | A Teacher | Shlomi Fish said: 3. I don't invest a very large amount of my time in studying. I have other priorities as well. 4. I couldn't care less what my GPA is. Really, I know that it doesn't say squat about how good an engineer I am, which is what matters to me. Other people do more than I do. =============== You don't care and you don't study? When you are going to school, school is your priority and you had better care about it and you had better study. What makes you think you are a good engineer? The fact that you present yourself as lazy is a big warning sign to me.
Sat 31 Jan | Noname | "knowledgeable HR person"?  Isn't that an oxymoron?
Sat 31 Jan | Caliban Tiresias Darklock | > When studying Electrical Engineering, there are > many courses that test for the understanding > and implementation of the material at hand. But do they test *well*? I don't know. Your grade in a course is not entirely under your control. It's an agreement between you and your instructor. You do a job, and the instructor evaluates it, and then an essentially arbitrary letter gets written in a book. If you're lucky, your instructor will use fair and equitable grading policies that really do indicate your ability. On the other hand, maybe he's throwing dice and consulting astrological charts and marking your grade down because someone scratched his car in the parking lot and it sort of looked like your friend Bill. I prefer to look at things that *are* under your control. What classes you chose to take, for example. If you take a class in EE and fail, do you take it again? Do you take another EE class? Or do you run off and take 'Japanese Interior Decorating'? That's really much more indicative of how I can expect you to behave in a business setting.
Sat 31 Jan | Philo | So how come Joel doesn't just visit the campuses of the top five engineering schools and interview their BSCS cum laudes? Why even bother putting the ad on the website? Surely a targeting mailing would save him a lot of time? Philo
Sat 31 Jan | The Ted | 'When you are going to school, school is your priority and you had better care about it and you had better study.' Spoken like somebody from a college educated family whose parents paid for their school. I was the first person in my family to go to college and the only person from my high school class that went to college. During that time, my mother developed cancer & emphysema. When you are poor and from a rural area (population 300), and your parents never went to college, you are playing in a totally different ballgame. Since most of my teachers had grown up in the same area, I was urged to go to Northwestern Podunk State University. Didn't have a clue that I should try to get into the best college possible. I was told that except for the Ivy league, pretty much all undergraduate colleges were the same. I had heard of Harvard and Yale, of course, but I wouldn't have gone even if I had gotten in simply because it was so far away. I didn't understand what a difference that could make in your life. When you grow up in a place that only has farmers and teachers, you miss out on a lot (this was 1989 - about 6 years before I found the internet). I also wouldn't have been able to afford plane tickets to go home to see my family. Not only was my mother sick, but I had a girlfriend! So... I went, met kids from other little podunk towns, eventually graduated from Central State University. Note to any future kids I may have: 1. Get study materials for the ACT/SAT. I was able to jump from the top 10% to the top 3% on my GMAT simply by getting to know the makeup of the test. 2. Once in college, join as many organizations as you can. Since I will be paying for your room & board, you won't have to worry about having a place to sleep or food to eat. Use that time to establish a network. This is how you will get a job when you graduate. Join a fraternity/sorority. Get internships instead of jobs. Never do what I did and place your job ahead of your classes. I had to pay my own way to survive, you don't. 3. Learn an actual skill. Liberal arts classes are wonderful, but don't believe the brochures about being able to land jobs after graduation. If you're going to major in English anyway, at least pick up a teacher certification. 4. If you're not going to professional school, good grades and good connections will help you land your first job. Learn about the elite companies that conduct interviews on your campus and see what they are looking for. Your first job will be a springboard for the rest of your career. You can decide to leave McKinsey to work on main street, but rarely will you be able to do the opposite. Pick a company that is known for training its employees, ala McKinsey. 5. If you are going to professional school, go back to #1 and repeat.
Sat 31 Jan | Shlomi Fish | A Teacher said: <<< You don't care and you don't study? When you are going to school, school is your priority and you had better care about it and you had better study. What makes you think you are a good engineer? The fact that you present yourself as lazy is a big warning sign to me. >>>> School is a priority of mine not _the_ priority. My priority is to become the best Shlomi Fish I can become. As such investing 100% of my time in school will be a complete disaster as far as this goal is concerned. I know very well I am a good engineer, but I don't expect you to believe me. In any case, the following links all of which I maintain may prove my point: http://t2.technion.ac.il/~shlomif/ http://fc-solve.berlios.de/ http://quad-pres.berlios.de/ http://better-scm.berlios.de/ http://perl-begin.berlios.de/ http://vipe.technion.ac.il/~shlomif/lecture/Perl/Newbies/ http://vipe.technion.ac.il/~shlomif/lm-solve/ and the list goes on. The code or content is there and I'll let you be the judge. As for lazy: I can testify that I'm not lazy. Even on my courses I invest a lot of effort (as much as it takes) in going over the material. I just don't invest an insane amount of effort, as I have other things to do. Please don't label people.
Sat 31 Jan | A Teacher | 'The Ted': I also grew up in a small town on a farm and went to a state university. Every last penny paid for by myself, thank you very much. My mom and dad both died when I was 12. My dad died of colon cancer and my mom was hit by a drunk driver 5 weeks after my dad passed away. Don't even think that I have had an easy life. If you go to school and you want a job and you don't have connections, you had better give priority to the books even if you have to work. If you go to school for fun on mommy and daddy's money then I suppose you don't know what it means to work for something.
Sat 31 Jan | Shlomi Fish | Mongo: I try to become the best engineer possible out of the time I invest to actually become a better engineer. One of the finest products on the market. If this means, I invest less time in studying - so be it. Some extra-corricular activities I did in the course of my studying were very time consuming, but taught me a lot about programming and made me a much better hacker. Many workplaces I worked in were very happy with me when I worked there, even though I did many times diverged from work. My output is very good, and of good quality. It should satisfy any business who realizes that one's work is not one's life. I believe the value of a worker is not entirely proportional to his grades' average. Like I said, there were several measures I could have taken to increase my grade, but I'd rather not taken. I'd like to work in a workplace that accepts the fact that I am an 82% student, who has accomplished a lot outside of school, and preferred to do so. If they think that a summa cum laude student who has no experience in practical programming outside of school, is better than I am, then I would not want to work there in the first place. Other than that, I was able to find some job opportunities, and some of them did not even ask me for my grade. As for Joel, that's impressive. I wonder if he would have got the same result if he studied in the Technion for Electrical Engineering. (or if I would have done better if I studied CS at Yale). Don't know and couldn't care less.
Sat 31 Jan | A Teacher | You labeled yourself Shlomi Fish. Read what you wrote. I did not saying invest 100% of your time in studying. I said you better make it a priority.
Sat 31 Jan | no name | I hate to break it to you Shlomi Fish, but those links don't prove anything except maybe you know Perl and HTML and how to ftp files to a website. You're studying to be a what again? Electrical Engineer? If this is the case then you need to hit the books. Maybe claiming you are good webmaster or that you are proficient in HTML and Perl would be a more accurate statement.
Sat 31 Jan | Lee | 'A teacher' wrote: 'you had better give priority to the books even if you have to work' You don't know sh*t what you're talking about. I worked 40 hours a week at wal-mart while I went to school full-time. However, the first year of school I was on scholarship. If you had a clue, and weren't just talking out of your a**, you would understand what a crock your statement is. There's a big difference in what you're able to do with your studies when you're not working 40 hours per week. If I didn't work, I didn't eat and didn't have a place to live. Where's the f*cking priority in that!????!
Sat 31 Jan | A Teacher | I worked 40+ hrs per week when I was going to school also.  When I got off work I gave priority to school and school work.  I'm not talking out of my ass.  I'm speaking from experience.
Sat 31 Jan | Lee | Dude, Then you understand there's a big difference in the grades you will be able to make. RIGHT?!
Sat 31 Jan | A Teacher | It depends on the person. I personally never made work an excuse for my grades. I took the workload I could handle and I did well. I don't believe there is a correlation between working and how well you do in school. Each person knows there own limits and they know if they have exceeded that threshold. Each individual knows their level of determination. I was very determined to succeed and to do well in school. That was just me. Making my schoolwork a priority was one thing that I think helped me out.
Sat 31 Jan | stfu whiners | 'A Teacher' is right. You don't even have to be especially smart to receive good grades, it's 90% effort. As for the whiners complaining about unfair tests, what would you consider a fair test? I've noticed a lot of people consider anything short of being given the answers prior to the test 'unfair'. It's your responsibility to educate yourself, the teacher is only a guide. If you find something on a test the teacher hasn't covered then maybe you didn't apply yourself to learning the subject as much as you should have. Besides, it rewards those students that DO make the effort.
Sat 31 Jan | Lee | 'I don't believe there is a correlation between working and how well you do in school. ' 'A teacher' is officially labeled a 16 year old troll.
Sat 31 Jan | Philo | 'Each person knows there own limits and they know if they have exceeded that threshold' If you have someone that knows this at the age of 19, they are very mature, and definitely worth hiring if you can. Philo
Sat 31 Jan | Caliban Tiresias Darklock | Shlomi, just a bit of constructive criticism here... and this *is* supposed to be constructive... You come across as childish, inexperienced, and belligerent. Nothing you have written interests me. What little sticks out in my mind is not positive. You sniff at the college for not having a standards-compliant web page, as if anyone really cares. You sneer at CVS for not having a few minor features, as if anyone really cares. You solve a few basic puzzles, and build a presentation generator that you use to create a bad Perl tutorial. Then you come in here and say you know you're a good engineer. Unfortunately, you're not. You're just a competent Perl programmer. But engineers solve problems; if you expect to impress me with your work, do something that's relevant to someone other than yourself. Why in the world would I want to read your ramblings about SCHEME or run some program you wrote to solve mazes? I know why I would want to read *my* ramblings about SCHEME or run some program *I* wrote to solve mazes -- because I'm arrogant and self-involved. I love writing stupid little things for no good purpose, just because I can. Every engineer does. But a *good* engineer knows that nobody else gives a flying leap about it. Maybe you might find some other engineer and say 'hey, check this out -- it's a distributed dynamic top-down splay tree of self-sorting linked lists!' and the two of us... um, I mean, the two of *you* can sit around and giggle like schoolgirls and discuss its scalability. But engineers are WEIRD. Everybody else will look at you like a deer in headlights and have no freaking idea what you're saying.
Sat 31 Jan | A Teacher | Like I said, I worked 40 hours per week and could handle my credit load. Maybe you took too many credits or something else threw you off course. I don't know, I am not you. Granted I did 'grow up fast' but this was out of necessity due to the death of my parents. Maybe I was a little more mature than most of the people my age at school but I also shouldered the responsibility of running a dairy farm with my brothers throughout my teen years and even into my twenties. I've got nothing against you Lee, but you do need to express your thoughts in a more coherent fashion. Calling people names and throwing insults at them only indicates anger or frustration. If you can provide an argument against my statement instead of repsonding by calling me a '16 year old troll', I will gladly hear you out.
Sat 31 Jan | Dennis Atkins | Shlomi, I graduated Summa Cum Laude with less than 90%. It was a tough school. I was worried about even graduating and turns out I graduated with top honors. Anyway, intelligent employers like Joel understand that top grades differ by school. A bit of advise. Where you said, 'due to the unfairness of the test' - drop that routine AND the attitude behind it. That's life. Unfair. Unfair to you AND to the other students no doubt. Or what about the other students who cheated? Surely it is unfair that they got better grades than you right? Nope, it's life. Suck it up. Griping about stuff flags you as a whiner who is full of excuses. There are people with excuses. And there are people who get things done. The two groups do NOT have a common subset.
Sat 31 Jan | Dennis Atkins | 'The US and Japan love multiple-choice questions' I have no information on Japan but if you think that serious US engineering schools are full of tests with multiple choice questions, you are sadly mistaken.
Sat 31 Jan | Dennis Atkins | 'I don't invest a very large amount of my time in studying.' And thus it is likely you would not spend a lot of time studying after you graduated either. Keeping up with the trade is a prerequisite for being a good engineer. 'I couldn't care less what my GPA is.' And thus it is likely you couldn't care less what your bug count is or whether customers are able to use your software. 'Really, I know that it doesn't say squat about how good an engineer I am' That is not true. Those things do say a great deal about how good a engineer you are - you are not very good. 'I many time prefer to hack... maintain web-sites, read my mail and surf the web' Right. The only way to become a good engineer is to do good engineering. Anyone who says otherwise is not a good engineer.
Sat 31 Jan | Shlomi Fish | Caliban Tiresias Darklock: <<< You sniff at the college for not having a standards-compliant web page, as if anyone really cares. >>> This web-site (of my department, not the university) is not only non-standards compliant it also dysfunctional for Mozilla and Konqueror and anything else besides MSIE and Netscape 4.7 and Netscape 7.x. My sites, on the other hand are fully functional in all browsers (including lynx). What I did do on my site is create a script to extract the relevant HTML out of it and present it in a good, portable way. It's not the main thing of the site. <<< You solve a few basic puzzles >>> Do you refer to LM-Solve? Well, that is rather a hack. Whatever, forget it. But how about Freecell Solver ( http://fc-solve.berlios.de/ )? I challenge you to learn the rules of Freecell and to write a program to solve it within one week. (without looking at what I or anyone else did) Then I want you to compare which program (mine or yours) has more features, is faster, is better documented, has an equally comprehensive web-site, and so forth. (and, BTW, Freecell Solver is written in ANSI C. I know many other languages besides Perl and HTML: http://t2.technion.ac.il/~shlomif/SFresume.html ) <<< and build a presentation generator that you use to create a bad Perl tutorial. >>> I don't think my Perl tutorial is bad. It's your flamatory opinion. I know of two people who learned Perl out of it, and was told it was used by Intel Israel to teach engineers Perl there. <<< But engineers solve problems; if you expect to impress me with your work, do something that's relevant to someone other than yourself. >>> Freecell Solver is such a case. Many people actively used it and contacted me about it. It was integrated into kpat, the KDE solitaire suite. It is also an essential component of Freecell 3D, which is a shareware Freecell program for Windows. And my Perl tutorial proved of use to other people. And my other lectures may also be of use. Moreover, my gradient-fu patch (google for it) for the GIMP enables scripting the gradients, and will be integrated until GIMP 2.2, and I also contributed patches to Perl, GIMP and Subversion. You may do well to take a better look at what I have in these resources, and take a thorough look, because there's a lot of material there. And you may also wish to think again before calling what you wrote 'constructive'.
Sat 31 Jan | Shlomi Fish | Dennis Atkins: <<< 'I don't invest a very large amount of my time in studying.' And thus it is likely you would not spend a lot of time studying after you graduated either. Keeping up with the trade is a prerequisite for being a good engineer. >>> When I said studying, I meant studying for my university requirements. Of course I learn new things all the time. In the duration of my studies alone, I tought myself (with the help of my peers and web resources) LaTeX, XML, DocBook/XML, CVS, Subversion, Python (which I don't like), a much greater sub-set of Perl (which I like a lot), lots of interesting C techniques, a greater subset of UNIX, Haskell, O'Caml, Scheme, Web Meta Language, and the list goes on. Recently, I started borrowing books out of the Israeli Perl Mongers Library and am reading them for fun and for learning. So, I 'study' quite a bit, thank you. <<< 'I couldn't care less what my GPA is.' And thus it is likely you couldn't care less what your bug count is or whether customers are able to use your software. >>> That's not true. If we take my programs as examples (Freecell Solver, Quad Pres, LM-Solve), then I do care about such things. In Freecell Solver, I fixed a lot of bugs and released new version as I found them. I also kindly answered the questions of people who contacted me about it, and even engineered it to be more user friendly. <<< 'Really, I know that it doesn't say squat about how good an engineer I am' That is not true. Those things do say a great deal about how good a engineer you are - you are not very good. >>> Why? Some very good programmers out there graduated with low grade averages. Some straight-A students write horrible code. So how can this say a great deal about how good an engineer I am? <<< 'I many time prefer to hack... maintain web-sites, read my mail and surf the web' Right. The only way to become a good engineer is to do good engineering. Anyone who says otherwise is not a good engineer. >>> Please refer to the definition of 'hack' next time. It means to program, make a useful composition, or to tweak existing programs. I do that a lot and so can be considered an engineer. Whether good or not that is something only others can judge, but I received my share of compliments.
Sat 31 Jan | Dennis Atkins | Shlomi, I've looked through your FreeCell Solver code. It's Ok but it's not very good. Your code is well formatted but that's all I can really say about it. Documentation is poor, variable names are cryptic, your code doesn't show a very deep awareness of C, and you use extremely poor coding practices like massive uses of goto, an assembly programming spaghetti style, and functions made up as defines. It's Ok for a sophomore undergraduate but it's not what I would be expecting from someone calling themselves a top engineer. You have a long way to go before you can call yourself that.
Sat 31 Jan | Shlomi Fish | Re "unfair" tests. I do not claim all my tests were unfair. Very much the contrary. And I do not whine about them, either. However, it is a fact that there were tests which I prepared for them throughout the semester and beforehand as much as I could and yet did not do well in, and felt they were unfair. And other students agreed with me. If many students who studied hard for the test and are very intelligent and knowledgable consider it unfair, don't you think it is safe to say it is?
Sat 31 Jan | Dennis Atkins | I understand that. I really do. I had many unfair tests as well. Well all did.  But don't you see that the tests were just as unfair to the other students as well? So, compared across the entire grading population, and eliminating stuff like cheaters (who actually always end up doing poorly despite their best offorts so nevermind them), the grading was fair. Are you following this? Surely you are not saying that the professor specifically targetted you in creating an unfair test?
Sat 31 Jan | Shlomi Fish | Dennis Atkins: <<< Shlomi, I've looked through your FreeCell Solver code. It's Ok but it's not very good. Your code is well formatted but that's all I can really say about it. Documentation is poor, >>> There's an architecture document available for it here: http://fc-solve.berlios.de/arch_doc/ but you are right that the code is not very legible. <<< variable names are cryptic, >>> Maybe, I can understand them, though, and I have a good naming scheme most of the time. <<< your code doesn't show a very deep awareness of C, >>> Please contact me by E-mail if you want to explain to me why this is the case. I think my coding style is as deeply aware of C as humanly possible. Sometimes even overly aware. <<< and you use extremely poor coding practices like massive uses of goto, >>> For the last time: gotos are not considered harmful! As Don Knuth noted in his article 'Strucutred Programming Using Goto Statements' - they are fully legitimate in many programs. I used them where I found appropriate but don't think I over did them. My code has many loops and conditionals where appropriate. They are many times a necessity with C's extremely poor looping and branching constructs. <<< an assembly programming spaghetti style, >>> My code is not spaghetti. <<< and functions made up as defines. >>> Welcome to the world of Freecell solvers where every microsecond counts! My code is heavily optimized for speed, and I guess it shows. Do you think I would use defines instead of functions if I did not have a very good reason to? ;-) This was a micro-optimization I did at a time to reduce the running time. <<< It's Ok for a sophomore undergraduate but it's not what I would be expecting from someone calling themselves a top engineer. You have a long way to go before you can call yourself that. >>> What I think may mislead you is the fact that Freecell Solver is heavily optimized for speed and memory consumption, even where modularity and legibility are sacrificed. I suggest you take a second look after perhaps reading the architecture document. Version 2.4.x was less heavily optimized than the subsequent versions, so you may be less flavourgusted.
Sat 31 Jan | Shlomi Fish | Dennis: yes I realize the tests were unfair to almost everybody, and everybody suffered from it. The bad thing about them, though, is that when you come to the test you don't know what to expect. Even if you know the material perfectly, it is possible that you may not succeed. So, in a way it can reduce your morale, which is especially harmful for someone like me who tend to get into Anxieties and Euphorias. I heard of a university in the States (UNC of Chappel Hill, IIRC), in which students study only about four subjects each semester with a lot of challenging homework. Then, the tests are easy in comparison to the homework. That way, people who prepared the homework can score high on the test, while people who slacked off will fail anyway. Sadly enough, this is not the case for the Technion. (at least not in Electrical Engineering). In order to finish the degree in 4 years, you have to study 6 or 7 courses every semester, some of them have a lot of work involved (and others don't prepare you for the test enough) and then the tests can bite you at unexpected places. The level of studies is high, but the testing and heavy factoring system is very problematic.
Sat 31 Jan | Dennis Atkins | It's not my job to teach you how to write legible maintainable code. That's what you paid your professors for. As one small example, cl_chop.c:freecell_solver_args_man_chop() Spaghetti. Pure and simple. Total spaghetti. And uncommented to boot. Sigh. As far as optimization goes, you would have gotten much better optimization by skipping the defines and using other techniques like look up tables, assuming that profiling had identified teh appropriate hot spots. As far as other parts of the code, why always an if-then-else tree on constants? Why not at least switch which is so much more legible? The compiled code will be the same. Or if you want to optimize, use a lookup table or a dispatch table. The code you have there could be made ten times faster with just a few changes if the purpose was not thoroughly obfuscated by the lack of comments and the spaghetti style. Now don't think I am getting on your case to be mean. I am not. Instead I am offering you a reality check. Maybe some day you will be a top engineer but not today. If your goal is to find employment, I think you should follow my advise about whining. But you're not getting it. You have a bit of an attitude problem. You can get by fine for most things probably with your ok coding skills, but it's the attitude problem where you need to focus your attention. When you say you spent your time on things you found more important than studying, it would have been better for you if those hobbies were going out to bars and meeting people, or joining a motorcycling club, or becoming a social activist, rather than staying home reading email and surfing the web. THen you would have rounded out your skill set a bit on the ability to understand how you come across to others. The stuff about how its not your fault you got bad grades because the tests were unfair is consistent with the rest of your attitude. You HAVE to lose this attitude if you want to do well in life.
Sat 31 Jan | Caliban Tiresias Darklock | Shlomi, you seem to have missed the point. Good engineers solve interesting problems. None of the problems you have solved are interesting. I find it terribly sad that the best thing you've ever done is write a program to solve a solitaire game. I find it terribly amusing that you say 'I'll let you be the judge', and then argue with the verdict.
Sat 31 Jan | Dennis Atkins | Also just so it's clear, I don't think your C code is bad. It's just not particularly good. It's about average for what I expect to see from someone with a couple years coding experience. I would expect that your code will get better as time goes by.
Sat 31 Jan | those who know me have no need of my name | Shlomi, give it up.  I knew you were in for a roasting when you posted this.  I believe some people can only make themselves feel good by denigrating other people.  Don't waste your time here, these people are not worth it.
Sun 01 Feb | Shlomi Fish | Dennis Atkins: <<< It's not my job to teach you how to write legible maintainable code. That's what you paid your professors for. >>> The code is maintainable, it's not very legible. And besides, no where was I taught how to write legible, maintainable code. It's something I learned on my own. I'm not sure if you can really teach that. <<< As one small example, cl_chop.c:freecell_solver_args_man_chop() Spaghetti. Pure and simple. Total spaghetti. And uncommented to boot. Sigh. >>> Heh heh. I don't know if it's spaghetti or not, but it's pretty ugly indeed. This is a parser of a subset of the Bourne shell syntax. I wrote it very recently, and it came out ugly, and it just works so I didn't find a need to refactor it, as I don't see it getting changed soon. <<< As far as optimization goes, you would have gotten much better optimization by skipping the defines and using other techniques like look up tables, assuming that profiling had identified teh appropriate hot spots. >>> look up tables would not have been appropriate here, because I have to execute code for its side-effects. (I did use a couple of lookup tables for the presets and stuff). Defines on the other hand, do save time because they elminate the function call overhead. <<< As far as other parts of the code, why always an if-then-else tree on constants? Why not at least switch which is so much more legible? >> I disagree here. If-then-else is my style, and I only used it for small ifs, or where I could not use switch (like trying to see if a string compares to one of a list of other strings). <<< Or if you want to optimize, use a lookup table or a dispatch table. The code you have there could be made ten times faster with just a few changes if the purpose was not thoroughly obfuscated by the lack of comments and the spaghetti style. >>> How do you know? As far as I know, the code is as optimized as it can. And lookup tables or dispatch tables would not have made it more optimized in the critical places. I think you overestimate your code evaluation skills. Maybe it would be good for evaluating homework assignmets which are supposed to be clean, modular, well-commented and easy to understand. But it is not applicable for a program like Freecell Solver which is optimized to death. Just for your information some of the techniques you can find there include: 1. States - either debug (large memory consumption, easy to understand class members), compact (one byte per card), or indirect (each stack has its own pointers and stacks are stored separately) - option at compile time. 2. Autoconfisiciation and RPM building. 3. Copy-on-write for indirect stacks when duplicating a state. 4. A parser for a subset of the Bourne shell. 5. Accessors to access the values and references to struct elements, so they'll be used faster. 6. Code is fully instantizable - no global variables (except constants) and no static variables. 7. A 1-to-many solver instance to scans architecture, allowig several scans to operate on the same states collection. 8. Very fast - can solve the Microsoft 32,000 boards in about 70 minutes on a Pentium III 600 MHz. 9. A meta-scan construction script that uses the statistics collected from the individual scans and constructs a close-to-optimal meta-scan using a greedy algorithm. 10. Ability to use configuration presets and read configuration options out of file. 11. An implementation of common meta-moves - special moves that are made of several smaller moves, that aim to accomplish a certain task. Most other solvers just move one card at a time (which Freecell Solver also supports). 12. Ability to solve games of many other variants of Solitaire similar to Freecell as well as games of Simple Simon which is very different. (many parameters can be given to the solver). 13. A highly optimized hash implementation with rehashing, secondary hash values, and other techniques. 14. A well-defined API that is used by the programs that ship with the solver and by external developers. 15. Globals occupy only the freecell_solver_ namespace. 17. Compact allocation (using memory pools and allocators) of run-time resources, as malloc can be very memory hungry. (and every saved byte count). 18. Order of the stacks and Freecells is kept track of throughout play, but yet the program avoids permutations of the same board only with different orders of the stacks or freecells. 19. Ability to recycle instances to preserve their existing configration and only accept a new board. And the list goes on. It's all there in the code for you to look at. Please note that code that is hard to understand is not necessarily bad. The Freecell Solver code is funky for a very good reason.
Sun 01 Feb | Sum Dum Gai | 'The only way to become a good engineer is to do good engineering. Anyone who says otherwise is not a good engineer.' What a bunch of macho chest beating bullshit. That statement totally fails to recognise that different people have different modes of learning. Some people learn best by doing. Some learn best by reading. Some learn best by listening. Some learn best by teaching. Some learn best by contemplation. Most people are best able to learn by employing a range of strategies, not just by doing. The old 'practice, practice, practice' mantra is hogwash. Practice only does you any good if you're practicing the right things - otherwise it can actually make you worse by making any bad habits ingrained. My theory is that the idea that the only way to get good at something was by doing it repeatedly was invented by untalented individuals, jealous of those who seamingly didn't 'work as hard' at their craft, yet consistently outshone them. Therefore, their only way of salvaging pride was to say that they can't be any good, because they don't have the experience behind them to be any good.
Sun 01 Feb | Shlomi Fish | Sum Dum Gai: you are right in a way in your analysis of how to become better. I think there are three levels of learning: 1. (Passive) learning - this is by reading, listening to presentations, etc. 2. Experimenting and Doing. 3. Teaching - this is the highest level which brings in the greatest understanding of the material at hand, as you need to present it and integrate it in a way that other people will understand. So, I try to do as much as possible of #2 and #3.
Sun 01 Feb | Flash | I'd like to write a bit about my own experience. I live in a non-english speaking country. The universities here are not as good as those in the US. I have a BS degree in CS. I had very bad grades at university. Why? Because I didn't go to the courses - I stayed home, programming all the time. I used to buy lots of programming books on algorithms, data structures, C, C++, Windows API, and other subjects. Then, I read those and experimented about 10 hours a day, every day. My parents didn't have any idea I was skipping a lot of classes. I fought with them a lot - every time they discovered I was at home, instead of at the university. I attended from time to time, went to the exams, etc. Many times my knowledge was way beyond what they were teaching, but in order to get high grades, I was required to attend the labs and the courses.. so I was getting bad grades. After school, I tried to get employed, and guess what... One of the companies I applied at organized a test for more than 30 programmers selected by their resumes. The test was very hard, and contained a lot of material. A week later, they called me. I was the #1 applicant - I have gotten the highest score among all the selected applicants, and one of the highest scores ever in their test. So, they hired me immediately. After working for them for a few years, I worked at another company, and after that I created my own company. Now I do the hiring. And I don't give a sh#t about grades. Do you know what is required for somebody to be a good engineer? In order to become a great engineer, a person has to study very hard and work a lot (and to have a high IQ). But - university is not the only way somebody can study! If I have to choose between somebody who went to the uni, learned algorithms (for example) and got a good grade in that class, and somebody who bought a book on algorithms and studied it at home, and then got a bad grade in that class because he didn't attend labs, I would choose the latter person. Why? Because he or she had initiative - he or she didn't behave like a sheep. I like people with initiative, people who don't blindly follow others.
Sun 01 Feb | no name | That was pathetic Flash. Not even mildly amusing. The endless proclamation of self-made geniuses in the programming field. Hey MA!! Look at me! I'm a frickin genius, I just go buy books and sit in my bedroom and learn all day! I'm so proud of myself. Wowowowow!!!! One word. Dumbass.
Sun 01 Feb | Dennis Atkins | If I have to choose between somebody who went to their job, learned algorithms (for example) and got good evaluations in that job, and somebody who bought a book on algorithms and studied it at home, and then got fired from his job because he didn't show up for work, I would choose the latter person. Why? Because he or she had initiative - he or she didn't behave like a sheep. Yes friends, I too agree that you don't have to do good engineering to be a good engineer. Most of the best engineers in the world either do no engineering or only do poor engineering. Ability to do good engineering has nothing to do with being a good engineer. Or so it would be if I am to believe you guys. Ha ha ha! Please my friends, buy yourself a clue at the next station.
Sun 01 Feb | Caliban Tiresias Darklock | You know why I don't care about grades? Geography. I am STUNNINGLY bad at geography. Take Massachusetts, for example. I have no clue where it is. It's somewhere in the northeastern US. That's about it. It's not so far north as Maine, and not so far south as Maryland, and not so far west as Pennsylvania. I have trouble straightening out which roads lead where. When I need to go north on a Washington state highway, I actually have to *think* for a minute about whether Everett or Olympia is farther north. (For our non-northwest people, trust me, this is an incredible example of locational stupidity.) Don't even try international geography, it's hopeless. I'm not even sure where Belgium *might* be. But I got good grades in my geography classes, because I'm good at taking tests. So if you look at my grades, you would think I know geography. If you gave me a test, you would think I know geography. But if you asked me to solve some real-world geographical problem, I would fail so miserably that you would be *convinced* I had to have cheated on the tests. Grades don't matter. Tests don't matter. What matters is whether you can get the job done. And in the case of geography, grades and tests say I can get the job done when I really can't. So I don't trust any grades on any tests in any subject, full-stop.
Sun 01 Feb | grover cleveland the 7th | i'm still in school and my gpa plain and simple sucks (2.5). I'm also the project leader for an ongoing internship team project type thing for a non profit, and just about everyone in my team has a better gpa. Here is the crackdown of how i would rate them. One girl has a 3.5/4, but she needs someone to hold her hand for every little thing she does (literally one of the worst i've had the pleasure to work with). Another takes 2 weeks to get in something that should take 2 hours, again a 3.0/4. Another, same gpa as mine, and actually is pretty good....he has good initiative and can make decisions without having to consult on every little detail. I consider him an ok coder..not bad, not reall good either though. Then there are 2 more guys who have around 3.0/4, and one is awesome, the other is not bad. My opinion is that grades really don't mean much. I'd take my roommate with a class x felony and a 2.5 gpa over half the people i know who have good gpas on a project. On a side note..what grading scales did you guys all have? My school is on a 8 pt, which means a 75 is a D (might as well be an F).
Sun 01 Feb | no name | This discussion is not about whether good grades correlate to being a 'good coder.' Rather, it's about how to achieve good grades. Good grades are achieved through prioritizing, studying and applying one self. As stated earlier, A = Effort, F = No Effort. As for the argument of better grades = worse programmer; there is no correlation there and it mostly depends on personality and other character traits. I have seen A students who took charge and did things and I have seen A students who were lazy and did nothing. I have seen C students (who could be A students) do the same. It depends on the person. 'A' students are normally more withdrawn and are not very outspoken, whereas students with lower grades tend to be outspoken and 'loud' as if they have nothing to lose. There are exceptions of course. This is why you can't make such a generalization about people and their grades.
Sun 01 Feb | one meeeellion dollars! | Tell me again, Shlomi Fish: Who the hell are you, and why should we care about you?
Sun 01 Feb | no name | A Teacher - if your parents died, you would have received a pretty good inheritance. Their house if nothing else. No money worries there my friend. Your claims of needing to work 40 hours per week are not consistent with this.
Sun 01 Feb | no name | I also came from a poor rural background. While other students discussed which new car they were buying, I was struggling to buy groceries and eat. It wasn't until much later I understood the different lives some people lead, and how much impact that has on grades. Later still, years after university, I realised I was much more better than most of the guys and girls in my course, but my marks at the time did not show that. I eventually returned to uni and did a PhD.
Sun 01 Feb | Egor Shipovalov | Back to the subject of the topic. Sometimes (well, often) you have to choose between the top grades and track record of success. This is very parallel to the careerist/enterpreneur dilemma. Looking at my former mates at uni, I see exactly a proof of this point.  People who run their own businesses didn't care about grades much, but they had jobs (or some public projects), getting real things done early. Those who did care and had high grades are doing well in some large companies now.
Sun 01 Feb | no name | >> 'A Teacher - if your parents died, you would have received a pretty good inheritance. Their house if nothing else. No money worries there my friend. Your claims of needing to work 40 hours per week are not consistent with this.' That is a naive statement you have made. As previously stated, we inherit the family farm. Since my brothers and I chose to take over the farm instead of selling it, we really did not gain or lose anything financially. You probably know that a farm doesn't run itself and is not expense free. There is massive overhead and tons of work in running a farm. What little cash we did receive from my parents life insurance policies helped us fix up the tractors and buy a new bulk-milk tank for the barn. So yes, I did need to work 40 hrs per week at the very least, even while attending univeristy. I am not rich. Never was and probably never will be. I never inherited large sums of money. I did inherit a farm, which is obviously something of value, but we chose not to realize it's cash value. Instead we chose to use it to generate cash flow so that we could support ourselves.
Sun 01 Feb | Jason Kozak | 'If I have to choose between somebody who went to their job, learned algorithms (for example) and got good evaluations in that job, and somebody who bought a book on algorithms and studied it at home, and then got fired from his job because he didn't show up for work, I would choose the latter person.' I'm really getting tired of people using this technique of rephrasing the orginal example with an obvious bias; you might as well not even bother stating your opinion when you use it to form your hypothetical. Now, if I had to choose to between an EE student who doesn't acknowledge his own faults, or someone arrogant enough to say something like 'Please my friends, buy yourself a clue at the next station', my choice would be simple... No hire
Sun 01 Feb | Jason Kozak | Speaking of admitting faults, I misread Dennis's statement. It's still a pet peave of mine, but I just can't bug Dennis about it. The rest of my post still stands though...
Sun 01 Feb | Sum Dum Gai | 'Yes friends, I too agree that you don't have to do good engineering to be a good engineer. Most of the best engineers in the world either do no engineering or only do poor engineering. Ability to do good engineering has nothing to do with being a good engineer.' That's a total strawman argument, and you know it. Nobody has said that ability has nothing to do with results! You contradict yourself anyway. You said the only way to be a good engineer is through doing good engineering. Yet you also support the idea that getting A grades is important. How can that be? The skills to do well in school have nothing to do with doing good engineering. You can get good grades at school simply through being good at rote memorisation. That isn't going to cut it in the real world, when you're faced with problems you can't memorise the answers to beforehand. I know some brilliant people who do very poorly on tests. The smartest guy I know does poorly on tests, and even worse in job interviews, because he gets extreamely nervous in such situations. He has to take medication beforehand to prevent panic attacks. He's a university dropout, yet he's ten times smarter than most people who finish with straight As. Meanwhile, I happen to have a gift for test taking, and I managed to get through uni with what, in American terms, is an A grade average, by not turning up to most classes and just reading the material the night before. This is why I think that grades are a useless measure of depth of knowledge, work ethic, or anything else. Some people just happen to be good at taking tests, and others are crap at them. I don't believe this strongly correlates to job performance. It's an indicator, but not a really good one. Luckily, I'm one of the people who displays strong correlation - I'm generally considered by my peers to be a good programmer. However, I know plenty of others who have finished university with good grades and are complete ratshit programmers. Some of them have been practicing for decades and show no signs of ever becomming good engineers. Meanwhile, I was the best programmer on the team in the very first job I took (despite aforementioned bludging through uni). There's more than one way to skin a cat, as the saying goes. Don't assume that everyone displays the same characteristics as you do. Just because the only way you improve your skills is by practice, doesn't mean it's the same for everyone. Likewise, just because you found you worked hard to get the grades you did in university, doesn't mean that everyone who worked hard got As, and everyone who didn't work hard got Fs.
Sun 01 Feb | Caliban Tiresias Darklock | It's a good thing we all understand sarcasm here.
Sun 01 Feb | Dennis Atkins | > You said the only way to be a good engineer is through doing good engineering. Yes. > Yet you also support the idea that getting A grades is important. Did I say that? >The skills to do well in school have nothing to do with doing good engineering. Your assertion that there is zero correlation is false. > You can get good grades at school simply through being good at rote memorisation. May I assume by schol you mean an engineering degree at an accredited university? If so and it is your experience that such a degree may be obtained with honors through rote memorization, please state the schools where this is so. I am not contesting that there may be such schools, I just want to know which ones they are for my own personal records. Thank you. > That isn't going to cut it in the real world, when you're faced with problems you can't memorise the answers to beforehand. I completely agree that any one whose engineering training consisted soley of rote memorization did not recieve training in engineering. Again, please state the schools where this form of training takes place. I am sincerely interested. Thank you.
Sun 01 Feb | no name | good grades are a good indicator that someone will be a good EMPLOYEE. there is always the straw man of the person with bad grades who successfully delivered 3 products, yadda yadda yadda. While it is true that these people exist, it isn't the case that they are applying for many jobs - they are already doing their own thing. I'm sure any number of software companies would love it if justin frankel or john carmack responded to their job posting, but it doesn't happen too often. if you are a hotshot dropout developer, you are too busy with your own projects to be applying for a summer internship at joelonsoftware.com. the problem with good grades these days is that grade inflation is so rampant that it is hard to determine what is or is not a good grade. At many universities people get As almost by default. At harvard (where I went to grad school (not in CS)), it seems like an 'A' is the average grade. If you made the mistake of choosing say, University of Chicago, it is almost impossible to get an A. Whether this means the students at harvard are better, I don't know. I certainly think the students at harvard are smarter in the social climbing sense, because why kill yourself trying to get a B at U of C, when you can easily get As at harvard, and more people have heard of Harvard, anyway.
Sun 01 Feb | Caliban Tiresias Darklock | That depends heavily on what your employees need. If you are hiring grunts, yes, good grades are a nice indicator of their ability to sit down and shut up and do what you tell them. If you're hiring field service personnel... well, the useful skills there simply don't come out of a classroom.
Berzerkley | Sat 31 Jan | Zahid
Had a good time at the Berkeley gathering ... even though the Au Coquelet folks have a different interpretation of the words, well set aside the back room than I do. :) Maybe we can do it again, even if Joel cant fly across the country to join us!
Sat 31 Jan | Tayssir John Gabbour | You guys might consider having someone give a lecture at your meetings.  A group I meet did this after we felt it was devolving into a coffee klatsch kinda thing and it seems to work for us.
Sat 31 Jan | Tim Bishop | I had a very pleasant and informative evening. Thank you Joel for organizing it, and being at its center. You were a gracious host. Tim P.S. I put a couple of pics and a writeup about the evening at http://www.thebishop.net/geodog/archives/2004/01/31/berkeley_on_joel_spolsky.html Enjoy.
Sat 31 Jan | Stephen Jones | ----'It was a curious scene. Joel was ensconced at the first table, attempting to swallow bites of foot between responding to questions'---- Yes, Tim, many would agree he has been putting it in his mouth a lot recently.
Sat 31 Jan | Eric Debois | Good article Tim. Cheers.
Sat 31 Jan | mackinac | Another case of the spurious non-printing trailing character in the URL.
Sat 31 Jan | christopher baus (www.baus.net) | I was surprised that 20 developers were far more punctual than imagined.  I was all proud to be there right at 7:30 after driving through rush hour traffic twice en route from Tahoe.  That was until I realized everyone was already there and already eating.
Sat 31 Jan | Zahid | I very much liked the 'coffee klatsch' atmosphere. A lecture means we only touch on one subject, whereas I sat with a group that hit probably 10 subjects, 3 or 4 in depth. Why did your group not like that interaction?
Sun 01 Feb | Tayssir John Gabbour | Oh, we do that too. We used to meet at a restaurant; when we decided to do lectures, we found a place right next door to the restaurant for a quieter atmosphere. We tend to yakk a bit about whatever for a while, then the groupmind somehow consenses it's time to begin the lecture, then we hit the restaurant afterwards. So the lecture's pretty much in the middle. I like it because it's kind of asymmetrical. But the group was around long before the lectures, and the lectures began partly because new people changed the dynamic a bit. So it's not really a big deal, and maybe it's kind of silly if you don't perceive a need. Here's a writeup of our last meeting (Lispniks Cologne), with the lecture taken out of order and put in front: http://alu.cliki.net/14-Dec-2003%20Cologne%20Meeting The wiki's sometimes slow, so I can mirror it if anyone cares. Incidentally, if anyone finds themselves in Cologne, our next meeting is today at 17:00pm, and they should feel warmly invited. The lecture today is not as esoteric as the previous two. Info here: http://alu.cliki.net/Cologne
Another critique of Joel's talk in Davis... | Sat 31 Jan | Steve
I attended Joels talk and felt so strongly about one of his points that I was compelled to write a critique of some kind.  I urge those that disagree with my thoughts to enlighten me or show where I missed the mark.  You can find the critique at www.foggymyst.com
Sat 31 Jan | Prakash S | If it ain't broke don't fix it. Regd your 'windows USB screen' thought, the ROI for MS would have been 0, since for 95% of the folks using MS there is no alternative. Read Joel's essay on Bicultarism. The Marketing bit, reminded me of the database called Ingres (I think) which was about 10 times better than the early versions of Oracle. While Ingres was busy fixing bugs Oracle was busy marketing....we all know who won!
Sat 31 Jan | Tayssir John Gabbour | You seem rather judgmental, letting your emotions reject information a bit too quickly. What if he said that the calculation of whether a bug is 'worth fixing' includes taking into account a backlash? And of course there are the bugs that early programmers realized were intrinsically difficult to solve. A macho notion of bugs assumes that if there's an error in your program, you put it there. But that completely ignores buggy compilers, platforms and machines. Programmers (read: computer users) build upon sand. Even the innocuous + operator in many languages doesn't do what many people think: Gray/Reuter in the 'TP bible' tried writing a perfect 1-liner add() function, and noted their first version had two bugs! They cite in 1992, US spaceshuttle software cost ~$5000 per line of code, and pilots were still handed a buglist to work around. No one has more time and money than the US government, they argue. Businesses are economic entities. They play by a different set of rules than 'real' programmers. Spending too many resources on something that isn't worthwhile, means less resources toward what users truly want. Going out of business or having insufficient resources are violent acts against your customers. Of course, this brings many people to conclude that the business world isn't cut out for them. [source: Gray, Reuter _Transaction Processing_, ch 3.6 'Software is the Problem'. Also see Bentley _Programming Pearls_ column 4 'Writing Correct Programs' for statistics on the difficulty of writing what seems to be a simple binary search.]
Sat 31 Jan | no name | If fixing the $90 bug brings in $300 of revenue, you can surely use some of it to fix the $110 bug.
Sat 31 Jan | Jan Derk | That's a good rant. Of course Joel is right. Geeks do way too little marketing and in commercial software one should not fix bugs if the fixing costs are higher than the bug costs. But it would have been wise if he immediately mentioned afterwards that even small bugs and annoyances can be incredibly expensive. Bugs are negative marketing. In the same speech he talks about bugs/annoyances in Windows and the ipod. How many geeks will now rethink their possible ipod purchase, because it does not come with replaceable batteries? How much will it cost MS having a famous ex-employee indicating windows flaws? How many of the listeners will retell his anecdotes? You just did it in your rant. I mention it again here. We are looking at a pyramid scheme of bad marketing. That $ 0.001 the bug costs each time it shows its ugly head or gets mentioned, quickly adds up. So I am not saying that for the best ROI one should fix all bugs, just that the costs of bugs are generally grossly underestimated. And Joel knows it, as he says in his own bug article 'indeed, we fixed every known bug in FogBUGZ, not just the big bang ones'. So someone is not following his own preachings. Maybe he just wants to lower the quality of the competition by telling them that bugs are OK, really ;)
Sat 31 Jan | Tayssir John Gabbour | Hmm, I hope that didn't come out sounding like an attack.  Entirely possible I could be more judgmental than you.  But being overly judgmental is bad for both of us, isn't it? ;)
Sat 31 Jan | Simon Lucy | I would presume that all the bugs were fixed in Fogbugz because they all satisfied the criteria of 'it would be more expensive not to fix it and it won't break anything else'. The second point is just as important. I've seen engineering/development departments change some innocuous behaviour in software that had such ripple effects that it destabilised the whole product. Or sometimes they made changes for 'good technical reasons' but without any demand to make them and ended up with a product that did less than it did before. Those that have seen version 4 of a product somehow do less than version 3 will recognise that kind of behaviour.
Sat 31 Jan | Chris | Read this: http://headblender.com/joe/blog/archives/microsoft/001280.html
Sat 31 Jan | Regular Poster | Steve, where you really missed the mark is your assumption about the impact of the bug on the users. The impact of the bug is going to depend on the kind of product, your users and the nature of the bug itself. 1) Kind of product: Some products are so 'vital' and/or 'useful' that even fairly serious bugs aren't going to make the users consider switching. Maybe switching is hard, or maybe there aren't alternatives. The users might whine and moan, but they don't switch. One example is Intuit's QuickBooks - a program that has many 'quirks', which range from incredibly slow searching of invoices once you have any significant volume to incorrectly displaying reports under some non-obvious circumstances. Switching accounting systems is a lot of work, especially for the target audience of that software. Many times, users don't even know whether the problems are with the software or something they 'did wrong'. Which leads into 2) 2) Users: Before we embark on any project, we first complete a full-blown user needs analysis including user interviews. On one of our recent projects, the (aging) vertical software package in use routinely corrupted the data. This information was then imported into their accounting package (Simply Accounting) - causing all kinds of headaches. The users didn't trust the accuracy of the data (no wonder, it had to be sent for 'repair' once every two weeks) - and many created their own spreadsheets of information which they used to compare to the results of the application. Yet, these users felt most of the problems they encountered were a result of not understanding how to use it properly. If only they could figure out the magic key-combinations, there wouldn't be any problems. This attitude is actually more common than you might think. The opposite attitude is communicated more frequently and more loudly, but it is not the only user attitude. 3) The nature of the bug. If the bug in question is obscure, or is not well understood to be a bug by your users, whether you fix it or not likely won't impact your users' perception of the software. Obviously, there are those display only 'problems' and even the odd trivial 'feature' that your users are going to complain long and loudly about - these are bugs you should fix as soon as possible. But the bugs that your users don't care at all about are generally much less urgent.
Sat 31 Jan | no name | The most depressing thing about this is that, apparantly, merely being a competent professional and actually wanting to produce a high quality product that's easy to use and works well seems to be a bad thing because it will reduce a company's profits. Maybe it's time to take up an honest trade, if there are any left.
Sat 31 Jan | Caliban Tiresias Darklock | I tend to agree that the cost of bugs is underestimated, from the customer perspective. What happens is that companies forget who's making the decisions. Let's take as an example the idea of a database package which has a record entry bug. Sometimes, when you enter a record -- about one in every five hundred -- it will mysteriously disappear and not end up in the database. Nobody knows why. You estimate that it will take two weeks of searching the code just to find the bug, let alone fix it. You estimate that fixing the bug will not get you any more software sales, because nobody finds the bug until after they buy the software, and they usually work around it somehow. Should you fix the bug? There's a missing variable in there. By fixing the bug, you save all of your customers a certain amount of time and money. Consider a company that enters 250,000 records a day. Without the bug, they wouldn't need to identify and reenter 501 missing records a day. If it takes 30 seconds to enter a record, that's over four hours a day that they lose because your software has a bug. For you, the company producing the software, this bug is not worth fixing. But for the customer, the bug clearly *is* worth fixing. The question is, should you demand money from your customers because the software is important to them, or just go ahead and fix the bug at your own expense because the customers are important to you? Not an easy question.
Sat 31 Jan | T. Norman | The cost of bugs is prone to underestimation, because you don't know how many people did NOT buy your product after hearing about or observing the problems.
Sat 31 Jan | Steve | T.Norman-- you stated the point of my entire rant in one clear sentence.  Nice job.
Sun 01 Feb | Lou | Let's take the opposite view for a moment. Joe Sixpack coder works at our software company, 'LittleBucks'. LittleBucks sells a product at 300USD per license and hopes users upgrade at 150USD each year. LittleBucks currently has sales of 2000 licenses, and an annual budget for salaries of 500,000 USD (~7 programmers), leaving a marketing and support budget of 100,000 USD. Joe Sixpack, while coding a module which is expected to increase sales by 10% by allowing a new category of users to use the product, discovers a bug. While calling an obscure (read little used) key command the product may freeze for 30 seconds and not perform the action. A quick search of some software forums finds that several users have noted this and are complaining about it. Joe Sixpack decides to fix the bug immediately, if users are complaining that must be bad. So he starts coding. It takes him a month to find the bug and fix it. In the mean time the new version of LittleBucks program ships. What was the cost of finding and fixing that bug? Opportunity cost of 10% of 2000users = 60000USD But we kept 5% of existing customers for upgrade = 15000 Note that the cost of the programmer's time is not factored in here, it's actually irrellevant from a business perspective as it is a sunk cost either way. If that 5% were dramatically higher, or our upgrade cost were higher, or our opportunity cost was lower, we should probably investigate the bug and fix it. But with these numbers, a manager will be quite upset, we missed out on 45000USD, that's nearly 10% of our annual sales. One needs to clearly define the opportunity cost (the profit we lose by doing something else) for fixing a bug. It's inexact, and bad marketing does compound. But that's not for Joe Sixpack to determine, he needs to go to his boss and ask if it's worth it - present some information, and do his assigned job so the company can succeed and give him a nice holiday bonus.
Sun 01 Feb | crusty admin | We've ranted on two threads about this to arrive at this gem of knowledge. Q: Should the bug be fixed? A: It depends.
Sun 01 Feb | Shodan | This thread makes me think of the Five Worlds article. I think that a shrinkwrap bug has much more potential to snowball into bad marketing than corporate software has. IMO.
Sun 01 Feb | Tayssir John Gabbour | Joel might have mentioned what he does to mitigate problems. For example, I don't remember seeing a shrinkwrap company with its finger closer to the pulse of its customers. (Kind of weird, I'm sure there must be one.) Its ez 2 use forums allow them to see users going nuts. Presumably someone interested in forking over the price but angry at a bug would still have enough energy to post on the forum or send an email. A reasonable percent at least. If joel is to be believed, fogcreek put enough effort into bugfree install programs and basic functionality that users who perceive bugs will be invested enough to complain loudly. so iamboringmyselftypingthisshit whydoicarewhattheydo
Wanna see the best ranked pages on Google? | Sat 31 Jan | Little Blue Bird
Do a search for "www" (no quotes).
Sat 31 Jan | Ha ha | Altavista ranks better than Google.
Sat 31 Jan | Alex.ro | Interesting. But I wonder how many URLs drop their 'www' (http://google.com instead of http://www.google.com).
Sat 31 Jan | Stephen Jones | Makes no difference, Alex. A search for http:/ turns up the same first page.
Sat 31 Jan | Daryl Oidy | It's more like "the best-rated pages linked to by people who don't know how to write good link text". A similar effect can be observed by searching for "readstep2".
Sat 31 Jan | Michael Sica (michaelsica.com) | my favorite one is, 'click here'. it rocks.
Sat 31 Jan | Michael Sica (michaelsica.com) | it's also how i proved to my boss that link text matters in search engines (google at least)
Sat 31 Jan | www.marktaw.com | I always loved that 'internet' turned up Microsoft.com If you're interested in the most popular sites by traffic, go to Alexa.com. Here's the top 500 http://www.alexa.com/site/ds/top_500
Sat 31 Jan | www.marktaw.com | > I wonder how many URLs drop their 'www' Certainly not the most popular ones.
Sat 31 Jan | Robert Jacobson | The Alexa list shows several spyware sites among the top 20 English-language sites: 13. Offeroptimizer.com 14. Gator.com 15. Searchscout.com 16. Fastclick 17. Premium-offers.com Scary.
Sat 31 Jan | anonymizer | Alexa is a pretty neat service, but really isn't a fair demographic of net users -- only those users who have intentionally installed the Alexa toolbar software in IE are ranked, and obviously that that means a very small cross section of internet users.
Sat 31 Jan | Koz | > > Certainly not the most popular ones. What, like http://slashdot.org/ it may be filled with lunatics, but it's certainly popular.
Sat 31 Jan | www.marktaw.com | Good point about slashdot.
Sun 01 Feb | Shlomi Fish | http is also a useful meta-search as many people say http://www.foobar.com/ in their links.
Sun 01 Feb | bamm | That Alexa has spyware sites among *their* users top 20 shouldn't be too big a surprise, given that only the people susceptible to the spyware phenomenon will have installed the Alexa toolbar.
Chars 128 to 255, Notepad and Windows edit control | Sat 31 Jan | S. Tanna
I have an app which generates data including the funky characters ASCII 128 to 255. Eventually it should show them in a multi-line edit control Look at the output in DOS EDIT, its fine Look at the output in Notepad, and certain of the funky characters magically disappear (most dont but enough to wreck the output) I havent yet test on a multi-line edit control, but as notepad is basically a window with save round one of these controls, Im worried (and expect) to see the same behavior Is there some rule in Windows about chars 128 to 255, which ones get lost and when? If so, where?
Sat 31 Jan | S. Tanna | Scratch this question Turns out there is a wierd bug in Notepad, but even this can be worked round I had gone into Panic mode, on the fear, that my user interface design was about to need to be redesigned.
Sat 31 Jan | WildTiger | You definitely use Unicode and 16bit character representation so why worry about 128-255 range? :)
Sat 31 Jan | S. Tanna | I need to run on Win95 and up The output is itself 8-bit data, as it's final destination ain't in Windows.
Sat 31 Jan | Chris Nahr | You're out of luck. Code positions 128-255 are _not_ ASCII characters. The ASCII standard is a 7-bit standard that only goes up to 127. Windows has a gazillion different code pages that each give different meaning to the upper 128 characters, and outside of Windows there are another gazillion different standards. Portability for non-Unicode 8-bit characters does not exist. You'll have to identify one code page that works for all your target machines, and stick with that. Very likely you'll be able to use only a subset of the 128-255 range, though.
Sat 31 Jan | Simon Lucy | Notepad is the wrong particular hammer in this case.
Sat 31 Jan | S. Tanna | Oddly enough, I don't care what these characters look like, at all. They merely have to appear as something in a multi-line edit control, and be preserved through a clipboard copy and paste. They seem to be, even in Notepad. Like I said the problem is solved. What had me confused for a brief moment, was how Notepad handles a sequence of CR LF CR (i.e. extra CR). There is definitely some wierdness in there which can run thru to alter other parts of the text, like these characters.
Sun 01 Feb | WildTiger | I would not be surprised if this characters could turn into garbage during copy/paste if some of them are not supported in default code page. The answer actually depends on what are you trying to achieve - if you know what encodings are deafult for your clients then no need to worry. Otherwise verifying that any character from 128-255 makes sence in all (including DBCS) encoding will be fun.
re su me | Sat 31 Jan | anonymous
I may be wrong but making all candidates to have a perfect command of English will cut off lot of smart programmers and after all fog creek writes programs ... Instead i would look for persons that showed they can do something extraordinary (and I agree coursework is not enough ...)
Sat 31 Jan | Jimmy Jo-Jo | Sounds great - let us know when you're hiring!
Sat 31 Jan | sgf | These days, <note space after comma>a decent command of the English language *is* extraordinary.
Sat 31 Jan | anonymizer | Here in Canada there has been a bit of an unroar because many highly skilled immigrants are lured to the country with the promise of great opportunities, but when they get here they find either that their credentials don't carry over, or that they find it extremely difficult to get a job in their given field (and often end up cab drivers, etc). While this seems like a horrible injustice, and it really is, there is a free market lesson to be learned from it: One of the most important professional skills, in many professions, is the ability to clearly communicate with others. Being the best code slinger in the world, or medical doctor, or mathematician, is offset by the confusion and inability others might have communicating with a prospective employee, possibly negating other advantages. This free market factor can be seen by the incredible number of job ads nowadays that add the bold disclaimer 'Must have an excellent English skills'. How can this be solved? My personal opinion is that it needs to be made clear that English (verbal and written), or French in Canada, is incredibly important to your professional success.
Sun 01 Feb | Sum Dum Gai | One has to question how much of the importance is for getting a job and promotions, and how much actually relates to ability to perform the job well. Very few jobs are won purely on merit, and I think you'd find that although communication skills are important in doing the job, there's probably a disproportionate emphasis placed on them in the job market. After all, I'm sure everyone's heard the horror stories about people who have been hired for senior positions without having even the most basic knowledge of their field.
Embarassing OOD / performance question | Fri 30 Jan | Too Embarassed to Say
Ok, apparently Ive been living in a cave, and I dont grok how to handle this trivial OOD issue thats been bugging me for a while. Frankly, this is embarassing. RTFM is an acceptable response, BTW, so long as you provide a link ;> Lets say, oversimplifying incredibly, I have two data tables name Employee and Company, respectively. Obviously, the employee table has a foreign key back to the company table. I want to create two classes, also called Employee and Company, as well as a collection or array class EmployeeList. For the sake of this exercise, the language is c#. So, Company.ID Company.Name Company.StreetAddress Company.City ... Employee.ID Employee.FirstName Employee.LastName Employee.Phone ... If I understand correctly, I should create a method GetEmployee or property Employee that would return a reference to the company the employee works for. The Company class will take care of querying the database to populate the instance with the appropriate data. Ok, no sweat. But, if I want to instantiate EmployeeList, say for a paginated list display, Im going to instantiate maybe 50 of these Employee instances by means of passing in a data row from a DataTable. One DB read, many instantiations, still cool. However, let’s say I also want to show the company name and ID (and nothing else about the company) each employee works for as part of the display. Do I hit the database 50 additional times simply to get the company object? Alternatively, do I just add the company name and ID as a read only property to the Employee class? If the latter, am I doning a Bad Thing in OOD? If the former, ouch. If some other way, I’m open to suggestions. Thanks.
Fri 30 Jan | Too Embarassed to Say | Aaaargh! 'GetCompany' - Not 'GetEmployee'
Fri 30 Jan | Dennis Forbes | If the optimal design for the orchestration between databases and objects was so clearly defined then it'd be a data-object generation wizard, so your pseudo humility seems oddly misplaced. As it is there are a lot of different methods, and a lot of different justifications for each, so you're not going to find the one true way. Get yourself an OO database and save yourself the mental anguish of not walking in lockstep with the BigMac chefs.
Fri 30 Jan | Dennis Forbes | http://www.intersystems.com/cache/index.html
Fri 30 Jan | .NET Developer | RTFPOEAA (Read the fabulous Patterns Of Enterprise Application Architecture by Martin Fowler) You will realize that there is not one true way, and that it is not very difficult to know that you shouldn't do stupid things like accesing the database when you could use a cache. I suppose that there is one truth: the best way is not the easiest.
Fri 30 Jan | HeWhoMustBeConfused | Why go through all this trouble to be an OO fashion victim, when almost any DBMS will do all the work for you? select company.id, company.name, employee.firstname, employee.lastname fromp company,employee where company.id = employee.companyId order by company.id, employee.lastname; If your programming environment is a little brain-dead, you could also implement this query as a view in the DBMS, thus treating it as a single table.
Sat 31 Jan | Brad Wilson | You've run across what I consider the single most important truism for people who use objects to access database records: Object models suck for reporting.
Sat 31 Jan | Vince | HeWhoMustBeConfused, You are retarded. He's asking how to handle this in the Object Model. We all know how to do joins. TooEmbarrased, this is an *excellent* question, imo. This is an issue thats run into quite often. Sorry, there are no short answer that I've seen. My two suggestions (which you basically already have talked about, nothing too insightful here) If very few other parts of your application would access the company entity object, I would have a 'mass loader' utility class or something that would load all the companies and their respective employees using the oh so brilliant 'join' query that HeWhoMustBeConfused posted, but get all the data from each of the company rows and populate their seperate objects. Unless i'm mistaken, theres almost no performance difference when accessing more columns in a table. On the other hand, if your 'company entity' is being accessed throughout many places in the application, (such as when users are logged in, it may load their company data into an object), I would say don't worry about the mass loading, and just have each of the entities load themselves when need be. The reason being, if they're already cached, the performance hit you'd take by running multiple queries should and could be negated by the fact that a good ammount will already be loaded and chaced. Hope this helps.
Sat 31 Jan | Simon Lucy | The dichotomy is this. Those familiar with databases (and the particular database they're working with) see nothing wrong with keeping data the same shape it is in the tables and result queries. Those developing where there is no underlying knowledge of the database need some kind of abstraction and as most people are stuck with a C++ OO model of abstraction they naturally want it in those kinds of classes. But do you really need an Employee object? Do you need to create a class that has all of the methods and properties that you'd ever want to do with an Employee object? Would you want the same kinds of access to a amend the address property as to access their salary level, or who they report to, or their disciplinary record? No, naturally not. So perhaps the object you need to manipulate is not the Employee abstraction, but the Form (or Report), that you want to manipulate that data with. The Employee Form. Now the members of that form are the fields and methods on that form and they are bound to the data that relates to the Employee. Whether that data is directly a field on a cursor or its a member of a collection is irrelevant. Getting and putting the data are abstractive methods that happen as the form opens, is navigated and then as the data is saved by the user or the form is closed. Now you might say, but this abstraction layer between the actual Employee data and the UI is the Employee object. But it isn't, its how all the Forms (and Reports), are constructed. In an abstract sense the Form doesn't care about the structure of the data the way in which the data is retrieved and updated is going to be the same for all data sources. In large scale systems I'd probably favour a further layer of abstraction where the data was instantiated as a cursor by calling a stored procedure, and similarly when it was updated. In native Visual Foxpro, I use Codemine to give me the Data Management objects that do all that for me. I populate the Data Environment at the time of design (and I also build it at runtime for specific purposes), and then layout the form the way I need, to do whatever it is I need to do. Everything else is pretty much taken care of apart from some wrinkles as in navigating the same dataset you have buffered without committing that data. In straight line performance there isn't going to be a lot of difference the same latencies are going to exist. But in terms of robustness and stability the less direct reliance is placed upon the specifics of the database the better.
Sat 31 Jan | Simon Lucy | Oh, and additionally.  If it isn't a form based process but some kind of batch or helper process its exactly the same.
Sun 01 Feb | Zealot | We did it by defining specialist methods on our data access objects that basically bypass the objects themselves - and simply return a recordset for display purposes.  If the user needs to do anything with the contents of that recordset the objects in question are instantiated from the ids within the recordset
Sun 01 Feb | Gwyn | I ran into this and it puzzled me for quite some time. I asked lots of people but noone had any good methods of doing this. However, I then did an OO design course and 3 types of class were described: Entity (e.g. company, employee) Control (classes that 'do' things) Boundary (classes that interface with the enviroment, e.g. a mouse or a keypad) I wanted to find a solution that did not compromise OO. Using adhoc recordsets or creating psuedo objects to represent certain queries is actually breaking encapsulation, I think unacceptably. The solution I came to was to have the entity classes as you described, e.g. company, employee and then to have control classes that are used to persist those entity classes to a permanent data store, like an RDBMS. For example one could have a single control class called 'DBManager' which contains, in VB terms, 'shared' methods and is non-instatiatable (is this called 'virtual' in C++/Java?). The actual DB connection details would be held in a separate entity class (e.g. 'DBInfo') which is passed to each method. The DBManager is the interface to the database. It has methods such as GetCompanies, GetCompany, GetEmployee, GetEmployeesForCompany etc. This, I think, is the most OO friendly method. You would expect that the Employee class would have a reference to a Company object but rather than the Employee containing a property of type Company I would have the Employee contain a property of CompanyID which is simply the key of the Company (otherwise when you get an Employee object, you also have to get a Company object to put in the Employee object) If you then want to do certain queries, like get employees (matching criteria) and the company details of the companies that those employees work for, then you can set up a method on the DBManager class, e.g. GetEmployeesAndCompanies(byval EmployeeFilter, byref Companies, byref Employees) The DBManager then issues the appropriate JOIN query and returns a collection of employee objects and a collection of company objects. All from one DB read. The client can then run through the employee collection and get the company for each employee from the company collection. The benefit of this approach also means that if all 50 employees worked for the same company you would have 50 employees and 1 company returned, which is the least possible data you could have. Of course if Company has 100 properties and you only want two of them then you may want to avoid populating a full company class. But you can do this by creating a brief company class which the full company class inherits from. I think this approach is the most encapsulation-friendly. Company and Employee are well encapsulated and the database is encapsulated by the DBManager class. You could argue that the DBManager has some information about Employee and Company, and it may well do if it is to understand how to query for them, but I think this is a more minor compromise. Where you have cross-object queries it would be very hard to encapsulate this perfectly. But at least the entities are perfectly encapsulated themselves. Happy to be challenged but I've written a large app using this approach and it's worked extremely well.
Sun 01 Feb | Gwyn | Incidentally Dennis, I looked into Cache. Whilst it looked good the biggest issue for me was the integration with non-Cache technology (works fine in its own Cache server pages), for example .NET. I also found a new bug whilst playing aound with it on the introduction course so I wasn't convinced in the maturity of the product!
Giving Notice? | Fri 30 Jan | No Exit Interview for Me, Thanks
Okay, so Im in the enviable position of being able to give notice at my current job. I dont like the job. I dont like the boss. Id really like to stick it to them and give no notice whatsoever. But, I dont want that reputation. However, are there any ways I can offer two weeks but be almost entirely certain theyll refuse? I dont want to be a jerk or do anything really unethical. I just want to get out of there.
Fri 30 Jan | Koz | I went to work for a competitor, out the door the same day. So you could try telling them that. Of course I had no restraint of trade / non-compete in the contract. If you do have such a clause you might get sued. You could apply for 2 weeks leave then resign.
Fri 30 Jan | M | If you can't be courteous and professional, then go on "personal leave" and quit during it due to personal reasons.
Fri 30 Jan | Mongo | You can't really win this one. You're entirely correct, if you do this, it may well come back to haunt you. What would you do if someone asked you for a reference about someone who did that to you? It's not worth the risk, and it's only two weeks, and it really is the right thing to do. One ray of hope. I gave notice in November and my evil boss at that time reacted by responding, and I'm not making this up: 'Listen to me very carefully - FUCK YOU!'. I left within the hour, very, very happy. Don't try to create a confrontation, but if one begins, you have _no_ obligationto put up with it at that point. Good luck.
Sat 31 Jan | Sam Livingston-Gray | Some companies, when you give notice, will have you escorted out the door on the spot as a matter of policy. Others will recognize that they're not going to get much out of you when you've got 'short-timer's disease' and not try to hold you to 2 weeks. But you should still offer to stick it out. A resume is all about eliminating reasons for a potential employer to reject you. By the same token, the way you handle your exit from this company may, as you surmised, affect your reputation with the other people you leave behind. You may not like your boss, and your boss may not like you... but maybe you can get a glowing reference from a teammate, or from that key ally in another department whose widget tracking spreadsheet you cleaned up, saving them hours of tedious work every day.
Sat 31 Jan | Sam Livingston-Gray | ...on the other hand, if you're working for Entrepreneur, make sure you swipe all his source code before you go.  ;>
Sat 31 Jan | christopher baus (www.baus.net) | ...on the other hand, if you're working for Entrepreneur, make sure you swipe all his source code before you go. ;> No matter how off the cuff it might be, that advice really pisses me off and speaks volumes about the mentality of certain people in the industry. What entitles a developer to the source that he or she was paid to develop? There is a good chance that the person taking the code made minimal contributions to it anyway. I've seen this happen first hand, and it was complete bullshit. It almost put the company out of business.
Sat 31 Jan | no name | Sheesh, you'ld think people would have learned by now, but I guess that's too much to hope for. For future reference, there's a whole lot of people who don't actually recognise humour when they see it, so you need to clearly label any humerous statements. Sure, it's kinda insulting to the smarter people around here, but we're clever enough to read around the tags.
Sat 31 Jan | Sam Livingston-Gray | Oy.  Yes, that was humorous and not intended to be taken seriously.  My first post was advice.  My second post was humor.  KNOW THE DIFFERENCE.
Sat 31 Jan | www.marktaw.com | Christopher, Sam was referring to a post by Enterpenuer in which he said he hired 2nd rate coders and didn't want them stealing his code. If you read the thread you'd know it was a joke.
Sun 01 Feb | Ch 10 | There is no problem with keeping a copy of any code you have written as long as you have written it and are not just swiping somebody elses work. I keep copies of my code as professional notes, many times I reuse code I have written without compromising the people I wrote it for in any way whatsoever. The notion of working somewhere for a number of years and leaving without any trace of your work is foolish.
Sun 01 Feb | Sam Livingston-Gray | Technically, it's not okay to keep copies of your work if you created it for someone else; it's usually called 'works made for hire.' As for the other thread I referenced, it's here: http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=109792&ixReplies=25
Cluetrain Manifesto | Fri 30 Jan | Jeremy
Hey Joel, If youre big on people sounding like people in their resume cover letters (no argument from me there), then perhaps the Cluetrain Manifesto should be on your book list. http://www.amazon.com/exec/obidos/ASIN/0738204315 The authors argue (among other things) that the web is forcing office workers to drop the outdated professional facade.
Fri 30 Jan | www.marktaw.com | Isn't it available online somewhere?
Fri 30 Jan | Jeremy | http://www.cluetrain.com/
Sat 31 Jan | ajs | ...and now the dot com bubble has burst, what are odd of that happening?
Sat 31 Jan | ajs | That odd, I could have sworn I typed odds.
Sat 31 Jan | Bored Bystander | This is another one of those 'everything's changed because of the internet and we're on the inside track because we're l33t and you're a stupid unemployable turd' books. Look for it at your unloved books reseller at the regional outlet mall near you. Many of the predictions of this book have come to pass, but most of the information in it that is 'strategic' is only useful for large corporations dealing with many thousands of consumers. On a personal level, the 'insights' in the book are readily apparent to anyone who isn't absolutely stupid or autistic and who pays attention to the advent of online shopping and socializing. Someone who 'really' needs to get a clue - the extreme elderly off in their own world of reminiscing, or the pathologically traditional business types who are fixated on faxing and snail mail and who reject having an email address for their business, as examples - will absolutely not comprehend this book's message and will find the writing style abrasive and hostile. (I dealt with an ex- big iron DP manager turned agency recruiter in the late 90s who smirked whenever I suggested he get an email address. He told me email was a toy and useless to him. That's a concrete example.) As usual, the message has no audience. You either just know, or you 'can't' and have no ability to learn. No middle. And I could do without the 'tude.
Sat 31 Jan | old fart | ...and I could do without people using words like "'tude"
Sat 31 Jan | Bored Fart | And I could do without people who could do without people using words like "tude".
Sat 31 Jan | Alex Chernavsky | See also the 'Gluetrain Manifesto': http://www.gluetrain.com/
Sat 31 Jan | Jeremy | Bored Bystander, if the stuff in the book is too obvious for you, that's great. No, seriously! It means you can make enlightened decisions. We need more people like you. However, the fact that there are so many tech companies who treat the customer as the enemey, who build a wall between customers and employees who are both excited about the product, and who only talk to the customer using PR and marketing spin -- I think makes the ideas in this book non-obvious to many people. I work for a large software company where a lot of this is going on. I chuckle when I see the company news letter because I know it's wrong. The right information is in Bob from marketing's internal blog. I get peeved when nobody wants to share information because information is 'power'. Then I find someone who can query the database directly. I've found much of the book to be true to life and very relevant.
Sun 01 Feb | Bored Bystander | Jeremy, I guess I got impatient with the 'everything has to be different' attitude in the book. You're correct, there are still *many* boneheaded hierarchical top-down organizations even in the technology area. The book makes an excellent point which is that worthwhile knowledge is often organically distributed, not forced through rigid channels. But - I think what is distracting about books like this is that one is to to believe that nothing worthwhile was invented in the business world prior to the internet, and that there is no conventional wisdom that is worth paying attention to. Many common situations in business still call for a 'chain of command', procedures, and a semblance of authority. IE: Weblogs and BBSs are just dandy for disseminating applied knowledge and qualitative understanding but they're unsuited to situations such as employment, contract negotiation, contracts, or the law in general. This book is just an adjunct to understanding commercial practice in the internet age, not a comprehensive solution.
Sun 01 Feb | Jeremy | True, they're challenging a lot of conventional whisdom, but I didn't get the impression that the authors were pushing the idea 'that nothing worthwhile was invented in the business world prior to the internet'. The book tackles a very specific set of topics. Casual emails have replaced 'professional' memos. That has an impact on business. Customers discuss your product in online forums. That also has an impact. Internal blogs have made a joke of the corporate newsletter. That impacts business as usual, too. And so on. I'd also like point out that this isn't a book on 'employment, contract negotiation, contracts, or the law in general.' I doubt the authors intended to write such a book. Instead, they've put together a very interesting read on how the web has changed business. Bored Bystander, you expect too much from this book. If you look at 'The C Programming Language' (on Joel's book list), you'll realize that it doesn't claim to be the only way to write software and eclipse all that came before it. Nor is Cluetrain the only source of business advice. For best results, use it in combination with other books and a lot of common sense. BTW, Alex, great link! Very funny.
Sun 01 Feb | ajs | Bored: Look for it at your unloved books reseller at the regional outlet mall near you. Hey, that's where I got my copy! $AU5.
Sun 01 Feb | Bored Bystander | Another issue I take with Cluetrain is that while these changes are pervasive, they are not yet ubiquitous, they are not all for the good, and they are in the process of being shut down and/or controlled. IE: I dispute the social penetration of blogs and forums beyond youth and geeks. Many people aren't going to be bothered to read blogs to evaluate products or company statements nor to participate in online forums. Most business owners I personally know, and many professionals and affluent consumers, would never spend more than an occasional token amount of time reading blogs or paying attention to web boards. Most people are busy with survival activities. The internet is a form of entertainment that requires a big time investment to leverage. I would posit that the internet may simply make some companies more accountable in some instances, because it permits new uncontrolled avenues for knowledge to diffuse. I would also posit that the consumers and the employees of said companies would tend to be in the technology or hip, youth oriented product arenas, and those companies would have to not care too much whether they are being discussed in cyberspace. IE: more traditional, top-down, basically 'intolerant' businesses can track down and discharge employees who author blogs that defy their employee agreements. They can also sue consumers who post disparaging information to online forums, essentially shutting down free speech with superior economics. Cluetrain discusses the potential of the internet, but it does not address the inevitable countermeasures. What if companies decide to fight fire with fire and set up 'stealth marketing' campaigns via supposed grass roots blogs and forums? Then you have the worst of all possible worlds: a supposed 'counterculture' that is a paid shill, legitimized by association and not clearly just advertising. Agreed, Cluetrain is a good entertaining read. But it's describing a culturally marginal phenomenon that is in the process of being co-opted and controlled. I would compare the internet to the radio waves prior to the advent of the FCC - that was the 'wild west' too.
Sun 01 Feb | Jeremy | 'They [basically 'intolerant' businesses] can also sue consumers who post disparaging information to online forums, essentially shutting down free speech with superior economics.' Bored, this comment (and others) makes me wonder if you've really understood what the authors are saying. I don't care if you disagree, but you seem to have not noticed topics that are covered in great detail -- over several chapters. You're suggesting the book isn't entirely correct because 'it does not address the inevitable countermeasures', but it's these countermeasure that the authors ARE discussing. They spend chapters describing how this kind of activity is very harmful to companies. It's basically building a wall between customers and the employees -- two groups who often care about the same thing. One group spends most of their waking life designing widget X, and the other group is very interested in finding the best widget X available. Instead of engaging customers in a discussion, they're held at arms length and considered the enemy. Even if a company could find every disparaging comment and point the lawyers at the person, eventually you wouldn't have many customers left. Word would get out that the company likes to sue paying customers... and that's exactly the type of behavior the authors are arguing against. As for the effect of INTERNAL, personal web sites (I'm not talking about rogue employees posting confidential inforation on public sites), I know its positive because I see it every day. Many people where I work have turned to this because corporate information is either guarded by those higher up, or spun and totally useless. This way they can get work done and be productive. And don't get me started on 'the internet is a form of entertainment that requires a big time investment to leverage.' Do a google search on any product name and you'll get back a bunch of comments on it that don't conform to the company's marketing speak. Heck, just go to epinions.com! Total time: 2 minutes. 'Most business owners I personally know, and many professionals and affluent consumers, would never spend more than an occasional token amount of time reading blogs or paying attention to web boards.' I hate to point out that affluent business owners make up the minority of consumers. The majority of us (middle and lower class) care which car or camcorder we buy with our money. More and more are turning to the internet for research. That trend is well documented. 'I would compare the internet to the radio waves prior to the advent of the FCC - that was the 'wild west' too.' Except radio, like television, is a one-way medium where only a select few are given a voice. The internet changes that. Anyone can setup a website and put their opinions and ideas out there. The authors make this exact comparision... but you seem to have missed that, too. The fact that you've posted these comments in a place where business owners ask 'Has anyone evaluated [the Salamander .NET linker] in depth?' puts you on shaky ground. These discussions happen online thousands of times a day. Business can either embrace that (as Cluetrain suggests), or try to fight it. I don't think any business can successfully fight it.
COM to .Net Interop question | Fri 30 Jan | Wayne
I am making a COM DLL that will be used in .Net, VB6, and possibly other languages that can use COM (but mainly .Net + VB6). The DLL is being built in VB6. I have not dedicated serious time to learning .Net yet, so Im wondering if anyone can tell me if theres anything that I should look out for (regarding how .Net uses public interfaces of Interopped COM objects). For instance, are there any datatypes that I should avoid exposing, or any techniques that just dont work in .Net (like ParamArray or Optional arguments, _NewEnum, etc.)? Thanks.
Fri 30 Jan | Rob Walker | Avoid optional arguments. They usually cause more headaches than they are worth. .NET doesn't support optional arguments, you have to use System.Type.Missing when invoking methods you don't want to supply all the parameters for.
Fri 30 Jan | .NET Developer | Here is something that might help. http://msdn.microsoft.com/netframework/default.aspx?pull=/library/en-us/dndotnet/html/manunmancode.asp I also highly recomend browsing (no human being is able to actualy *read* that brick) the excelent book on COM Interop by Adam Nathan. It has a chapter called 'Designing Great COM components to be used from .NET' or something like that. Great, great book. And regarding the optional parameters thing, I am not sure (I am a C# guy), but I think that Visual Basic .NET is compatible with methods that use optional and default parameters. Disclaimer: I know that .NET does not support optional parameters at the CLR level, mailnly because they collide with the idea of method overloads, but I once read that VB.NET does a good job on backwards compatibility with optional and default parameters at the language level. If you will be using VB6 components from .NET I recomend VB.NET. (If not, stay away from that crapy language!! ).
Fri 30 Jan | Wayne | How about returning a Type or a Variant Array from a public function? I usually don't use Types in the public interfaces because you can't get to them from MS Script, I'm just curious. Also, what about having an object who's instancing is set to Global? Will it work the same in .Net?
Sun 01 Feb | Gwyn | VB.NET DOES support optional arguments
Design Discussion | Fri 30 Jan | Steve
Youre designing a database ... you need to store appointments (a thing that is scheduled to occur at a given datetime). Some of these appointments may elect to recur based upon some interval (everyhour, everyday, everyweek, every 2 days, every 2 weeks, every whatever). Bastards. Sometimes, those recurrences may elect to be cancelled or have the datetime altered, but the baseline recurrence should remain. Bastards! What pointers could you offer?
Fri 30 Jan | :) | char *pAppointment;
Fri 30 Jan | Martin Fowler Plugger | http://www.martinfowler.com/apsupp/recurring.pdf
Fri 30 Jan | Wayne | I had to design a system to do this once. I was given about a month to do everything (Requirements, DB Design, UI, etc.) so I did the simplest thing possible. Here are the main fields from the 'Appointments' table: ScheduleID int AppointmentID int IDENTITY ApptStart datetime ApptEnd datetime Status int SetDate datetime SetBy int Locked bit ... other fields specific to application... ScheduleID is a foreign key to the 'Schedules' table, Status is a foreign key to a lookup table of Statuses (0 = Available, 1 = Set, 2 = Cancelled, 3 = Expired, ...) (a schedule is just a label for a set of appointments, and might have some other info about who can set appointments in that schedule, etc.) SetDate is the date that the appointment was last set and SetBy is a User ID of the person who set the appointment. When someone wants to create new, 'available' appointments, your UI asks them 'Is this a one time appointment or recurring'. If it's one time, you create one record int the Appointments table. If it's recurring, you collect the data that indicates the range/frequency of the recurrence and immediately create ALL of the available appointment records that satisfy that criteria. Then, you wait for people to set the appointments. For ideas on how the UI should look for recurring data I looked at the Windows Task Scheduler and Outlook. Another way would be to store the range/frequency data of recurring appointments instead of creating all of the appointment slots up front, but I found this to be too confusing and a waste of time.
Fri 30 Jan | Wayne | Oh yeah, and if you need some event to take place based on an appointment being set what I did was just make a Windows Service that wakes up every 1 minute and runs a query to check if any 'Set' appointments time has come and processes them. You can also make it 'retro' process appointments that were Set but not processed when the service starts up, in case the Service or the DB died at any point.
Fri 30 Jan | no name | tblAppointments sDescription - VarChar dtScheduled - Date/Time iRecurIntervalDays - Long iRecurIntervalHours - Long bRecurring - Boolean bReccuranceCanceled - Boolean
Fri 30 Jan | Albert D. Kallal | You got some good comments here already. A few things: For repeating events, do NOT make multiple entries. One record, with the start date, end date, and the time/occurrence is the way to go Fire up Outlook , or even better use your palm pilot, and take a look at how the repeating appoints are done (way cool!). If you try and modify a repeating appoint in palm (say, something really cool like the 3rd Thursday of every month), then you are prompted to apply the change to the current appointment, or “all”. Obviously if you hit all, then only the ONE appoint record in the database is modified. If you whack current, then obviously new record is crated in the appoint database The beauty of storing start/end and the repeating factor means that you VERY few records in the database. And you can do cool things like that 3rd Thursdays of the month, but that falls on a different date every time. It also enables you to set appointments or remember for things like daylight save time. In my palm, to setup a reminder for Spring daylight, it reads: The last Sunday of every 12th month The above text statement is what the palm spits out (cool eh!). So, the setting was: Every 12 months (note that the number 12, and the “months” can be changed to Day, Week, Month , Year. Repeat by DAY / DATE Here I select “day” in this case Sunday No ending date set. The above thus means: The last Sunday of every 12th month, starting on that Sunday when I entered the repeating task. The above example is for Oct 31, 2004 So, your design should allow changes in the Interval: Day, week, Month, Year. The week interval will thus allow you to say the 2nd week of every month (or every year, or whatever). Albert D. Kallal Edmonton, Alberta Canada kallal@msn.com http://www.attcanada.net/~kallal.msn
Fri 30 Jan | Wayne | Yeah, I admit making all the entries up front can take up more table space than you want and is not very scalable, especially if you have recurring events that have no end date! Fortunately for me, we decided to limit it to 1 year max for our simple application (a phone based interview scheduling system).
Fri 30 Jan | Tom H | Why not just use the same format as cron? You can have entries for both scheduled and cancelled entries, they are all stored the same. http://www.nncron.ru/nncronlt/help/EN/working/cron-format.htm
Fri 30 Jan | Philo | 'The beauty of storing start/end and the repeating factor means that you VERY few records in the database' Conceivably the second-worst reason for a design decision (after 'The CEO said one record per recurring appointment.') Let's look at the suggested record format: 4 ints, 3 datetimes, and a bit. That's about 40 bytes/record. Call it 64 bytes/record - if you have a THOUSAND repeating appointments, that's [drum roll] less than 64k. Not a big deal. The *problem* with a single flagged record - what's the sql for testing for a conflict with existing appointments? Philo
Fri 30 Jan | Wayne | The record per occurrence design has another strength too, in that you can generate a bunch of appointment records and then selectively delete them. For instance, Sally generates appointments for 1 year based on a normal schedule...Weekdays 9-5, appointment per hour except for lunch. Now you have approximately 1890 available appointment records in your appointments table (not much for an enterprise DB Server). Next week when Sally can't make it on Wednesday morning, they delete or flag 3 records from the appointments table and you're done. The advantage is that the logic is very simple compared to what you have to think of to enable 'atomic' exclusion using the method where you only store the date range/frequency information.
Fri 30 Jan | Wayne | Depending on your app, this might work too (it worked for us): Allow users to define a 'template' which consists of a single day's worth of appoinments. A typical user might create two templates called Weekday and Saturday. Once the user defines the template, you can allow them to choose that template as a basis for generating appointment records within a given range and on selected days of the week. So if the 'Weekday' template consists of 7 - 1 hour appointments (9AM-10, 10-11, 11-12, 1-2, 2-3, 3-4, 4-5PM) and the user says 'Generate me some appointments using that template, for 1/1/2004 - 1/1/2005 for weekdays only', you create a bunch of appointment records. Then, he can go and delete all the appointments that happen on Holidays, Vacations, etc.
Fri 30 Jan | dir at badblue dot com | Take a look at Outlook's header file, as if you were going to perform automation on it. That will give you a great sense of the data structure. Suggest you also create a class called TaskSpan that, given a beginning and ending timestamp... will read the schedule and recurrences... generating the appropriate appointment data. p.s., I've done this and it works great. No duplication of recurrence data whatsoever.
Sat 31 Jan | Simon Lucy | There are other reasons for keeping the actual appointments as individual records (though it is good to keep the template of 'every third thursday' and that's not hard to calculate since there's only one thursday in a week and they're all 7 away from each other). Its not unusual for periodic meetings to get changed, if you change the next meeting its not going to affect any others which have already been created. But the best reason is that its the closest model to actual reality. For appointment systems, time recording, shift patterns and the rest, I store the date and time of the event as the elapsed seconds that year, along with the year itself. That makes calculations on overlaps and such much simpler and means indexing is cheaper. Of course there's a payment to be made in converting in and out but its worth the effort.
Sun 01 Feb | Gwyn | I support the multiple records too. And as another reinforcement I believe this is what happens in Lotus Pants * (aka Lotus Notes) I can't see how you can make it work with a single record. And of course I don't buy the space saving! * Pants - for the benefit of the American audience I should point out that pants=underwear. It's the most polite way I can refer to the Lotus BagOfShite product.
Sun 01 Feb | veal | Always strive to model as close as possible to the actual situation, and you'll minimize your grief. (1) Listen to your clearest description in English, and you'll probably find the best data arrangement. (2) Adjust your programmatic perspective on the problem to allow for the best data arrangement. In this case that means to record the recurring event as a single entity. When the event must be moved or dropped, such as to move it around a holiday, store that as an exception entity. To know whether today holds the event, select applicable recurring events, apply any exceptions, and you have the answer. (If you hadn't already been thinking along the lines of 'does today hold the event' as the primitive programmatic operation in this problem, make the necessary adjustments to your code.)
Submitting Job Applications in PDF format | Fri 30 Jan | Fred Ngo
Hi everybody, What do you think about PDFs as a job application format? When a job posting simply says, please send your cover letter and resume to info@company.com without any further format guidelines, is it acceptable to submit a PDF encapsulating the cover letter & CV?
Fri 30 Jan | no name | no. PDFs seem like a good idea, but in reality they are annoying. they launch a separate browsing window, and are difficult to search. just send ascii or word.
Fri 30 Jan | Fred Ngo | Any HR folks care to chip in?
Fri 30 Jan | HR Person. | no. PDFs seem like a good idea, but in reality they are annoying. they launch a separate browsing window, and are difficult to search. just send ascii or word.
Fri 30 Jan | .NET Developer | A lot of users have MSWord. Can't say the same for Acrobat Reader. Even I, being a 'power user', find PDFs more cumbersome to open and read that .docs. I would apply the SHIFT+DEL policy to your job application. But I am not a HR person. YMMV
Fri 30 Jan | no name | From personal experience, there is a good chance the HR person screening the applications won't be able to open a PDF.  They won't know what a PDF is or how to get and install software to view them.
Fri 30 Jan | Tony Chang | A lot of users have Acrobat Reader. Can't say the same for MSWord. Seriously. I have never seen a post-Win 3.1 or post-System 7 computer without Acrobat Reader installed. Never. But I have seen many computers without MS Word.
Fri 30 Jan | Tony Chang | 'They won't know what a PDF is or how to get and install software to view them. ' Making this a PERFECT way for competent developers to prescreen companies for absolute stupidity. You do NOT want to work for a company that does not know how to open a pdf file. Trust me on this one.
Fri 30 Jan | HR Person. | The point isn't that companies are too stupid to figure out how to view PDFs, it is that there is no good workflow for viewing PDFs. I agree that you probably don't want to work for someplace that REQUIRES the resume submitted in word, but it seriously is annoying to view PDF files if you receive 100 resumes per day. (which we did, at a completely rinky-dink 12 person web development shop I used to work for)
Fri 30 Jan | anonymous | At my company we spend our days on unix workstations. That means No MS Word, Yes Acrobat. Every single Tech Note or Data Sheet that I come across is in PDF. The market penetration can't be that bad. Also, MS Word costs money, Acrobat is Free. Then again, I wouldn't expect the HR department to run on unix workstations.
Fri 30 Jan | mb | what 'workflow' does Word have which PDF does not? the internal routing and email features of word? something else? does it work if the users uses rtf?
Fri 30 Jan | no name | there are a bunch of resume processing systems that run on top of office.
Fri 30 Jan | Philo | 'Making this a PERFECT way for competent developers to prescreen companies for absolute stupidity.' No, you're prescreening companies based on the stupidity of their HR dept. In a larger company, your only interaction with this dept may be the application process. BTW, one big differentiator - are we talking about a MS shop or a Linux shop? Maybe that's the source of the difference of opinion. In applying to MS shops, I've never had an issue with Word, but my attempts to send pdf's lasted about five days (before I got tired of resending in Word) Philo
Fri 30 Jan | pds | This is just too crazy. I'm reading this with interest as I prepare my resume. Guy#1: I want to use PDF, is that ok? Guy#2: No, most people won't be able to use PDF to insert your resume into their resume database. Also, PDF is annoying. Thus, yours gets deleted. Use .DOC Guy#3: We run Unix, so we can't even open .DOC files. Use PDF Guy#4: .DOC gives HR the superfluid ability to slide your resume right in, for some 'resume processor' addons to Office. Use DOC Everyone(unspoken): ASCII-text looks unprofessional, so don't use it unless specifically asked to. Don't use plaintext if possible The crazy thing is, Guy#2 thinks that using .PDF will get your resume deleted, and Guy#3 states that using .DOC will get your resume deleted. If I use .RTF, I run the risk of having the HR person misinterpret my attachment. Otherwise, I'd say it's the safest bet. Pete (will be distributing his resume as a .DOC unless otherwise specified)
Fri 30 Jan | FredF | HTML or RTF. Basic ASCII is just too crude, formating-wise.
Fri 30 Jan | www.marktaw.com | I propose a new .res format for resumes here and now. The content & presentation will be seperated within the file for easy processing, printing, and over-all brain-dead HR guy reading. .res readers (should open in the next version of MS Office) should be able to hook in to a corporate database, hotjobs, monster, etc. making finding someone who fits a certain critera as easy as typing in a few keywords. This way we can end this discussion once and for all... That is, until we discuss whether or not the .res format has helped or hurt the job search business.
Fri 30 Jan | Dignified | In previous job applications, I've sent both .pdf & .doc, and specifically written in the e-mail that both were provided. I've also submitted in .doc, and said that my resume is available in another format if they want. I've never had trouble with either approach. The dual format sounds wasteful, but in most HR departments I've seen, they are staffed with the same people who will include multiple uncompressed full-screen screen prints in an HTML e-mail. So I would venture that they aren't too picky about the size of their messages. :)
Fri 30 Jan | fw | Personally, I like PDF allot, but I'd still use plain text over it. I don't get why people use doc format anyway. I know allot of places which will delete your mail based on your format, I know allot of people in the unix world who will delete an job mails if it's not in text, I know HR people who demand everything is in word format. Plain text is nice, and I usually rename my .txt files to .doc and then they grumble about no fancy formatting. Keeping things in plain text is the best idea, then convert to pdf, html, or whatever when you are sending it out.
Fri 30 Jan | Fred Ngo | Here's another interesting question. Why is it that many job postings don't specify what format to send your application in? If for whatever reason a specific format is needed, why not say 'please submit your application to info@company.com in DOC format'? My feeling is that if the format isn't specified, then the company is prepared to be 'liberal in what input they accept'. Anyway, have things changed or what. The last time I applied for a job, sending my application on paper was still the preferred method. :)
Fri 30 Jan | Philo | Yeah Fred - Joel grumbled that he shreds resumes he gets on paper (though his job site *does* specify email) Philo
Fri 30 Jan |   | My source resume is in xhtml with embedded css stylesheet.  Very easy to convert to word or pdf. 
Fri 30 Jan | Noname | They don't specify the format they want, because they are looking for an easy way to screen out applicants.  You send something other than what they had in mind, and your resume conveniently gets deleted (or goes into an archive, if the local laws require retaining resumes).  Less work for HR, since they won't even have to read it.
Fri 30 Jan | genius | post it online and provide a link in the email.
Fri 30 Jan | pds | Let me then re-state how I will do it: 1. Attach my resume in .DOC format, AND 2. Provide link to web site with resume in all formats, including .DOC, .RTF, .PDF, and the awful plaintext. Oh, and HTML. Something like 'The resume is available in a variety of document formats on my website, 'gopher://www.l33t333t33tn355.tk/users/1337/Professional_Resume/'. Excellent. That should give even the crankiest Unix admin little excuse to pass me absolutely.
Fri 30 Jan | with zeal | I send them in Latex
Fri 30 Jan | Wade Winningham | You could always just call the company (assuming you know where you're sending your resume) and ask them what their preferred format is.
Fri 30 Jan | .NET Developer | 'My feeling is that if the format isn't specified, then the company is prepared to be 'liberal in what input they accept'.' What I've seen is that if they don't specify a format. It is almost sure that they *don't* even know that a document can be created in anything else than Word. So, in doubt, just send .doc. Everyone that knows PDF also knows what a .doc is. The opposite is not true.
Fri 30 Jan | x | I have always used plaintext, and made sure it looks decent when viewed in Notepad or a console editor like emacs/vi. Lots of people hate any sort of cooked text; even Word docs may not work due to different versions, etc - there's still plenty of places that use Word 97. A reasonably good approach is to create a Word version, save as text, and use Notepad to sure it looks decent as text. If Word is specified, send it, otherwise send text.
Sat 31 Jan | Mister Fancypants | If the HR people don't specify, they want it in MS Word, period. How you feel about 'M$' or whether you think PDF is a better format is irrelevant.
Sat 31 Jan | One Who Knows | That's absurd and ignorant. If they DON'T SPECIFY ANYTHING AT ALL, then you better be submitting it on 70# linen with a single, clean, readible typeface.
Sat 31 Jan | Stephen Jones | We have hundreds of machines at work without Acrobat Reader. Submit the resume in .rtf format. Every company computer will have a Word Processor of some type. Don't submit in HTML unless you have a special print version. It's quite likely that at some stage in the hiring process, your application will end up as a resume in a cardboard file. You want control over how it prints. Don't link to something online. It's highly inconsiderate and time-wasting, and there is a good chance the person looking doesn't even have internet access.
Sat 31 Jan | Intern | Isn't it worth noting that a Google search for the words "click" and "here" give Acrobat Reader as #1 and "download" gives it as #2?
Sat 31 Jan | T. Norman | If you have already included one format in your email, why is it any worse to include additional formats in a link to a web site?  Seems better than rolling the dice by sending one format without any other options.
Sat 31 Jan | Stephen Jones | Find me a computer that can't open an .rtf file. Another thing to be very careful of in resumes is A4/Letter resizing. Make sure your resuem looks OK even when printed on the wrong size paper.
Sat 31 Jan | Mister Fancypants | How many systems can open PDF versus how many systems can open HTML versus how many can open Format X is irrelevant. If they work in HR, they have a recent version of Word installed. Use Word .doc. Any other format and you're just being an idiot, and likely you're one of those assholes who is whining about how there are no good jobs giving you call-backs these days. Uh, wonder why?
Sat 31 Jan | Tim Lara | I agree with Wade: When in doubt, what's so doggone difficult about contacting the HR person and asking them which format they prefer? Comes off as a considerate gesture and evidence that you have the ability to communicate with humans...a skill that most techies I've ever met REALLY need to work on. It's amazing how so many smart people make simple tasks monumentally complicated!
Sat 31 Jan | Tim Lara | And another angle: When you send your resume in a format that the HR person doesn't know how to handle, guess what they usually do? (assuming it's not their call to delete it like Joel can) They go and bother a programmer or IT person about how to open it. And then, the annoyed techie will scoff and make some comment about how the person who sent the resume (you) must be incompetant because EVERYONE uses [format X] for resumes!! If the HR person has any involvement or pull in the interviewing process (and respects the techie's opinon), then you've already gotten off on the wrong foot. (Trust me, this happens. I have overheard such conversations many times. You'd be surprised how many people who have worked at the same company for a long time begin to think in their own paradigm as if they way their company does things is the only way.)
Sat 31 Jan | T. Norman | Very often you don't have an HR contact who you can ask which format they want. You just upload your resume to some web site, and that's your only point of contact with the company. But it is true, if they don't specify a format then it almost certainly is MS Word. Because the type of people who don't know how to handle non-Word documents are the only type of people who think everybody else uses the same format as they do.
Sat 31 Jan | Martin Beckett | I once had a pdf of a document returned asking for a .doc instead - the reason SECURITY ! Their email system scans .doc for macro viruses - but not pdfs.
Sat 31 Jan | Tim Lara | T. Norman: To be fair, I admit that I have really never run into situations where I did not have some sort of HR contact available, as I tend to avoid companies that seem particularly bloated and impersonal. IMHO, such jobs just smell like future layoffs waiting to happen. I'd just rather know people by name. The 'automated' web application processes that I HAVE seen (many government jobs, for ex.) actually just have online forms that you fill in that are the same for everybody, making resume format a non-issue. I don't think I've ever seen a case where you just send your resume into some void with no feedback - that doesn't sound very promising.
Sat 31 Jan | T. Norman | Security would be better served by NOT accepting .doc files, rather than accepting them because your antivirus software can scan them.  Is there such a thing as a PDF macro virus?
Sat 31 Jan | www.marktaw.com | > Is there such a thing as a PDF macro virus? No, but it's only a matter of time. As PDF tries to become more and more the be-all-and-end-all of documents they put more and more bizarre scripting things into it.
Sat 31 Jan | Christopher Wells | You can place anything in a PDF, including executables. Maybe the PDF reader won't execute them though.
Sat 31 Jan | Dennis Atkins | 'Find me a computer that can't open an .rtf file.' I've got three computers in this office and only one of them, the newest, can open a rtf file. Really, pdf is a much broader standard than rtf.
Sat 31 Jan | Dennis Atkins | I should also mention just as a info point that I have never submitted a resume electronically. Gotten jobs on the internet, sure, but I've never emailed a resume, never uploaded a resume to a jobs site, none of that. Not saying there's anything wrong with it but I have to wonder about this supposed majority of companies that refuse to accept anything except FORMAT A with COLOR B and FONT FACE C blah blah blah and everything else gets deleted, or prinetd out and then immediately shredded and spat upon. Seems like a pretty stupid way to run an HR department. Then again, I have never been hired by an HR department. 20 some years of working as a developer and contractor and not once has a 'HR' department hired me. I'm actually surprised to hear that any companies looking to hire something as specialized and high skilled as development would entrust the task to an HR department. HR works to fill out the insurance and tax paperwork and process medical forms, not to do hiring. Having HR make hiring decisions for anything other than janitorial work is *incredibly* stupid.
Sat 31 Jan | T. Norman | HR doesn't usually make the hiring decisions per se; they make the NO-HIRE decisions by filtering out resumes before interviewing is in the picture.
Sat 31 Jan | Dennis Atkins | Well, HR has no business whatsoever evaluating engineering resumes unless the people in HR have engineering degrees.
Sun 01 Feb | Lyndon | Mine's in XML, with XSLT to ssss-style it to HTML. If they dont like HTML, I don't want the job that much. Things wont change from MS Lock-in until people start to force the issue. If you don't you're just another MS Gimp...
Free News Software Integrated with Outlook 2003 | Fri 30 Jan | richard
Does anyone know of a good, free newsreader that integrates with Outlook 2003? Im tired of having to flip flop between Outlook and Outlook express for my mail and news.
Fri 30 Jan | mb | newsgator? not free, but why should it be.
Sat 31 Jan | bynarr | Forte Free Agent does both
Sat 31 Jan | Caliban Tiresias Darklock | I've been toying with the idea of writing one, myself. The major thing stopping me is the whole 'who would care?' question, and the idea that it would take a lot of work that I might better spend doing something else. Newsreaders and email programs are traditionally free, these days, so it doesn't look like there's a worthwhile market for this. Free software is not always a good thing. I had a great email program I was writing, once. Then everything became free, and I just threw up my hands and mothballed it. I can't afford to do things this extensive that aren't even going to pay the bills.
Sun 01 Feb | Row | You can, however, fight against open source. Help open the eyes of open source programmers, and make them understand that they are destroying their own jobs. Yes, Linux, RMS, ESR, and a handful of other 'open source rock stars' will have dream jobs, while the average programmer wages will go down a lot because of all the open source and free software available. OSS advocates are very, very vocal. Some people, however, understand that while OSS may be great if you look only at the technical side of things, it destroys programming as a profitable profession. Doctors and lawyers and mechanical engineers and plumbers don't work actively to destroy their own jobs! Instead, they protect them! So - people who are aware of the OSS impact on our jobs, please speak up, and fill the message boards! We should be as vocal as the OSS advocates are.
Sun 01 Feb | Caliban Tiresias Darklock | I have something of a dilemma with regard to open source. I think everyone, everywhere, should open up all of their source code to the world and let everybody see it. I think that should be considered normal. What I don't agree with is the idea that the world should also be allowed to make all the copies they want and modify it and paste it into their own stuff and sell it. OSS has taken these two things and smashed them together. I don't think that's rational. The first argument is a technical argument, and the second is a political argument. And whenever someone stomps all over the political argument, the OSS people pull out the technical argument and pretend it somehow justifies the political one. I think 'open source' should mean exactly what it says: you are guaranteed to have ready access to all of the supported source at all times. Beyond that, it's a political question, and I think the technical community should stay out of it.
MS Programming Environment | Fri 30 Jan | rml
I have always wondered which programming languages do Microsoft development teams write code in for their own products like Windows OS, VB, VC++, .NET Framework, Longhorn etc. Any ideas?
Fri 30 Jan | Li-fan Chen | Perl
Fri 30 Jan | Chris Nahr | Logo and GW-BASIC. Sometimes FORTRAN IV for speed. DirectX is actually written in FORTRAN IV with an Ada API. Did you know that?
Fri 30 Jan | Photonix | Visual C++ mate
Fri 30 Jan | S. Tanna | Bill Gates has a cable coming out of his back, kind of like that Mentel Corporation Guy, in duff film, The Fortress Other MS programmers use binary toggle switches on Altairs Allegedly
Fri 30 Jan | rml | You guys are kidding right! right?
Fri 30 Jan | Eric Lippert | When I debug VS and the .NET Framework, I often have to debug C++, C#, VB.NET and JScript, though rarely all at the same time. There are probably little bits written in other languages as well, but I haven't run into any. The build system that we use to construct the whole thing is written in a mixture of C++, C#, batch files, JScript, Perl, Xml-based declarative languages, NMAKE and probably a few others that I don't know about. The trend is towards writing more and more of all the code in C#. On my team, we write everything in C# unless there is a really compelling reason not to. Why do you ask?
Sat 31 Jan | Thinking Hard. | Just out of curiousity Eric, is the C# decision a team preference, or is this a standard laid down by the company? Would this be your choice vs unmanaged C++, etc? I'm still developing with VC++6.0 and MFC, and often wonder if I am missing out on something better.
Sat 31 Jan | Caliban Tiresias Darklock | With regard to VC6 and MFC: drop it like a hot rock and start using C#. I used to work in VC6 and MFC exclusively. I reluctantly went and learned C# because I had one specific request for it. I *love* C#. I *love* the .NET framework. All the logistical concerns pale next to the simple idea that for once, the API makes *sense* to me. I finally feel like I'm not being penalised for resisting the Windows storm. From the first day I started working in Windows (as opposed to DOS and command line UNIX), I felt like there was a huge mountain of stuff I was expected to know, and nowhere I could go to learn it. It took years before I felt like a competent Windows developer, and every time I turned around there was some new technology they'd apparently introduced just to make things harder for people like me. Today, I feel like I'm standing on equal footing. For once, I can *answer* more questions about Windows programming than I need to ask. And that feels really good.
Sun 01 Feb | S. Tanna | > Today, I feel like I'm standing on equal footing. For once, I can *answer* more questions about Windows programming than I need to ask. And that feels really good. Provided they are not questions about MFC :-) There can be good reasons to use the old Win APIs in certain applications (and MFC is really best thought of as a mostly thin wrapper on the Win API).
Sun 01 Feb | Caliban Tiresias Darklock | That's true, there are some very good reasons to use the Win32 APIs. Among other things, .NET doesn't provide any way I can find to get the HWND of the desktop. But what is really impressing me is the organisation of the framework and the quality of its documentation; I can usually find the answers to my questions in MSDN, without having to search scads of technical notes. I also hate feeling like a bum in a technical forum. If I'm going to participate in a community, I can't just come in and whine about how I don't know how to do something, I have to offer some value back to the community. And in the .NET community, there are lots of questions I can answer, so I get to show up and immediately help a dozen people before I even ask my question. It just feels a lot better, and there's much less chance of any accusation that I don't know my assembler from my elbow. ;)
professional reflection API | Thu 29 Jan | Andrew Hurst
I was just reading the Documentation thread a few posts down, and I remembered something Ive thought about doing for a while now. The basic idea is a programmers diary. At the end of the day, or during it some time, just write down what my feelings were on the day. Did I fix bugs? Write new code? Add unit tests? Did I learn anything new? Not so much for the purpose of being able to see why something was changed, but to improve myself as a developer. If I fixed a bug that could have been prevented, it would be written down and the prevention method written down as well. This wouldnt be to read per-se, but just the act of writing this down would be a huge benefit I think. Of course I havent started yet :-) Does anyone else do this? Or something similar? How do you manage your professional development?
Thu 29 Jan | Prakash S | i maintain a blog on my computer to write down thoughts, ideas, things I do an a daily basis, etc - (personal & professional)
Thu 29 Jan | Krish | Prakash, Is it public? Care to provide the link?
Fri 30 Jan | Prakash S | nopes, local - don't want to give out ideas on how I will be richer than Bill:-)
Fri 30 Jan | www.marktaw.com | Step 1. Write Down Ideas. Step 2. ...... Step 3. Richer Than Bill Gates!
Fri 30 Jan | Prakash S | Phew! that was close.....
Fri 30 Jan | .NET Developer | You should really start blogging...
Fri 30 Jan | KRAD | --------------------------------- Step 1. Write Down Ideas. Step 2. ...... Step 3. Richer Than Bill Gates! --------------------------------- You ppl never get tired of this kind of stupid joke?! I will be a happy man the day this kind of sad, very very stupid 'joke' will cease to exist.
Fri 30 Jan | Ignore my ignorance | >> I will be a happy man the day this kind of sad, very very stupid 'joke' will cease to exist. You're doomed to remain sad...
Fri 30 Jan | Portabella | > how I will be richer than Bill:-) He didn't say which Bill. For all we know, Bill might be his brother-in-law!
Fri 30 Jan | Ged Byrne | KRUD, I was so impressed with how you saved valuable time by typing ppl instead of people. Then you wasted it all with surplus punctuation. Now I'm confused, is a question or an exclamation?
Sun 01 Feb | no name | Prakash, what do you use to keep your internal blog?
More Apprentice | Thu 29 Jan | Name withheld out of cowardice
So does anyone else think they are basically firing people in reverse order by physical attractiveness?
Thu 29 Jan | no name | not until you mentioned it, but yeah.  may just be a coincidence though.
Thu 29 Jan | www.marktaw.com | It's too bad they're mixing up the teams, I really wonder what the girls would do if they couldn't sell sex.
Thu 29 Jan | no name | No, the second guy to go was the best looking of the bunch.
Thu 29 Jan |   | I noticed that Trump has decided to re-organize the two teams. Why wasn't that done in the first place? Did anyone really think the men had a chance in hell of outselling the women on low-price merchandise such as lemonade, t-shirts, and alcoholic beverages? Using your sexuality (flirting without providing sex) can work quite well for an attractive woman when she is trying to buy or sell a low-priced item.
Fri 30 Jan | T. Norman | True dat.  Being pretty doesn't help much when it comes to big-ticket items like houses and cars (women on average pay more than men for the same car, for example).  Maybe it helps for advertising, but not for the actual sale.
Fri 30 Jan | The Ted | I don't think the Donald thought that the women would be flagrantly slutty.
Fri 30 Jan | Name withheld out of cowardice | I forgot about the second guy. Still the mens team started out with only three guys who weren't gorgeous in some way (They keep showing the guys working out) and allthree are gone. BTW with four episodes viewed does anyone have any further opinions on whether or not all these people truly have 200 IQs (as the Donald Claims)? I think these people are mostly pretty average in the brains department. I don't think these challenges are a fair measure of who would be good in business but I haven't seen any evidence of original thought or technique.
Fri 30 Jan | Jorel on Software | 200 IQs?  The one guy sells copiers for god's sake.
Sun 01 Feb | Brad Wilson | Statistically speaking, it's basically impossible. Genius level is 140, and statistically pretty rare. I don't know what the exact numbers are, but I'd be _shocked_ to find out there were more than 1000 people with 200 IQ in the entire world. It's clearly hyperbole, meant to appeal to people who have no idea what it means to have a 200 IQ. After watching them for 10 minutes, you wonder if even half of them can break 110. :-p
ISP taking liberties? | Thu 29 Jan | Gwyn
Recently I tried to send mail using the SMTP on my own colocated server through my dialup connection. It seemed to work fine but it also worked when the server was down! Reason? The ISP redirects ALL port 25 traffic to its own SMTP servers. I discovered this when I tried telnetting to my server. Now, they dont specifically mention this activity anywhere in their terms/conditions and when asked they refuse to provide documentation for security reasons. Im not sure that contractually they have the right to change the final destination of my IP traffic, certainly not without me knowing about it. Anyone got any ideas on this?
Thu 29 Jan | Brad Wilson | I'd say you should check your contract very closely. I bet they left themselves the right to do it. I understand why they're doing it, too, and I can't say I really blame them. Sucks if it's something that's stopping you up... you could always use a VPN as a by-pass for it.
Thu 29 Jan | Jan Derk | Maybe they want to check all outgoing email for virusses and spam. If so I applaud them.
Thu 29 Jan | gwyn "don't fuck with me" di nero | I've looked at the contract. There is nothing that alludes to it. And it's all done without my knowledge. The company is Freeserve (UK arm of Wanadoo). I've had a lot of hassle with trying to get email support and answers to questions from them; they simply failed to respond so I rang up one of their directors at home on Monday evening to get some answers. This particular issue looks like it could be fun to pursue as a thorn in their side so I'm now threatening them with a breach of contract claim. For the fun of it. Ultimately I just want to waste as much of their time as they have mine! Hope noone here works for Wanadoo and spoils my fun!
Thu 29 Jan | Gwyn | Jan, I suspect you're right, they don't want to be the connection that allows someone to start spamming through an unprotected SMTP gateway. I applaud them as well. They just need to be a little more open about what they do adn what the customer can and can't expect
Thu 29 Jan | Gwyn | Brad, I should also mention that I do have VPN access to my server but it's no good being 'inside the box' when I want to test the security and functionality from an external source.
Thu 29 Jan | Colin Newell | They've been doing that for years, we used to be with them. As for legal, it's their network, I'm reasonably sure they can do what they want. At least most isp's have gotten over the idea of shutting down all incoming port 80 traffic to 'prevent the spread of the internet worms'.
Thu 29 Jan | T. Norman | 'They've been doing that for years, we used to be with them. As for legal, it's their network, I'm reasonably sure they can do what they want.' It's not just 'their network' ... it's a network that customers are *paying* to use. They have a responsibility to inform customers of things like this.
Thu 29 Jan | mb | lots of ISPs block traffic on port 25. that's reasonable if overkill. but actually redirecting anything other than a known security risk (e.g. 'virus of the week phones home to 127.0.0.1, so block that address) is a dangerous precedent. anyone here ever going to buy a belkin router again, for example?
Thu 29 Jan | Zactly. | 'This particular issue looks like it could be fun to pursue as a thorn in their side so I'm now threatening them with a breach of contract claim. For the fun of it.' Must be a Linux user. No one else could get all up in arms like this over it, or decide to be such an ass on purpose.
Thu 29 Jan | Brad Wilson | 'They have a responsibility to inform customers of things like this.' What law requires that? Do you mean ethically? Bullshit. Like the previous poster said, it's their network. They can admin it how they like. If you aren't happy with them hijacking all outbound port 25 traffic, then get a new service. *shrug*
Fri 30 Jan | Just me (Sir to you) | 'This particular issue looks like it could be fun to pursue as a thorn in their side so I'm now threatening them with a breach of contract claim. For the fun of it.' Boy, do you need to get laid, badly.
Fri 30 Jan | Gwyn | need to get laid? well you can never get too much so I guess I'd agree! And no, not a Linux dood, but probably would be if there were enough hours in the day. However, this boils down to a point of principle. I don't know what it's like for you yanks but these days quality of service and products in the UK has turned to shit. In the last couple of weeks I have had problems with products and the customer of 2 big companies; Candy/Hoover and Sky. In both these cases I've had their MDs on the phone to sort the issues out, because it's the only way to get things done unless you want to expend lots of your own time crawling throughtr their maze of customer services/care/relation or whatever they call it; all designed to NOT to give you what you need in a timely manner! Now as a point of principle I decided some time ago that I would no longer put up wuth shit service and if my time was wasted with it then I would waste more of their time in response. Too many people are apathetic and put up with it. Which means that they get away with it, which just means getting more of the same in the future. This is a proactive approach which is often at odds in today's reactive society. In fact so at odds that almost any proactive people are treated with the same disdain as soothsayers and witches. The fact of the matter is that there are a growing number of companies in the UK that if I have a problem with I get put through almost immediately to someone who will sort it out because they still have records of what happened last time they messed me about. Freeserve / Wanadoo are midway in that education process but what it also teaches them is that there are people who will not put with shit and they don't know who they are so they need to be a little bit more careful when dealing with everyone.
Fri 30 Jan | Peter Ibbotson | Nope, freeserve have done forever (as does AOL) to stop spammers signing up. Use port 587 to a smarthost or get service from a commercial ISP. You will however find that direct to MX from dialup ranges is widely blocked outright. AOL no longer accept direct to MX from cable modems and DSL ranges. Our corporate ISP in the UK (demon) told AOL all the IP addresses that should have direct to MX servers on (i.e. their smarthosts, plus folks like us who provide our own MX for incoming mail) PLUS because their userbase historically has been tech savvy they told users that if they did want to run their own smarthosts they would tell AOL for those users. Life is tough and since the spammers started using home users machines via trojans this situation will get to be normal. I pay someone to smarthost my home domain away from my ISP (along some websites) because my ISP is a cable modem provider and I'm sure their smarthosts will end up in blocking lists occasionally (spamcop is good example) due to trojanned home users.
Fri 30 Jan | T. Norman | 'If you aren't happy with them hijacking all outbound port 25 traffic, then get a new service. *shrug*' Just let me know that *BEFORE* I sign up and have already paid the setup fee and first month's service, OK? They are free to do what they want as long as they INFORM THE CUSTOMER FIRST. Why do you think they have the right, legally or ethically, to keep this a secret?
Fri 30 Jan | no name | 'these days quality of service and products in the UK has turned to shit' Yeah? Try going to Germany, it is far worse.
Sun 01 Feb | Brad Wilson | 'Just let me know that *BEFORE* I sign up and have already paid the setup fee and first month's service, OK? They are free to do what they want as long as they INFORM THE CUSTOMER FIRST. Why do you think they have the right, legally or ethically, to keep this a secret?' Did you ask? This street goes both ways.
Sun 01 Feb | Brad Wilson | Let me expound. There is such a thing as 'reasonable expectation'. For example: the reasonable expectation for the typical home ISP user is that they'll be able to browse the web; the unreasonable expectation is that they'll be able to run a web server. Therefore, I'd consider it inappropriate behavior if the ISP prohibited web browsing without being told up front, but not inappropriate behavior if the ISP prohibited web serving without being told up front. Basically, if what you're doing isn't something 99% of people are going to be doing, you have no right to expect that it will necessarily work. ESPECIALLY in this case, where you're talking about being able to poke into random mail servers, an activity that is generally associated with spamming. I'm sorry, but I can't shed any tears if you didn't ask up front about this.
Any good ways to stop fax spam? | Thu 29 Jan | Alex Chernavsky
In the past few weeks, my elderly parents have been hit with an unusually large amount of fax spam. Last night, a fax came in at 4:00 AM. Somehow, their phone number must have been included in some spammers database. Any ideas about how to stop this, short of changing their phone number (which theyve had since 1966)? I ran some Google searches, but I didnt come up with much. The latest fax has an opt-out phone number at the bottom, but Im worried that calling the number will only increase the amount of spam. Thanks.
Thu 29 Jan | Michael H. Pryor | http://www.junkfax.org/
Thu 29 Jan | Alex Chernavsky | Thanks, Michael.  That was fast.
Thu 29 Jan | Code Monkey | Good luck with that.... The 'solution' we came up with was to take out our real fax machine and the expensive toner replacements and put a old PC with a fax modem instead. Now atleast we can delete the crap faxes without wasting any toner and for those odd useful faxes we just print them...using our old all in one fax machine as the printer :-) As an aside we do not have to worry being out of paper :-) Dunno why no one makes a fax machine with a small LCD display to review faxes so one can do this easily.
Fri 30 Jan | FredF | >>The 'solution' we came up with was to take out our real fax machine and the expensive toner replacements and put a old PC with a fax modem instead Same here. I guess you could also run a smarter fax software that can discriminate calls, so that it would ring if it's a voice call, and remain silent when it's a fax call, so that would solve the issue for the parents of the original poster.
Fri 30 Jan | John Ridout | Use a premium rate number?
Sun 01 Feb | Li-fan Chen | I would seriously recommend Code Monkey's recommendation, but get one fast enough to flip through those fax images on the screen, not a 286!
Linux and Innovation ... where is it? | Thu 29 Jan | HeWhoMustBeConfused
Im working on a project to redefine the workstation desktop for a very large corporation currently standardised on WindowsNT and Office97. Two technology sets are up for consideration: Linux and Microsoft. One of the drivers for the corporation is that they want a desktop which demonstrates innovation and leadership. I keep seeing comments that Linux is all about meeting these drivers, but to my mind Linux is only about copying a platform 10 years old. Our tests show that it doesnt support a wide range of the customers existing hardware, wont run many of their applications, and that the Office software, while adequate, is only the equivalent of very old versions of MS Office. Where is the DESKTOP innovation? What new products, features or ideas has Linux presented ON THE DESKTOP? Are there any new ideas or products which will truly demonstrate a new and innovative approach to end user computing?
Thu 29 Jan | Me | Linux demonstrates extensive innovation in vapor ware promotion.
Thu 29 Jan | Sassy | Desktop Linux is a weird parallel universe which everyone thinks is 'Linux'. Linux is about servers- desktops are boring anyway.
Thu 29 Jan | FullNameRequired | 'One of the drivers for the corporation is that they want a desktop which demonstrates innovation and leadership.' thats possibility one of the woolly-est and stupidest things Ive ever heard...how on earth do you judge innovation and leadership? pretty much all software these days uses ideas that someone dreamed up years ago....even .net is 'merely' a well done rehash of some older ideas. 'Our tests show that it doesn't support a wide range of the customer's existing hardware, won't run many of their applications, and that the Office software, while adequate, is only the equivalent of very old versions of MS Office.' which surely shows pretty clearly that it doesn't even come close to meeting your needs, so why on earth are you even considering it? 'Where is the DESKTOP innovation? What new products, features or ideas has Linux presented ON THE DESKTOP? Are there any new ideas or products which will truly demonstrate a new and innovative approach to end user computing?' more stupid and woolly questions. There are a bunch of new ideas in linux (at least as new as any of the ideas others seem to have) from virtual desktops (love that) to serious implementations of the bayesian spam control (IIRC OSS was the first to take a serious walk down that path), Linux has taken advantage of many of the innovative ideas of its developers. Is it any more 'innovative' than MS? how the hell should I know? even if we could take every new idea thats appeared in both OS and line them up, how do we judge them? seems to me that either you or your manager is going about deciding which desktop environment to use in a particularly incompetent fashion. maybe you have a budget that you want to get through?
Thu 29 Jan | njkayaker | This week's 'innovation and leadership' will become last week's stale bread.
Thu 29 Jan | Bill Rushmore | The only arguements I have heard for Linux on the desktop is one of cost or that it isn't Microsoft. Technically Linux has no Desktop. Gnome and KDE are the big ones and are seperate projects. I run both of those on my Sun Worksation, not Linux. Oh yeah, you could run KDE or Gnome on Windows too! I think you can only appreciate the latest desktop environments is if you once used some of the old desktops. I really like the tabbed console on Gnome! Is that good enough?
Thu 29 Jan | no name | For the love of god, please think up a more interesting meta-discussion to pursue. is linux innovative? is windows innovative? who fucking cares?
Thu 29 Jan | crusty admin | Linux is good on the server.  End of story.
Thu 29 Jan | no name | I thought all the innovation was over at Apple. :) It's nice to see that being 'innovative' is more important than being 'useable', though, or even being 'cost effective'. That's really impressive.
Thu 29 Jan | HeWhoMustBeConfused | A few comments on responses to date: 1. It isn't about spending some hidden budget, I've got over 40,000 desktops (and notebooks) to change to one platform or the other. 2. Innovation/Leadership is ONE of three drivers. The others are reduced cost, and reduced support. A full evaluation means considering all three. 3. Linux is under consideration because the CIO thinks it is a good idea. I'm looking at it because that is the assignment for which I was contracted. 4. I asked the question because I was looking for something others might have seen that I have not. If you don't like the question, don't waste your time answering *smile*
Thu 29 Jan | pdq | So, it's not about who's innovating, it's about guessing who's going to be better X years from now? A couple of things are certain. Microsoft is going to continue to put out new versions with new features, even if they aren't things you care about. OSS will contiue to be developed and continue to fragment. You will need to pick the Desktop you like, plus the OS. No good if you go with one and all the great new stuff is on another. Oh, and if someone in OSS puts in neat enough features to impact MS, they will copy them in a heartbeat.
Thu 29 Jan | Giovanni Corriga | Just two examples: GNOME Storage: http://www.gnome.org/~seth/storage/ Dashboard: http://www.nat.org/dashboard/
Thu 29 Jan | FullNameRequired | '2. Innovation/Leadership is ONE of three drivers. The others are reduced cost, and reduced support. A full evaluation means considering all three.' :) you dont see a problem with the 3 drivers? honestly, you are never going to find all 3. As your original question reads its clear to me that you already have an opinion on Linux...if nothing else the cost of upgrading all the hardware you claim it wont work with is going to be prohibitive. If you have a company that size to upgrade, it seems to me that your cheapest option would be to taker a token look at Linux, tell microsoft that you are doing so and wait for the discount offers to roll in. thats assuming that you and your company have the moral integrity of a small furry creature with no moral integrity. '3. Linux is under consideration because the CIO thinks it is a good idea. I'm looking at it because that is the assignment for which I was contracted.' So..the questions becomes how are you actually going to judge the Linux offerings? doing it based on 'innovation' is clearly stupid, and Im entirely unclear on how you judge the 'leadership' of a desktop. Microsoft will prolly be bringing out new features forever or until it spontaneously combusts...its fire and motion and thats what it does..does that represent 'leadership' or 'innovation'? beats me. MS is based on one particular development model and has a large number of indecently intelligent developers working on it for fun and profit. Linux is based on an entirely different development model, and has a large number of indecently intelligent developers working on it for fun and profit. I have seen some exceedingly stupid ideas emerge from both and I have seen some extremely good ideas emerge from both. (how does a O(1) scheduler sound? does MS offer such a thing? I have no idea....) Prolly if I had a gun to my head and a madman screaming at me to ignore the stupidity of the question and choose one platform that offers 'leadership' and innovation more than the others; it would prolly be apple. OTOH its definitely more expensive than the others. Costwise with productivity factored in, Id prolly choose Linux...the various office replacements are increasingly good value, and with the number of companies and government departments all over the word beginning to use them they are going to get a real amount of work done on them over the next year or two. (not saying that the number is large in itself, just that it represents a huge increase over what it used to be and that theres nothing like users screaming in pain to fastfoward development) Email and web browsing on the Linux desktops is as good or better as anywhere else. OTOH theres a bunch of other applications that your company may be using that have few or no replacments in the OSS world....if any of those are in wide use then you just cannot upgrade cost effectively. Seems to me that judging the various offerings is difficult enough without having to assign a value to the 'leadership' of the desktop....its a stupid question and a stupid way to judge an operating system. :) unless, just maybe, you can define exactly what you _mean_ by: 'a new and innovative approach to end user computing'
Thu 29 Jan | Ian Ashley | I think you're asking this question to the wrong audience. Regardless, in certain situations (i.e. Country of Largo, FL) i've read of Linux absolutely florishing as a enterprise desktop. From my own personal experiences, due to 99% of all the enterprise apps installed on the client-side being written FOR Windows, you have NO other option but to use Windows-based desktops. Not only this, but many of the enterprise apps don't come with contractual support from the vendor for Linux, so using any Windows emulation software is out of question.
Thu 29 Jan | Sum Dum Gai | Why do you care about innovation? I think it shows a bias - that you assume all innovation is good. It's not. Sometimes new ideas are bad. Sometimes they're downright awful. Evaluate technology on its merits, not on how new and shiny it is.
Thu 29 Jan | prolly wants a cracker | /nitpick What's with 'prolly'?? Is that a real word? See it too many times these days. Do people have really have that many problems spelling 'probably'??
Thu 29 Jan | FullNameRequired | 'Do people have really have that many problems spelling 'probably'??' nitpicker... its just fewer letters, so its easier to type, and fewer syllables so its easier to say. Remember..the english language is a living thing...it breathes...ah god it breathes...
Thu 29 Jan | trollbooth | Grammar Nazi. Go polish your jack boots.. You couldn't even think of a better argument than that? You are no troll sir! You are a wannabe.
Thu 29 Jan | C Rose | Try OS X. It's incredibly stable. It's nowhere near as prone to viruses as Windows. The UI is much easier to use, and the user experience is better (the old Apple chestnut: 'It just works'). You can get MS Office, which is apparently better than the Windows version. The hardware-OS integration is much better than Windows can achieve (since Apple can test every system with their OS, while MS can only test a sample). They are good value for money (not necessarily cheaper, and I'm pulling this out of the air, but I'd bet the TCO of OS X is much lower than Windows -- how many man-hours have Windows viruses alone wasted?). Their XServe servers and RAID storage servers are extremely good value for money, particularly considering the unlimited client license. It will network with Windows very well, and will obviously also network with UNIX well, too. Downsides: you need Apple hardware, but it's very well engineered. You may not find direct equivalents of some of the software you need (but you may find better solutions; you could also keep a few Windows machines). You might need to buy people two-button mice :-) If you want an innovative desktop OS, OS X is the best going. Linux on the desktop is a joke. You need the resources of a large company to add the polish, documentation and testing that a desktop needs -- even Sun couldn't manage that with GNOME. GNOME and KDE are OK, but there like rough-and-ready versions of the Windows 95 interface. It's a bitter pill to swallow, but I really don't think the open source development model can deliver a decent UI. (I think Mozilla is an exception to this rule, but even that needs a little polish.)
Thu 29 Jan | hoser | If you want innovation on the desktop, then Apple OS/X gets my vote. However, I see no reason why a corporation would give a rat's behind to standardise on a desktop based on innovation. That has got to be the stupidest [sic] idea I have ever heard. Who could possibly give a crap that the desktop is 'innovative'. Wow lookit the cool 3 dimensional eye candy and the really cools gizmos. Isn't the point to get your job done and then go home? Dumb and dummer.
Thu 29 Jan | C Rose | Revisiting the original post, the criteria were 'innovation and leadership'. One can be innovative in many ways, it doesn't have to come down to technology. For example, it may be innovative to set a policy to follow and help define technology standards. Leadership doesn't have to mean 'most popular', it may mean 'setting a good example'.
Thu 29 Jan | Philo | You need to switch the cart and the horse. 'We want innovation on the desktop' - what's your line of business? What do your users want? What would make their jobs easier? Office 2003 has a customizable research pane that can pull lookup data from any data source you care to offer ('Frank, what's the line item for Waznozzles again?'). It has built-in integration with Sharepoint, which can improve the collaboration in your company. With Visual Studio Tools for Office, you can use .Net to build 'Smart Clients' out of Word or Excel. InfoPath and Biztalk can give you rich client forms that can be laid out by a layman, then manage workflow through approvals. My point is that there's a huge amount of innovation available, but it does you no good to buy Office 2003, install it, and just have users using Word like notepad and Excel as a glorified calculator - you have to determine your needs and figure out, based on those needs, what technology is the right fit. Find a business problem, then solve that problem with the technology available. 'Buy me an innovative desktop' ranks up there with 'get me a blue car.' Philo
Thu 29 Jan | joev | While I agree with the sentiment that OS X is perhaps the home to the most recent innovation, in terms of both polish and functionality, Linux, particuarly KDE (which is my day-to-day environment at work and home) has caught up with and surpassed Windows as a user interface. For example, the KIO framework (similar to GNOME's VFS) provides a filesystem abstraction layer that allows all applications to treat remote WebDAV servers, FTP servers, SSH shell accounts, even IMAP accounts like any other filesystem. SVG-based icons make the desktop aesthetically pleasing at any resolution. The Universal Sidebar allows quick access to the filesystem (including the KIO stuff I talked about), conveniently tucked away, appearing when you need it. KDE has a standard notification and key binding system, to make sure each application is customizable for your particular work style. File previewing is handy, and any file type that has an associated KPart (like an ActiveX control) can render itself as an icon. Then there are more leading edge apps like Dashboard, Karamba, and Slicker. Windows hasn't signifigantly changed from the UI point of view since Windows 95. Hopefully Longhorn will take the lessons learned from OS X, KDE, and GNOME, and raise the bar. As it stands, the Windows UI is showing its age...
Thu 29 Jan | SC | > Linux, particuarly KDE (which is my day-to-day environment at work and home) has caught up with and surpassed Windows as a user interface. Randomly select a person, let them use linux for a month and let them judge which has the better UI...
Thu 29 Jan | joev | Actually, that would be very interesting.  I would guess that most people would give it a day or two at most, before going back to the more comforting realm of Windows.  But given a month, I imagine many of them would miss at least some of the features they had in KDE.
Thu 29 Jan | Matthew Lock | Does Apple's MS Office have a database like Access?
Fri 30 Jan | Mark Tetrode | Go talk with IBM, they are planning to replace their own internal desktop/laptop infrastructure with Linux.
Fri 30 Jan | saberworks | Depends on what your customers want/need. I have a hard time believing that this old hardware isn't supported. If all they're using is Outlook & Word, then you can DRAMATICALLY decrease your costs by going to Linux based alternatives. You don't have to pay license fees, you don't have to upgrade that hardware to meet the minimum requirements of XP compared to win95/98. You can set up a desktop using IceWM that will run perfectly on a p1 and looks and acts identical to win95/98. You can install three icons in the quicklaunch - mail, word processing, and a browser. You can remove everything else. Your workers will be more productive because they don't have all that other crap to play around with. Your it staff will be more productive because all those outlook virii will be things of the past. You only have to support a few applications, and by virtue of being Linux, these people don't even have access to mess with files they shouldn't be. None of that is innovative, but it sure will save a lot of time and increase productivity.
Fri 30 Jan | C Rose | 'Does Apple's MS Office have a database like Access?' It's not Apple's software, it's Microsoft's software. It's a port of Office that uses the OS X look and feel, and the product is called 'MS Office v. X for Mac'. MS announced the imminent availability of Office 2004 for OS X at the recent MacWorld, and this may have Access.
Fri 30 Jan | W. Schreurs | I understood MS Office for Apple never included MS Access because of Apple's (or maybe Claris') FileMakerPro which is at least as good as Access. You can also buy FileMakerPro for Windows 2000 and XP and PalmOS. http://www.filemaker.com/ Please correct me if I'm wrong...
Fri 30 Jan | Andrew Burton | HeWhoMustBeConfused, here, you want a reason not to use Linux -- I got that impression from your post -- here you go, from a Linux guy and a LAMP/web developer: The Top $NUM Reasons Not To Use Desktop Linux: 1. It's hard. You have to be able to use Wizards to install software, and you even have to use the commandline sometimes. 2. It's old technology. Linux desktops, like X and KDE, still use point-and-click interfaces. You still have to drag'n'drop objects. 3. Open Office is old. All it can do is word process, handle a spread sheet system, run a database (that sits on an operating system that runs a database server), and interaoperate with Office. Plus, if you want to use the API, you have to know C. 4. There's no defined drivers for it. All Linux has are a million-odd hackers working on, creating new, and updating drivers as they can. 5. It's secure. If you use Linux, be careful. You may not have as many contracts to come back and plug security holes, wipe off viruses (I got it right!), and edit the registry. Bah. I don't mean to blow off steam or come across as a jerk, but your talk about 'innovation' bugs me. You want innovation; Linux is open to work with, free to install on as many systems as you need, has a community of hackers and developers behind it, and has proven time-and-again to work as a desktop system, a server, and more. If you have apps that run on Windows (as I do at work) use Windows (as I do at work). However, don't discount Linux because it's desktop software isn't innovative. Show me ANYTHING about desktop software that's been created in the last few years that's innovative, and I'll bet I can show how Unix, Multics, and PDP's were doing it thirty years ago. If you need Windows, if your choice comes down to 'Well, we could use Linux and we'd need to rewrite this accounting package, which would take us a month; or we could use Windows' then use by all means use Windows. I will point out, though, spending a month and writing an accounting app that doesn't exist fr Linux, an app you could turn around and sell (ala FogBUGZ), is pretty darned innovative.
Sat 31 Jan | Stephen Jones | Strange how multi-million dollar decisions are based on rubbishy premises. Leadership and innovation on the desktop. Jeez! If they want a one size fits all, then go for XP. Some people will need it so you have no choice. If you want an otpimum set up consider replacing targetted computers with Linux, and possibly using SAMBA instead of a domain. The platform decision is going to affect all of your apps. It's going to be impossible to do a straight shift from MS to Linux
Sun 01 Feb | Shlomi Fish | I personally have found KDE to be very innovative and easy to use, and now cannot use anything else on a regular basis. With Mandrake Linux, everything is very integrated and straightforward, and I can control every aspect of the working environment with ease. Just a few examples: 1. Mozilla and Konqueror let you define web shortcuts where you can say 'gg:hello' or 'gg hello' and search Google for 'hello'. 2. gvim is a superior text editor which is very highly configurable. 3. You can easily manage your fonts with the drakfont font installer. 4. Shortcuts are text files and as such don't suffer from the 256 bytes limit of Windows (or at least older versions). 5. Drag and drop works wonderfully, across all applications. 6. gaim is a very convenient integrated multiple-protocol instant messaging client. (with file transfer only in the works, though). 7. Applications behave and don't still each other file associations. 8. Everything is themable and configurable and has a very attractive look and feel. 9. You can configure KDE to behave like Windows or like itself or like Macintosh or like GNOME or like whatever is your particular preference. 10. A superb command line which can accomplish many things that are very difficult to do with a GUI in a reasonable time.
Massive runtime download needed for CityDesk | Thu 29 Jan | Ian Griffiths
Joel claimed that CityDesk would not require any additional software to run the demo copy of CityDesk. I was sceptical of this claim - after all, I was reading it on a Mac at the time, and was intrigued to see how his no additional requirements claim would work for me. And I was right to be doubtful. But even after locating a computer with the appropriate architecture, it wasnt enough to simply download CityDesk - I had to nuke the copy of Linux installed on it, and download this stupdendously large runtime called Windows before I could get the CityDesk demo to run. But seriously... Joel thinks nothing of building code with dynamic dependencies on external components supplied by the Windows platform, because thats the platform his system runs on. With .NET we are currently in this bizarre halfway house position. Its a platform that is available on Windows but not installed by default. Its kind of like writing Win32 solutions back in the Windows 3.1 days - you could do it, and you knew that in the long run it was the right thing to do, technically, but back then it meant you had to ship users this whacking great big Win32s download so that Win32 programs would run on the Windows 3.1 platform. It was often just less painful to stick with the older 16-bit API. (And that API still works even today.) Of course after a few years, the Win32 platform was effectively ubiquitous on Windows systems. This is why Joel is able to build programs which binds dynamically to Win32 components rather than linking them in statically, yet still have people be able to just download and run them without downloading any additional components. Its not that the code doesnt depend on external components that arent shipped with the download, its just that anyone running a less-than-ancient version of Windows already has those components. Give it a few years, and the same will be true of .NET. This really has absolutely nothing to do with static linking. The demo of CityDesk depends on no fewer than 8 external components. It is most certainly *not* a self-contained statically linked program. The only programs that really fall into that category are operating systems, and embedded systems.
Thu 29 Jan | Ian Griffiths | Proof read... Always proof read...  Obviously I meant to say that Joel said that *I* would not need any additional downloads to run the demo of CityDesk.
Thu 29 Jan | John Topley (www.johntopley.com) | The first version of Word for Windows came with a runtime version of Windows.
Thu 29 Jan | John Topley (www.johntopley.com) | Actually, it might have been Excel.
Thu 29 Jan | Ken Ray | Well, as a person in charge of applications development where the organisation decided to use .Net (a courageous decision to go with Version 1.0 of a Microsoft product - one made before I got here), I have to agree with Joel. We have just migrated to version 1.1 of the .Net Framework, and upgraded our development tool to Visual Studio .Net 2003. We have been beset with numerous version conflict problems, and the Crystal Reports component that comes with the .Net framework now refuses to run. Applications that were working under 1.0 break severely under 1.1. After 18 months experience, I am prepared to say .Net is a royal pain in the butt. There are some good concepts to it, but the product itself is rather poor. To me, Microsoft are trying to compensate for the major underlying design flaws in the concept of Windows with this monolithic Framework. Not to mention how a product that has been developed in the last year or two continues to thumb its nose at current web standards (XHTML? What is that?). If I had the power here, I would throw out .Net, and move to some other development environment. Anything other than .Net.
Thu 29 Jan | Eric Sink | Yeah, I was thinking along similar lines: I wonder why Joel is so fussy about .NET when for some reason he doesn't expect GDI32.DLL to be statically linked into his binary? :-) But that argument would mostly be splitting hairs for the sake of argument. Joel is right -- the .NET runtime is a royal pain right now for apps. We mostly get away with it for Vault since most of our users already have it. But for normal people, that's a lot less likely to be true.
Thu 29 Jan | van pelt | This is the chief reason why we chose to drop an MS-access database tracking system. It was written in access 97, and when the company migrated to win2k, access 2k came with it. Abruptly no one could get into the database. Not a problem, just install access 97, right? Wrong. Configuration proved to be too difficult. We ended up spending time and effort in maintaining 2 front-ends to the same dB, with frequent outbreaks of data integrity issues caused by the dual version setup. I think that Ian's point is correct. The .NET system has to be in place and consistent for a while before it'll truly take off and be relied upon. Also, new releases that cause differences in the API should be infrequent. It was that sort of thing that caused us to re-think our database strategy, and it's that sort of thing that could cause people to turn away from .NET.
Thu 29 Jan | Semi-Anonymous Coward | Speaking of gdi32.dll, you can inadvertantly add a reliance on gdiplus.dll to your application and not even realize it until someone (hopefully not an end user) discovers the problem when running the program. For example, the ATL class CImage, which can be used for loading & saving various image formats, implicitly links in gdiplus.lib via a '#pragma comment(lib, 'gdiplus.lib')' in the header file (atlimage.h). Although gdiplus.dll can be used with Windows 98 & above and NT 4.0 & above, it only ships with Windows XP, the .NET frameowrk, or if a copy of the dll is included in your installation (the redistributable dll being available from the msdn download site).
Thu 29 Jan | Martha | Van pelt - so why didn't you simply convert the database to Access 2000? And data integrity issues? You must have had a very strange (and dare I say, incorrect) setup.
Thu 29 Jan | no name | Eric, I just read your article on MSDN, which I enjoyed. One thing that struck me though was the discussion of Java -- how you went hog wild for it when it first came out. Do you think you are doing the same thing with .NET? One of the claims to fame about Vault is that it is written in .NET. Maybe in your market that matters, but in most markets it doesn't. People just want an apps that are easy to use and install.
Thu 29 Jan | The real Entrepreneur | One BIG difference between Windows as a platform and .net as a platform: Windows doesn't change everytime there is an improvement'/bug fix in the *programming langauge.* Improvements/fixes to VB 6 are compartmentalized (largely) to just 1 or 2 MB of runtimes. Also, the old VB runtime was very stable after just a couple of years. (I think vb 6 finally made it to SP4 or SP5 after what? 7 years). So... if you're developing on .net and staying current, you're already to your second or third version of the .net distributable. .Net covers Sooo much more that it's likely to change a lot. Even if the change is unrelated to what you're working on.
Thu 29 Jan | Sum Dum Gai | 'Windows doesn't change everytime there is an improvement'/bug fix in the *programming langauge.*' Just about every single Windows service pack will break some program. Usually it's only obscure ones, but that have been some big ones in the past. Windows NT had 6 service packs (more if you count the minor updates to existing service packs). Windows 2000 is at service pack 4, and likely to get another in the future. Windows XP is at service pack 1, and likely to see service pack 2 fairly shortly. The .NET runtime has had one 'service pack' in the couple of years it's been out. It's really not doing too badly, especially considering that a service pack stand alone download usually clocks in over 100mb, where as the .NET runtime is closer to 20.
Thu 29 Jan | Brad Wilson | .NET 1.0 has actually had two service packs. Unfortunately, SP1 was the "paranoia" service pack where Microsoft turned off Internet code because they suddenly didn't feel comfortable with it. They turned it back on in SP2 (which I'm sure must've fixed some other bugs, too :-p).
Thu 29 Jan | Brad Wilson | Oh, and the .NET service packs show up as critical updates.
Fri 30 Jan | RonSo | Interesting how little is said about the Java runtime environments.  MSFT is not alone in going down the massive download and version hell of runtimes.  However, static linking is not the answer.  How exactly would you go about creating the kind of malleable interface most portals now provide?  Would you be able to drag in web parts at will?  With flexibility comes complexity.  Keep the pressure on MSFT to do a better job of diagnosing and repairing version incompatibilities.
Sun 01 Feb | Ian Griffiths | So what it boils down to is that some applications will be able to exploit .NET sooner than others. Some organizations roll out .NET as part of their standard desktop setup. Some ISVs sell vertical solutions where they get to pre-install .NET. Some people are writing server-side solutions where only one machine or a small number of machines need the framework installed. (I've developed .NET solutions in all three of these scenarios in the last couple of years.) In these scenarios, deploying the .NET framework is either easy, or a complete non-issue. But I would certainly agree that for desktop applications that need to run on machines you're not in control of, we're at a point where the benefits it offers have to be balanced against the fact that it's not ubiquitous. For some (indeed many) applications, it won't be the right way to go right now. So I'm certainly not criticising Joel for not using .NET in CityDesk! I'm just pointing out that this isn't a new problem, and it has nothing to do with static linking. The fact that, as someone else pointed out, an early version of Word or Excel shipped with a runtime copy of Windows indicates that this problem has always been with us: the 'Do we target DOS or Windows?' question was no different in its day to the current 'Do we target Win32 or .NET?' Static linking has never been a solution, and probably never will be.
Downloading Runtimes | Thu 29 Jan | John Topley (www.johntopley.com)
As a developer I already have the .NET and Java frameworks installed on my home PC. If I didnt have them then I wouldnt have any qualms about downloading using my 56K dial-up connection*, provided the downloads were resumable. My ISP automatically disconnects me after two hours so its not practical to download large distributions in one go. Out of interest, does anyone know if the downloads are resumable? * (I know I really should get broadband, I just havent got around to it yet. Broadband isnt an option for many people though.)
Thu 29 Jan | Sum Dum Gai | Downloads from microsoft.com have been resumable in the past for me, I have no idea whether this is currently the case or not.
Thu 29 Jan | John C | If you download something like a CD image from MSDN then they are resumable, I forget what it's called but there is some kind of MS download manager that pops up. I don't think any of the free downloads like the .NET framework use this method however.
Thu 29 Jan | Kirk Murrell Halgren | Look into RealDownLoad at http://service.real.com/help/faq/rdown4/rdownfaqa03.html or SmartDownLoad , installed as part of NetScape Communicator. Either work with servers which support resumable downloads. If you find that the site doesn't, try Download Accelerator Plus at http://www.speedbit.com/ which is supposed to work with any file less than 10M, on any server. “We should forget about small efficiencies, say about 97% of the time: Premature optimization is the root of all evil.”—Donald Knuth
Thu 29 Jan | Just me (Sir to you) | Automatic updates uses the Background Intelligent Transfer Service (BITS) From the BITS faq (http://www.microsoft.com/technet/treeview/default.asp?url=/technet/itcommunity/Newsgroups/BITS_FAQ.asp): 'What is BITS? BITS is a Windows Infrastructure that provides a set of API's for develo'pers to use to request file transfers over http. BITS provides a Queue management of all the requests submitted by multiple applications, and processes one request at a time. BITS transfers these files on behalf of the application in a throttled fashion. Throttling the transfers mean that BITS only uses the left over bandwidth of the system. BITS also restarts transfers from where it left off, so in cases of network disconnects and machine reboots, all transfers are resumed efficiently. '
Thu 29 Jan | moses whitecotton | Funny how things come around, Joels complaints about the runtime are the same things I heard about the old Visual Basic and one reason people said Delphi was going to rule!
Thu 29 Jan | Hermaphrodite | Resume rule #x: Don't hire developers w/o broadband? I kid! I kid!
Thu 29 Jan | John Topley (www.johntopley.com) | LOL! I don't know if it's still true but I read once that Microsoft used to deliberately give their developers low spec PCs so they wouldn't be tempted to always code for high end machines.
Thu 29 Jan | Maximum Overdrive | Don't use Download Accelerator Plus. It's crappy. Use FlashGet - recommended by \/\/arez board members on the entire earth! Seriously - FlashGet kicks serious ass.
Thu 29 Jan | good luck | I could be wrong, but I think Download Accelerator Plus is spyware.
Thu 29 Jan | runtime | I knew a developer at Microsoft who used a 486 as his main dev machine! This was back in 1998. His boss wanted him to upgrade, but he refused. He felt the 486 would give him self-discipline. :-)
Sat 31 Jan | Stephen Jones | Can't you use "Get Right"?
Sun 01 Feb | Li-fan Chen | runtime, are you for real? Philip Greenspun once said that he heard some story that an exec fired a web team when he tested the pages developed over a 14.4k line and it took forever to show up.
A linker for .NET? | Wed 28 Jan | Andrew Cherry
OK, im not sure im well enough qualified in compiler design to really comment on this (I skipped that module at uni for HCI instead ;) ), but I can think of questions... So - if this would be so useful and the technology exists (which Im sure it does, for c# at least) why do you think MS is preventing it? To speed take up? Bloody mindedness? Strikes me as less likely... Secondly - are manifests really that hard? Wouldnt a GUI tool for manifest generation sort this? I havent tried to fiddle with them that much. Thirdly - if this was so obvious, why didnt Sun do it with Java? Technological or political barriers? Ok - im not saying that any of Joels points were wrong, its not really my field, but I am curious as to what others think, and any other theories people have on this.
Wed 28 Jan | anonymous | It's not a linker they need. They had one in VC++/VB6 and they still had DLL hell with mismatched versions of shared libraries. What you may be looking for is a way to compile all your assemblies into a single Intel binary. With all the interdependencies of libraries, components and objects, this may not be possible.
Wed 28 Jan | Eric Bowersox | I'm thinking that what Joel is looking for would be a C#/CLR equivalent of GCJ, the GNU Compiler for Java (part of the GCC project). GCJ can compile Java source to native code object files, and can also compile bytecode (Java .class files) to native code object files. These files then get linked with libgcj, which contains the core classes ported to native code as well as a garbage collector and bytecode interpreter (so GCJ-compiled apps can still load and use Java bytecoded classes), to make a native executable. It's not perfect at the moment, but it's a decent solution for many applications. Unfortunately, I don't know of any such effort for C#/CLR code. Perhaps eventually something like this might be an outgrowth of the Mono or DotGNU projects.
Wed 28 Jan | Dan Maas | I think Microsoft and Sun are operating under the assumption that dynamic linking 'works.' i.e. that you can 'upgrade' the implementation of an arbitrary library and expect no problems. This is the common wisdom on dynamic linking, right? That you can 'upgrade' a library to fix implementation bugs, and you save memory because all client applications share the same library. I think Joel is one of a growing minority that realizes dynamic linking isn't the panacea it appears to be. In the real world, the connection between client application and library is often so intimate, with both relying on implementation bugs or quirks of the other, that upgrading a DLL to a new version is an accident waiting to happen. Personally I also think the fewer dependencies, the better. Link everything statically except for the fundamental core libraries that must be dynamic (USER32, GDI32, etc).
Wed 28 Jan | Joe Ganley | No! Dynamic linking is a good thing. It's perfectly fine to statically link everything when you have a little product like FogBugz, but where I work we have about a hundred products that all share a common framework. Currently they are statically linked. This means that (a) the exe is HUGE, and (b) EVERY SINGLE PRODUCT must release simultaneously. We're replacing this framework with one that is COM-based, with each product (and many components of products) as separate modules. This way, we can update, bug fix, and upgrade individual pieces without making the user get a whole new giant exe, and without forcing the whole world to release in lockstep. I see your point about .NET, but most of your complaints are about Windows (e.g. the need to reboot all the time) rather than about dynamic linking itself.
Wed 28 Jan | K | Sure it'd be nice to have a linker, but it'd be nice to have world peace too. You can have users download the runtime and install it with your app, its not a movie length install because you don't have to install the latest IE (assuming they don't have less than IE5.5) and you don't have to install the critical updates that require reboots. Its not quite as bad as Joel makes it out to be. I think the benefits of the runtime far outweigh the occasional pain in the ass install - garbage collection, no dll hell, etc.
Wed 28 Jan | Brad Wilson | 'I think Microsoft and Sun are operating under the assumption that dynamic linking 'works.' i.e. that you can 'upgrade' the implementation of an arbitrary library and expect no problems.' Actually, no. .NET has the concept of 'assembly evidence'. What .NET encourages is not backward compatibility, but side-by-side installations. Although they can do some overrides in this are (such as running a 1.0 app on the 1.1 framework), I don't think that they encourage that in the general case. It's very hard to do right.
Wed 28 Jan | Mike Fedyk | Uhmm, how about including the .net runtime in your installer? How about unstalling only .net in windows update? Oh, and those messages you had to press 'OK' for were the certificate questions about installing software from a web site. It's useless for you anyway, so just click the 'trust all software from ms' check box...
Wed 28 Jan | Lenny Turetsky | I think AC is right to make the Java comparison, and it's apt for several reasons. SUN didn't release a static linker for Java - or even a native compiler - for the same reason that Microsoft doesn't want to release a linker for C#/.NET: they want independent software developers (ISVs) to be the channel that gets their runtime installed on users' computers. How did this work out for SUN? Well, Java has gotten pretty popular. For server-side software. But not for desktop applications or the applets it was originally touted for. Much of the reason is that desktop application developers were faced with the quandary that Joel outlined and decided to avoid it by avoiding Java. (Inability to get native-level control of the look-and-feel was another, smaller reason. Performance was a red herring.) With that said, things may be different once .NET becomes ubiquitous in the way that Windows is now ubiquitous. Joel and Fog Creek seem comfortable with testing and releasing their software on several versions of Win32 (Windows 2000, NT, XP, etc.) Until then .NET may only hold traction in the server-side space, where developers can assure the availability and version of the .NET runtime. /LT>
Wed 28 Jan | Michael | And Joel, you didn't have to install the .NET runtime from Windows Update. You could have installed it from the Redistributable download Microsoft makes available. You can ship your product (or the demo) with the redisributable and avoid putting your customers through 2 hours of Windows Update reboots. (but your systems should have those patches anyway!). Go to http://msdn.microsoft.com/netframework/technologyinfo/howtoget/default.aspx#section3 and read about Microsoft .NET Framework 1.1 Redistributable.
Wed 28 Jan | Tom Ball | Your column reminded me that Microsoft has always considered a linker to be an afterthought.  Back in the early '80's I worked for a company that developed Intel-based workstations, Convergent Technologies.  Microsoft traded complete rights to their COBOL compiler (a big deal then) for our linker, which they used basically unchanged.  That's why all version 4 .exe files and earlier all started with "GW", which are Greg Walsh's initials, one of Convergent's lead engineers.
Wed 28 Jan | Andy | Uh, I mean isn't the obvious probem the same problem that .DLLs are meant to solve. There is no good reason to have multiple copies of the same code running all the time. If everyone statically links in all the functions they need, that's a big waste of memory. It's a tradeoff. One the one hand you save a lot of memory by using .DLLs or the .NET runtime, and you can supposedly get upgrades for 'free' -- but on the other hand you now have something that can change beneath your feet that you have to test.
Wed 28 Jan | Robin Debreuil | The whole argument here is this won't work without resorting to understanding 'manifests' - which is deemed impossible. Please! Also, overlooked is the reason a runtime is used in the first place, which are numerous. Take even code security for example - how can you insure that if your final file is a traditional win32 exe? Note that even they require a 'player' (much larger that 20mb too), it is just distributed differently. If it took 2 hours to install a program that took 60 seconds to make, I'd suggest spending an extra 5 minutes putting in an installer that links to the .net redist next time - if that is what you need... This really strikes me as an 'I don't understand this so it must be wrong' argument, sorry.
Wed 28 Jan | Lee | Longhorn, the next version of the Windows desktop platform WILL have an integrated .NET runtime shipping with it. I know that's a long time off, but let's face it, it's kind of hard to include the runtime when it ships AFTER the OS (i.e. Windows XP shipped before .NET framework 1.0). Windows Server 2003 included the framework 1.1, so it doesn't have this problem. So I think that it shows the new pattern, that a version of the framework will be included in future releases of the Windows platform, but it's hard to go back in time and add the bits to the box after they ship... None of this changes the issues today, but having a linker that would have to put all needed parts of the framework into each executable wouldn't be something people would like either. Then the complain would be, 'Why are all my .NET executables at least 15MB in size' (guessing that putting in at least the runtime and base class libraries in there would add at least that much, and some programs might be even larger). And now people would be upset having to download the redundant runtime support code (even embedded in each program) over and over again. So you can't win with a linker either, you just change the complain to something else. If you want distribute .NET based programs from the web, add a link to the location of the .NET runtime redistributable. It's no different than people who add links to the Flash, Quicktime, Adobe Acrobat Reader, or other needed product to their site and tell user to go there first if they don't already have it. Or host it on your own site, if you don't want to link to Microsoft. You can find the redistributable runtime at: http://www.microsoft.com/downloads/details.aspx?FamilyId=262D25E3-F589-4842-8157-034D1E7CF3A3&displaylang=en which offers all the different languages the runtime supports as well.
Wed 28 Jan | Albert D. Kallal | >It's not a linker they need. They had one in VC++/VB6 and they still had DLL hell with mismatched versions of shared libraries. No, but they never had a linker that let you take out of the VB runtime library what you need, and use that. Big difference here. Joel is obviously asking for a linker that grabs all that code crap and puts into one dll, and you .exe application (or, just one .exe). Further, the whole point was that the linker SHOULD give you a option to static link. In other words, go through all those library things on your computer, pull out exactly what is needed, and link it. This would be FABULOUS for all ActiveX controls you use also. That way you have no dependencies. That way, even when some other application comes along and updates the ActiveX calendar in office, it will not start breaking other applications (I deal with this type of dll hell many times). In addition this would mean that you don’t need the VB runtime installed on the PC either!. Further, if the linker ONLY grabs what code libraries and dependencies it needs, the size of the resulting code is not TOO large. Further, for general stuff like text boxes etc, they are windows a api’s anyway. A lot of just forms and user interaction is windows api. So, in fact, a lot of that runtime stuff IS NOT ever used! We never did have a static linking option in VB, and it would have really nice. With VB, it would be nice to link in certain parts, especially some ActiveX controls. Those ActiveX controls are not that large, and usually a product only has a few special ones your use. It would be nice to link in those, and not have to use the existing ones, since they CAN change. So, even if I can’t link, or grab parts of the VB runtime, it sure would have been nice to link in other dll libraries, and especially the ActiveX controls used (heck, should the linker should assemble this extra junk into ONE nice dll lib for you). If one could do this, then installing other new software would not break my application. Now, back to the issue of the runtime library. Few, if any VB developer complain about the runtime library? Why is this so: Answer: The runtime library is stable, and not changing. If a runtime library is stable, then the benefits QUICKLY move to using a runtime library in place of static linking. You can compile and create applications that are EXTREMELY TINY in VB6. If that runtime library is stable, and not changing, then without a doubt, then that runtime library becomes your friend. In the case of Joel’s problem, the bad evil guy is not a runtime (in this case the CLR). The bad evil here is dealing with a runtime THAT CHANGES! That is the real problem here! The solution I suppose would be either to not change the runtime, or have given us a static lining option. Perhaps after a few years, and the CLR becomes stable (or us developer get really familiar with it and learn what not to use and what not to do!), then we would STOP using static linking. It would also be nice way to treat the developers. And now, the onus would be on MS to get its runtime real good, we are happy enough to stop static linking! Right now, the onus is on the poor developers to hope that this moving target does not break anything! I mean, after all, we can very much consider the windows API a runtime system. We don't complain about the windows API being a requirement for our software. I mean, really...how about we link the whole windows system into each application! Really, I mean, if runtime is bad, then so is the whole windows API! The main reason why we don’t complain about the windows API is because MS makes real sure that it don’t change, or makes a very huge and honest effort not to break anything. So, the real evil here is not a runtime, but a changing runtime. If the .net runtime don’t change, or if when we update it there is no breakage or problems with our software...then we don’t have a problem. Albert D. Kallal Edmonton, Alberta Canada kallal@msn.com http://www.attcanada.net/~kallal.msn
Wed 28 Jan | Chris Tavares | The amusing thing is that .NET *does* have a linker - al.exe. It's command line only, and VS.NET doesn't use it because it doesn't do multimodule assemblies. But there is one there. Of course, the lack of the linker isn't what Joel was complaining about; he was complaining about having to distribute the runtime. And yet he ships VB apps, which have the *exact* *same* *problem*. It's just that, VB being older, the runtime's already installed. To be honest, MS isn't really targetting the desktop application market with .NET; they're targetting the server space where these kinds of problems just aren't an issue. They already own the desktop app space, after all.
Wed 28 Jan | Mike Neale | Sounds like MS have been plagarising Sun again. Java also has this problem (despite GCJ, you legally cant pull apart the swing libraries). Java even has manfests in its jars (same terminology). There are commercial tools to strip down the libs, and combine them together (the closest you get to linking) - but they have limited success. They run into trouble with things like reflection and lazy class loading. I have no idea why they are so adamant on stopping you create monolothic executables. No idea... Oh and CityDesk is NOT the best example of a simple distribution. I remember I got a polite message telling me I needed the windows scripting lib/host (I think) and it directed me to microsoft. From there on I was on my own, and had to work out what to do, then redo the install. I think it was because I only had IE5.0. For a good example of monolithic executable friendly GUI apps, check out http://www.memecode.com/ (he is a bit obsessive about not needing an installer, or dependencies etc).
Wed 28 Jan | flamebait sr. | I think that, between nobody wanting to use .NET for something shrinkwrapped until most users have the redistributable, plus the new Longhorn APIs, is going to bode poorly for MS. The longhorn one is great. MS needs something new in Longhorn to sell, hence all of the new APIs. However, nobody's going to use them until there's installed base. .NET gets some installed base simply because an existing windows system gets a free upgrade. But MS can't do that especially well with Longhorn. Sure win32s worked, but times have changed somewhat. The problem with the .NET linker is that the environment is pretty heavy-handed; I'm not sure if a linker is enough to make it acceptable for shrink-wrap software.
Wed 28 Jan | Mike Neale | But MS are forcing .Net down your throat, no matter what you think. Sure, there are still lots of VB and MFC 'legacy' apps, and will be for some time, but that won't stop them dropping and real support for the non .Net way (which includes MFC an so on).
Wed 28 Jan | Brad Wilson | 'But MS are forcing .Net down your throat, no matter what you think.' There's nobody at the door with a gun, making me write .NET code or else they'll shoot my dog. Sheesh.
Wed 28 Jan | Robert Jacobson | > This really strikes me as an 'I don't understand this so it must be wrong' argument, sorry. < I have to reluctantly agree. One of the touted benefits of .Net is that you can use XCopy deployment with it. However, that only works if the target machine already has the Framework installed on it. From a practical standpoint, it's really user-hostile to just dump a .Net exe on an end user and expect him or her to download the framework independently. No wonder his 'midnight countdown' distribution didn't go well. If Joel really wanted to distribute a professional .Net application, he'd just need to create an installer package. (The installer setup that comes with Visual Studio is probably fine for most needs -- no need to resort to InstallShield.) The package could either include the Framework Redistributable, or prompt the user to download it the Framework separately from WindowsUpdate if needed. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetdep/html/redistdeploy.asp Also, he could have two packages -- e.g., a 28 MB package that includes the Redistributable, and a 5 MB package without it. His site could use a script to determine which version the user needs, and recommend an appropriate version. Yes, the 22MB size of the redistributable is a PITA, but Joel's parade of horribles seems overblown.
Wed 28 Jan | Mister Fancypants | Who cares if all your applications are 10 megabytes and include 8 megabytes of shared code that could be in a DLL or share assembly? I've got a 160 gigabyte harddrive that I'm unlikely to fill for the next 4 years at my current usage rate. I've got room to spare, Microsoft, Sun. While I admit 160 is a bit much for Joe Compaq, how many applications do you think he's installing? 5 a day? Let us create monolithic static-linked executables! It isn't the fucking 80s and the miniscule space wastage is worth the compatibility guarantees.
Wed 28 Jan | Ryan Duffield | Has anybody tried the Salamander .NET Linker? http://www.remotesoft.com/linker/index.html
Wed 28 Jan | Dan Maas | Statically linked executables aren't necessarily huge. There is a wonderful C library replacement for Linux called dietlibc; many applications statically linked against dietlibc are smaller than if they are dynamically linked against glibc! Part of the reason statics can get huge is that library developers have stopped (or never adopted) the old practice of putting each library API call in a separate .c/.cpp file. Some linkers unfortunately decide to include or exclude code on a file-by-file basis, not a function-by-function basis. Also template-heavy C++ like STL and CORBA implementations can inflate executables a LOT. I've seen ranges between 600KB and 12MB for executables that do basically the same thing.
Wed 28 Jan | The real Entrepreneur | 'And yet he ships VB apps, which have the *exact* *same* *problem*. It's just that, VB being older, the runtime's already installed.' NOT TRUE. The VB 6 runtime is about 1.1 MB. 1/40th the size of the .net Runtime. (The .net Runtime is actually more like 40 MB. The COMPRESSED size is 22 MB. ALSO, .net requries IE 5 (or is it 6 ?) or greater. That's even HARDER to install. And potentially problematic. Remember the horror stories from the old I.E. 5 or 5.5 upgrades. P.S. Do folks with customers really think that this is a non-issue for your customers?
Thu 29 Jan | Mike Neale | 'There's nobody at the door with a gun, making me write .NET code or else they'll shoot my dog. Sheesh.' Don't be so sure... ;) Seriously though, MS sees it as the future. Otherwise, where is VB7? (non .net) and so on. They can't physically force you, but if they stop support, eventually it will die. Of course, I imagine MFC will be kept alive for some time. I can't beleive that everyone doing VC++ style ISV things will all switch to C#.
Thu 29 Jan | Just me (Sir to you) | Ok, here is my guess: Wouldn't linking to a good old win32 .exe remove all af the advantages of the old platform? Let's see: here is this code I download form a website. If it is a .NET program, then based on all the evidence I have I can selectively allow operations to take place or not at a very finegrained level. This allows me to trust things like href .exe's etc. I >know< they are going to be contained in a nice sandboxed environment. The basic idea we already got with Java, and .NET has taken this to the next level. Now if the code ws a regular .exe, produced by the fabuled linker, the 'runtime' is just good old Windows. Yes, the nice thing about this is that the user does not have to download it, but this also means you have non of the benefits of the .NET runtime as a user or administrator. Yes, you could try to muck around with 'Run As' and a less priviledged account etc. but .NET just makes this a few orders of maginutde simpeler and more powerfull. Yes, having to provide the runtime for those that do not have it already is inconvenient for now. But the 'linker' scenario, while keeping the advantages to the developer of having this nice productive .NET environment would deny all benefits of the modern runtime to the end user.
Thu 29 Jan | Just me (Sir to you) | 'Wouldn't linking to a good old win32 .exe remove all af the advantages of the old platform?' Of course this should read >new< platform.
Thu 29 Jan | Peter Ibbotson | For my customers, it's a non issue. Our setup.exe is currently over 120Mb, but then we don't do demo download versions over the web. Manifests do solve the 'wrong version' problem so if you need back track to an earlier version because the new runtime screwed you life is OK. (I would recommend strongly that you try it!) It's better than problems you used to get with MFC, various subtly different broken versions around on users hard discs, and which one you got depended on which app loaded first. I haven't seen the MFC problems for a VERY long time. Joel has forgotten how the office 95 (and I think the 97) team got around this problem they force overwrote your DLLs regardless of version number (NB I may have the wrong MS product here, but I'm sure I remember one of them doing it).
Thu 29 Jan | Rick Byers | Although I think there is an interesting argument to be made in favour of static linking, I don't think static linking in .NET would be at all practical except in extremely limited situations. As others have pointed out, I think Joel's main argument is fueled by his frustration with the Windows update process which is completely a seperate problem. It would be pretty cool to have a utility that transforms simple .NET apps that don't make use of runtime-supported features (Code-access security, Remoting, reflection, etc.) into self-contained native applications. But it would eliminate much of the value of the .NET platform, and so would only be practical in very limited situations (like, perhaps, Joel's countdown clock). The whole model of .NET revolves around self-contained self-describing assemblies (packaged as .dlls and .exes). This is one of the big advantages of .NET over Java. I think of the .NET runtime as the evolution of the Windows operating system. It would be pretty silly to statically link with all the windows system libraries. Sure there will be some pain when upgrading from one version of the runtime to the next, but just like upgrading OSes 90% of the problems arrise due to developer relying on some undocumented behaviour. I think Microsoft did a pretty good job of making .NET 1.1 backwards compatible with 1.0 (much better than WinXP being compatabile with Win2K), but they also did a good job of ensuring that apps designed for .NET 1.0 can continue to run in the 1.0 runtime even after 1.1 has been installed (in most situations this is the default behaviour). Anyway I normally highly respect Joel's oppinion, but in this case I think its mostly a case of wanting .NET to be something it isn't and wasn't designed to be.
Sat 31 Jan | Luci Sandor | >There's nobody at the door with a gun, making me write .NET code or else they'll shoot my dog. Sheesh. Did you recently paid a visit to the ActiveX/COM section of MS site? Even the specs for COM were withdrawn and links are mostly 404. And this not vaporware, lots of programs are still based on ActiveX objects. What do you know about Visual Studio 6 Service Pack 6? Is in beta for like a half of a year. It seems it's like Win NT4 SP6a, as far as I know Windows NT is still in extended support, but no service packs are scheduled because it works flawless or because it is a marketing scheme. The ugliest thing I saw was the moment when MS removed the OpenGL section of the MSDN Online. Suddenly opengl.org became a pile of 404's from around the world, from universities and corporations, though the two most important graphic chip sellers were writing newer OpenGL drivers and were planning the specs on the next version. It is a thing that starts from small issues: I never understood why they didn't provided a Mini size to WMP 9 in other Windows versions than XP (I'm talking about the Windows Media Player minimized in the taskbar, but wit all the controls available). I know it could be done, even Google draws windows over the taskbar, but it was the X factor - the thing that should tell me XP is better than 2000. Well, I'm not biting and I'm sure Win32 plain C is the best way for an desktop app. But wait, there's no funny wizard, what should we do? Torture the poor devs, force them to write code? Win32 was the most reliable thing in the last 9 years. If it worked on Win95+IE4, it works now; the rest (MFC, VB runtime, Java and even the young .NET) were morphing into something more powerful, yet different on things that should be supported. http://www.gotdotnet.com/team/changeinfo/Backwards1.0to1.1/default.aspx (Microsoft seemed ashamed of these changes, so they pointed me to a 'independent' site.)
Sun 01 Feb | Chris Nahr | My MSDN Library, January 2004 edtion, has the usual sections on COM and ActiveX. Microsoft likes to move pages around, did you try searching for a new location?
Signs Your Company Has Hired A Bad Programmer | Wed 28 Jan | Poor guy who has to work with this loser
1. Uses AOL for his home email/internet access 2. Doesnt know the difference between an IP address and a MAC address 2a. When you mention a MAC address, he thinks youre talking about Apple computers 3. Was previously unaware that you could have more than one monitor connected to a computer 3a. Asks if multimonitor setups can be used on all video cards by using some sort of y-cable 4. Tries to impress you by mentioning how much time hes supposedly spending at home each night, learning to use a certain programming language. Problem is, he was hired because he supposedly knew this stuff already. But now hes busting his tail to learn it. From scratch. And he wonders why youre not impressed. To be fair, this is a fault of my companys hiring practices (which Im not involved with) as much as it is his fault. 5. Wears a Java shirt even though he cant code in Java (this is not the language Im referring to in #4) 6. Has breath that smells like a plate of wet tuna fish thats been left in the sun for a while and possibly urinated on. Im sorry, I know programmers sometimes have little hygiene problems, but if venturing within ten feet of you is a problem, thats taking things too far. 7. Keeps talking to you even though you have donned headphones for the express purpose of ignoring him. No, I DONT feel like walking you through the Hello, World example chapter, you cluess pile of dung. 8. Youre building an n-tiered application, and you explicitly and repeatedly inform him that hell be working on the presentation tier ONLY. He spectacularly fails to understand this, and pesters you with suggested database designs (that suck). Trust me, hes not knowingly overstepping his bounds here. Hes absolutely failing to *comprehend* his bounds because he does not understand the concept of separation between the presentation, business logic, and data layers. ...more as I think of them... feel free to add your own. And remember, *I* was not involved in the hiring of this guy- we have a stunningly inept CTO/co-owner who THINKS he knows technology who insists on evaluating and hiring people himself, with frequently-disasterous results. Like this one.
Wed 28 Jan | Michael H. Pryor | LMAO
Wed 28 Jan | Richard P | If you will be judged by the success of this project, not just on your contributions, then you are in an unfortunate position. You should immediately: 1) Give this bad programmer some busywork to destract him somewhere completely unrelated to the success of the project so that his bugs won't ruin your good work. Tell him to photoshop up some icons. This will take him alot of time. 2) Suck it up and resign yourself to the fact that you're going to be doing his work for him. Just make sure he doesn't get the credit. If you are confident in the security of your position or your ability to find another job, you will probably want to try and get management to realize their mistake and fire him ASAP or he will continue to drag you down.
Wed 28 Jan | Poor guy who has to work with this loser | the real shame is that there are plenty of talented, out-of-work developers without jobs. meanwhile, THIS mongoloid gets a paycheck every week. he's playing a pretty crucial role in a crucial project, too. so we have to pick up his slack. should this project fail, it's not a stretch to say that all of us here will be among the ranks of the unemployed.
Wed 28 Jan | no name | 9. They make lists of how all the other programmers suck.
Wed 28 Jan | Poor guy who has to work with this loser | richard p, i agree with you totally. we've already given him busy work (documentation, etc) and resigned ourselves to the fact that we're gonna be doing his work and trying to keep him out of our hair. the management situation is a bit weird. basically, the guy in charge of the project realizes this dude is clueless and that hiring him was a mistake. however, for typical and predictable political reasons, it's impractical to get the clueless dude let go because that would amount to the 'CTO' admitting that he screwed up. so we're stuck for now. (the situation is out of my level of responsibility; i'm not a project lead or manager or anything. if it were up to me, i'd give a big middle finger to 'office politics' and fire his ass. this is probably why i'm NOT a project lead, haha)
Wed 28 Jan | Savage | I inherited a project from two software developers that left the company in quick succession of each other. They resigned before I joined the company a few months ago. They had the project for over a year and I've inherited the code they wrote. Basically it consists of little more than a Visual Basic user interface and shards of code underneath at most 20% finished that are either commented out or taken out of the execution path. Basically they did little more than a badly laid out user interface with practically no working code underneath. Before the last software developer left he said the application is at alpha release stage. Ha. It is somewhat a vast overstatement that a user interface completely incapable of doing 1 sensible thing other than being displayed is an alpha release. And to think these two software developers pissed around for a whole year on good salaries while I was unemployed and trying to find work. Last year I implemented working code for a big missing area of functionality underneath their user interface. Now I've chucked everything they spewed up without thought away and am beginning again. I'm making reasonable progress.
Wed 28 Jan | Poor guy who has to work with this loser | 9. They make lists of how all the other programmers suck. ------ lol. good point, and possibly truer than you know. i'm actually making this list at a time when i'm supposed to be finishing up some *real* work. okay, break time is over for me... back to work. :-)
Wed 28 Jan | Full name: | 1. Uses a l337 e-mail address and laughs at my AOL address. 2. Lectures me endlessly about the difference between a MAC address and an IP address. 2a. Laughs at me when I suggest a MAC address might be something my iPod should use. 3. Connects more than 1 monitor to his computer. 3a. Using highly specialized hardware. 4. Isn't impressed by my efforts to better myself. 5. Hates Java. 6. Has good personal hygiene habits. 7. Doesn't want to talk to me. 8. Thinks he's a better programmer than I am and doesn't listen to my suggestions to improve the database design. 9. Writes about me on JoS.
Wed 28 Jan | Poor guy who has to work with this loser | oh no!  i've been discovered!  haha
Wed 28 Jan | Vince | LMOA Hahahah
Wed 28 Jan | Andrew Burton | Speaking as someone who uses AOL as a home email address, I agree with #9.
Wed 28 Jan | Your friend | 'we have a stunningly inept CTO/co-owner who THINKS he knows technology who insists on evaluating and hiring people himself, with frequently-disasterous results.' And he also hired you? (sorry, couldn't resist).
Wed 28 Jan | Josh | Simple.  Start a sexual harrassment suit.
Wed 28 Jan | Me | A real story: Working at Qantas (airline) as a contractor. They hired a permanent 'senior' Analyst Programmer. Qantas is heavy into transaction processing, and our area mostly dealed with relational databases (SQL Server and oracle). So it would stand to reason that this guy (with many many years experience) would be comfortable with RDBMS. He: 'A table, thats like a file, right?' Me: 'ahhh... yeah.....' My real story. Please don't tell anyone.
Wed 28 Jan | PDF | 1) The programmer offers to do work for you without being paid 2) The programmer takes up another job elsewhere and forgets to resign 3) The programmer is more interested in chatting on MSN then doing real work 4) The programmer forgets to shut and locks doors 4b) The only door the programmer remembers to shut and lock is their car door, with the keys inside 5) The programmer forgets to turn off the cold tap in the bathroom 6) The programmer writes more sms's on their mobile phone in a day then writing code All true... most of them repeated numerous times. Needless to say they don't last very long with us and blow their chances on getting a nice reference for their next job application.
Wed 28 Jan | I like beaches | Me, the Qantas story doesn't surprise me. Qantas is the company with the female CIO who looked over the staff list and said there were too many people over 40 or something similar.
Wed 28 Jan | Sam Livingston-Gray | I always feel vaguely like a cult member when I link to Joel's articles on Joel's discussion board, but... I feel compelled to remind you of #4 (Neutralize the Bozos) on the following article: http://www.joelonsoftware.com/articles/fog0000000332.html And I'll add that if the guy's *only* problem is the kind of cluelessness born of lack of exposure, it's remotely possible that if you spend enough time doing 'neutralization' stuff to keep him going, he may eventually learn something and become a productive citizen. If, that is, he doesn't get himself fired first, and/or suffer from the congenital form of cluelessness. (=
Wed 28 Jan | Me | 'Qantas is the company with the female CIO' Yes, fiona is her name. Your expectations are correct.
Thu 29 Jan | Smitty | Poor Guy, Is the 'loser' programmer one of the CTO's buddies or distanct relatives? If nepotism is suspected, then you probably can't do much to get him fired (unless he screws up royally). If things don't shape up, you're better off trying to transfer to another dept or start looking for another gig.
Thu 29 Jan | Julian | Of course, there are plenty of good programmers, including myself, who aren't familiar with MAC addresses and haven't dealt with multiple-monitor setups. Different programming jobs require the use of different technologies. Here are my signs of a bad programmer: 1) Requires everything to be explained multiple times. 2) Needs all tasks to be separated into tiny bite-size pieces [and the separation takes longer than writing the code myself]. 3) Consistently writes code with obvious bugs noticable after a cursory review.
Thu 29 Jan | no name | The real lesson in this thread is the insight it provides into programmer culture and the continual readiness to challenge people who should be colleagues. You just don't get discussions like this among lawyers or medicos. You get bitch sessions, but they're quite different.
Thu 29 Jan | Tim Sullivan | > 1) The programmer offers to do work for you without being paid < I had this happen after my last hiring cycle. It was embarassing for both me and the potential hire. At one point he asked 'if it's free, what do you have to lose?' and I had to explain that we needed to furnish him with a computer, and a place to work, and someone to spend time training him, and about a million other little things that make a 'free' programmer cost money we didn't want to spend on someone who was placed on the 'no hire' list. I wish people would take 'no' for an answer.
Thu 29 Jan | Rob Meyer | That's because of the heavy mentorship and practical exposure that goes into the education of new doctors and laywers. So after graduation or shortly after, most doctors and laywers are at least minimally capable of doing their job. I don't think you can say the same for programmers. I think the average software shop (at least in the IT, in-house world) has very few developers who are really capable of developing a reasonable volume of software, sufficiently well designed and implemented so that it doesn't cause major headaches for others on the team.
Thu 29 Jan | You Are Not Alone | A. Doesn't write design docs unless you explicitly say so, every single time. B. Treats every peer review as a personal insult. C. Thinks a test case is something to do with the law. D. Knows the law on grievance & disciplinary procedures in suspicious detail. E. When you explain what they are doing wrong say 'no, its my IDE/environment/source control/you/her perfume'. F. replicate the source control system on their workstation because its 'broken'. G. Uses the 'there is this ancient code without documentation, why should I bother' route out of criticism. H. Uses the 'someone else made the same mistake once, so you can't criticse me' route out of criticism. I. Uses the 'you made a spelling mistake in your work design doc so I haven't any work for a week' route out of criticism. J. Gets fed up with the peer review process & management process because it is designed to get at them personally and starts putting guerilla fixes in the build. K. Look surprised when you finally walk up to their workstation, pull out the power and say, please go with this security guard . . .
Thu 29 Jan | Coder-at-arms | Specialisation is one thing - developing vs. sys admin'ing, designing vs coding, etc, etc.. But don't you guys think that everyone in the IT line should have some grasp of knowledge from outside of their respective specialties? I'm dismayed when I hear programmers say they have no idea how to do this or that in the OS - simple things that could be learned by a little bit of adventurousness and curiousity. Or when you ask them about their workstation specs and they give you that blank deer-frozen-by-headlights look...
Thu 29 Jan | WhatTimeIsItEccles | I understand what you mean about people not understanding what goes off in some area just outside their own area of expertise. I pride myself in having a broad understanding of computers (yes, including MAC addresses and things) as well as greater depth in particular areas. I have noticed that the people who don't understand the broad principles are those for whom development/whatever is *just* a job, they leave work, go home, and don't go near another computer until the next morning. The rest of us came into computers from an early age with an interest in what they do and how they work and that followed through into the work place as we got older. We are fundamentally different from the previous mentioned sort. However we can become nerds if we're not careful, whereas the former tend to have 'real lives' whatever that is :-) Thats my take on 17 years of working in IT.
Thu 29 Jan | I like beaches | > K. Look surprised when you finally walk up to their workstation, pull out the power and say, please go with this security guard . . . Where do you work again?
Thu 29 Jan | Just me (Sir to you) | Here is one I encountered: When he gets a runtime error, his first hunch is that there must be a bug in the C++ compilers handeling of 'for' loops (major vendor compiler used by millions of programmers worldwide on daily basis).
Thu 29 Jan | Philip Albert | I think everyone should give everyone a chance.
Thu 29 Jan | Clifton Craig | Me: 'A table is like a file right?' Coming from an AS/400 development environment which is designed specifically for transactional processing you would definitely have to make this association because DB2/400 tables are referred to as files. Everything in OS/400 land is stored in a file which is actually a DB2 table. Maybe the guy in question has this kind of background which actually isn't a bad thing at all. Many of these types of developers are very strong at DBMS and transactional software design and would have the same association problem. Then again maybe the guy actually is a moron. Who knows.
Thu 29 Jan | ac | Did I hear someone say VSAM?
Thu 29 Jan | rm -Rf / | I once worked on a project where they (it's always them) hired that C++ specialist. I gave him a simple task and when he wasn't finished after two or three days with it, I wondered if he needed some help. And indeed, he needed some help. He didn't know that a C++ programm needs a main().
Thu 29 Jan | Name withheld out of cowardice | 1. He writes crappy code that doesn't work 2. He is unable to fix the crappy code that doesn't work 3. Someone else has to rewrite his code because it is crappy and doesn't work.
Thu 29 Jan | ajs | Me: 'A table is like a file right?' I worked a Qantas for a brief time, and like most big glossy companies, all their tech is old. I don't know specifics (and I don't care) but what Clifton Craig said covers it fairly well. Probably COBOL on IBMs. The joy of working in a 5-storey building with only 1 window...
Thu 29 Jan | Jorel on Software | Is this topic in bold simply because of the title?  Cause the content is pretty lame....
Thu 29 Jan | Joe Grossberg | Poor guy: Number 1 is irrelevant. Maybe it's AOL for broadband. Maybe he can't afford something different. I think you're mixing up 'inexperienced' and 'bad': 2, 2a, 3, 3a. Number 4 is not his fault unless he lied to HR or they miscommunicated the requirements. In fact, I think it's great he's taking the effort to learn it. So what about the Java shirt (#5)? He thinks Java is cool. More power to him. Do you think everyone with a Lakers jersey can play basketball well? Number 6 is completely irrelevant to how good a programmer he is. If you care that much, send him an anonymous email or leave some mints on his chair. If you don't feel like helping him through the chapters (#7), then (1) you're selfish and (2) just *tell* him you're too busy, instead of expecting him to take the hint. As far as number 8 goes, I admire his interest in the different aspects of the project. Really, now. I can see how the situation might be annoying. But none of us was born knowing this stuff and this kid is displaying an earnest desire to learn and contribute, the hallmark of a future *great* programmer. Joe http://www.joegrossberg.com
Thu 29 Jan | Just me (Sir to you) | 'Is this topic in bold simply because of the title?' No. It is just one of Joel's subtle hints to Michael.
Thu 29 Jan | Tj | Interesting ideas that made me reflect upon what I know. Granted I am still new at this game < 4 years programming, but I have a fairly broad knowledge base. Then I starting thinking about it more and relized that what I know about computers isn't really related to my programming. The majority of my hardware/networking knowledge was from gaming and troubleshooting my own PC. I have met programmers that know computers like the back of their hands and they were terrible programmers. I have met programmers that couldn't tell you where to plug in a ethernet cable and they were amazingly good at programing. I don't really see the tie, but then again maybe that is just me.
Thu 29 Jan | Zekaric | The programmer's past time was boxing.  You could always tell when it was fight night.  Usually easier to tell the day after.
Thu 29 Jan | Poor guy who has to work with this loser | 'Really, now. I can see how the situation might be annoying. But none of us was born knowing this stuff and this kid is displaying an earnest desire to learn and contribute, the hallmark of a future *great* programmer.' ---------------------- I think you're right- definitely the hallmarks of a future *great* programmer. However, this 'kid' is in his early 40's, and has a lot of high-profile programming and IT work on his resume. He advertised himself as a senior programmer, and applied for a senior programming position. He's absolutely failed to deliver the sort of technical knowledge I'd expect to see from even an intern. Part of the problem is that he's a decent guy, but his experience is on the old mainframes and things like that, and his skills just aren't remotely current or applicable. Essentially he BS'd his way through the interview, and the person whose responsibility it is to hire him absolutely failed. Most of the blame falls on our company for placing him in a situation where he just can't function and contribute. It's not necessarily his fault, although do I think that some share of the blame lies upon him for exaggerating his skills in the area he was hired to work in.
Thu 29 Jan | Poor guy who has to work with this loser | 'I pride myself in having a broad understanding of computers (yes, including MAC addresses and things) as well as greater depth in particular areas. I have noticed that the people who don't understand the broad principles are those for whom development/whatever is *just* a job, they leave work, go home, and don't go near another computer until the next morning.' Very, very true. I simply can't comprehend when a programmer doesn't know some basic area of computer literacy. I don't know if a programmer needs to know what a MAC address is, but a lot of them don't even have a basic understanding of networking concepts, which is something that's pretty vital to understand in today's world. When I see a programmer who's never opened up the case on her computer to add some RAM or just play around with it a bit, big warning sirens go off in my head. I don't expect every programmer to understand the latest video card specs or know how to set up a fibre channel RAID-5 array with redundand power supplies (I sure don't) but when I see a programmer who can't plug in a single hard drive, I know it's probably 'just a job' for them and not an area of genuine interest- which I think is pretty vital to being a great programmer. There are exceptions, of course. Lots of brilliant programmers have never touched a personal computer, working instead on high-powered networks in scientific or academic settings. Even in the personal computer world, there are good programmers who couldn't change a stick of RAM, and good programmers who just loooove their AOL. However, I'm sticking by my initial list of signs. There are exceptions to every one of them, but can anybody who's worked with a lot of programmers deny that they *tend* to be true, more often than not?
Thu 29 Jan | I like beaches | Poor guy, the alleged failings on your list are relatively trivial. I think your reaction to the age of the alleged poor performer, evidenced above, is more telling. I think you probably have a narrow area of expertise and are a bit uncertain about it, but have probably been in an environment where you commanded and demanded unwarranted respect. You resent this new guy because he doesn't see you as the local genius.
Thu 29 Jan | Me | 'Coming from an AS/400 development environment which is designed specifically for transactional processing you would definitely have to make this association because DB2/400 tables are referred to as files.' Well spotted. That was infact the case. However, he did claim to have a lot of experience with oracle and SQL server at least. In any case, I have worked with a lot of brilliant AS400 guys (just like you said) but I was shocked that he didn't have any curiosity to look outside the AS400 world (like he claimed he did).
Fri 30 Jan | Poor guy who has to work with this loser | Yeah. You guys are right. I'm wrong. He really *is* a good employee, despite the fact that he can't do any of things he was hired to do. I've been imagining the late nights that the rest of us have been working to make up for his dead weight on the team. What was I thinking? Thanks for showing me the light.
Sun 01 Feb | redguard | IMHO, bad programmers do not doubt. They always say 'You command, I do' or 'I command, you do'. Bad programmers do not have the love for improvement, innovation, new tools. As a project leader, I hate to hear the programmers say 'Bosses, Clients, Managers are always right' or 'I do not understand , I just follow you' or 'I will do anything if you ask for'. Here are some true stories happened to me: 1. One interviewer asked me to write a demo motion picture program using MFC in half an hour. But he gives me only a cracked VC6. NO MSDN! NO internet access! I finished in one hour and lose. 2. Some one told me that I would not equal to some 'VB experts' because they drag the controls so QUICKLY. reguard http://www.d2ksoft.com
Any reason to switch from Firebird to Mozilla? | Wed 28 Jan | Alex.ro
My only thing with Firebird is that it takes 3 seconds to load. I heard Mozilla loads faster. Or am I imagining things?
Wed 28 Jan | David Majda | Firebird definitely starts much faster than Mozilla on any computer I used. It is logical, because Mozilla contains the whole suite (e-mail application, IRC client, HTML editor) but Firebird is only the browser.
Wed 28 Jan | Mike | I use Firebird at home on Win2K and Mozilla at work on SGI. They're the same as far as appearance and performance, IMHO. http://www.mozdev.org/ has some toolbars and stuff for Mozilla that aren't available for Firebird yet, but they're just buttons to get instant access without going into options. I like Firebird because it's just a browser - not all the other stuff. The same reason I uninstalled Microsoft office and put down Open Office - so much less bloatware.
Wed 28 Jan | T.J. | As of 1.4+, Mozilla IS Firebird. (Plus some other stuff).
Wed 28 Jan | Eric V. | Mozilla might load faster than Firebird because it stays in memory and in your systray when your computer boots ( with the default installation of W2K anyways... ) Firebird doesn't seem to do so, so the first time loading might be long depending on your machine. Make a shortcut to MozillaFirebird.exe with the -nosplash command-line option, it might load faster.
Wed 28 Jan | Mike | Doesn't everybody leave their browsers running 24x7 anyway?  Who cares if it takes 3 or 33 seconds to start - it just happens once when I login.  With the tabbed viewing feature common to both Mozilla and Firebird (that feature is enough to make me *never* use IE again) no matter how many pages you have open it's only one window's worth in the Windows toolbar.  Sweet.
Wed 28 Jan | Bored Bystander | I used Firebird 0.9? and now Mozilla 1.4. Firebird had some crashes and instability for me and some content didn't render properly (read: MS specific websites sometimes looked crappy). Mozilla performs much better in both areas. I also thought load time of Mozilla was dog slow. I did the -nosplash option mentioned above and bam, it loads very fast. Mozilla is a good upgrade, seems to fix some issues, and seems to break nothing.
Wed 28 Jan | El Macho | Switching from unexisting Firebird(0.9 current is 0.7) to deprecated Mozilla(1.4 current is 1.6)? Besides, Firebird IS Mozilla. As long as you dont need any other Mozilla-Component except the Browser, go with Firebird.
Wed 28 Jan | AMS | 'With the tabbed viewing feature common to both Mozilla and Firebird (that feature is enough to make me *never* use IE again) no matter how many pages you have open it's only one window's worth in the Windows toolbar.' If you want tabbed browsing AND need IE's compatibility, take a look at the Avant browser. I like Firebird but there are some sites (particularly intranet apps) where IE is required. http://www.avantbrowser.com
Wed 28 Jan | Brad Wilson | I'm surprised nobody has mentioned Firebird's Extension system. Is that available on Mozilla? If not, then there's NO WAY I would ever use Mozilla proper. There's some amazing extensions available for Firebird.
Wed 28 Jan | John Rose | Firebird's extension system is available on Mozilla. In fact it originated in Mozilla- Firebird is an 'unbloated' offshoot of Mozilla. Most XPI extensions designed for Firebird or Mozilla will work in the other.
Wed 28 Jan | Richard P | Firebird and Mozilla have NOT been merged yet. The browsing engines are the same, but the UI is different. There are a few extensions that aren't available in one or the other. The options panel in Firebird is simplified but not as flexible either. There is currently no official installer for Firebird either, but unzipping it is easy.
Wed 28 Jan | fool for python | Yes, Firebird is not just the Mozilla browser. It uses a newere UI "toolkit" that better seperates the application code from the UI code.  And the UI stuff is faster.
Thu 29 Jan | Alex.ro | Thanks guys. I asked because I read in a mag how Mozilla presumably starts 'faster', that's all I care about. I don't like keeping in around in the taskbar, so I start it when needed. Minimize to tray would be nice...
Sun 01 Feb | Shlomi Fish | Generally, it is believed that FireBird loads faster than Mozilla, at least if properly configured. However, I still like Mozilla Core because it has more features.
SQL Query Question | Sat 31 Jan | anon
I have the following table employees deptid employeeid datejoined 1 1 1/1/2000 1 2 2/1/2000 1 3 3/1/2000 - - - - - - 2 6 1/1/2001 2 7 2/1/2001 2 8 3/1/2001 - - - - - - - - - And so on. Now I would like to get the any first 2 employees for each dept based on thier date joined. What is the best way to go about doing this? I cannot specify any dates, but I need to get the first 2 employees in each dept. The query could be quite simple, but for some reason I am not getting it right. I am using SQL Server 2000 Any thoughts? Thanks.
Sat 31 Jan | RC | SELECT DeptId, EmployeeId, DateJoined FROM Employees WHERE EmployeeId IN ( SELECT TOP 2 EmployeeId FROM Employees TopEmployees WHERE TopEmployees.DeptId = Employees.DeptId ORDER BY DateJoined DESC )
Sat 31 Jan | anon | Thanks RC, it looks like thats what I want. I have yet to double check the result set to see if the data returned is correct. I knew I had to use sub-select statements. But I wasn't getting it right. Thanks again.
A "Next" Button Please | Fri 30 Jan | Speak N' Spell
I find it inconvenient that web browsers do not have previous/next buttons. These buttons would be most useful for search engines. I hate clicking on the little numbers or the little previous/next words. Browsers should be made to support result sets. Maybe this is not a browser issue. Maybe it is a flaw in the design and layout of the web page. Having to scroll to the bottom of a page is bad enough. All im asking for is a BIG and I mean BIG button to push so I dont have to fiddle around with little numbers and tiny words. Oh and put the darn things at the top and bottom of the page instead of only at the bottom because the first few results pages are usually garbage anyway. (The top and bottom thing is why browsers need to support some kind of result set, so they can use toolbar buttons for this type of thing.) Ok, Im done complaining... for now.
Fri 30 Jan | www.marktaw.com | I think there's some code you can put in your web pages to actually make the FOWARD button that's built in to the browser work.
Fri 30 Jan | no name | I always thought the forward button worked only with the history.
Fri 30 Jan | Litago | Opera 7 got a 'forward' feature, where it picks what it thinks is 'next page' on a web-page. And it works, too!
Fri 30 Jan | www.marktaw.com | I must be thinking of this: http://www.marktaw.com/temp/opera.jpg This stuff is inside the HTML document's HEAD (and more) It seems Opera is the only browser that does this of the big 3.
Fri 30 Jan | www.marktaw.com | Btw, this is in the HTML 4 spec.
Fri 30 Jan | Litago | It works in Google too, even tho google doesn't do a ref 'next'. Opera probably scans a page for a 'next' reference.
Fri 30 Jan | Chris Hoess | Mark: In Mozilla, View->Show/Hide->Site Navigation Bar->Show Only As Needed (or as you prefer).
Sat 31 Jan | Arrogant Prick | All browsers have a 'back' button that will take you back a page. Going forward is a little more difficult since you haven't been there yet, so the browser would have to parse the web page and figure out the link to the next page. Supposedly Opera does this but I haven't tried it.
Sat 31 Jan | Philip Dickerson | Not really answering the original question, but here's more information on the 'next' link feature mentioned by www.MarkTAW.com: http://diveintoaccessibility.org/day_9_providing_additional_navigation_aids.html The link tags for next and previous are defined in the HTML spec, but the usage is left to the discretion of the browser. Internet Explorer seems to ignore them, but browsers like Mozilla and Opera display the links in a separate navigation toolbar (not using the primary forward/back buttons in the browser, which only use the browser's history). Text-only browsers also typically display these links (which is especially useful if the navigation within the page is displayed using images).
Sat 31 Jan | Simon Lucy | I'd recommend anyone implementing Link tags, if nothing else it provides a nice way of understanding the structure and flow of a site as you write it. And for those lucky people using Mozilla and Opera they'll get even more benefit.
Sat 31 Jan | James Ussher-Smith | I'm pretty sure the Google toolbar does this for search results.
GUI design with different views | Fri 30 Jan | the beGUIled one
Ive been writing software for a long time, but mostly on the server side. The GUIs Ive written have been primarily web based and dialog based, but nothing too polished. Ive decided the client-server app Im writing would look a lot nicer if I got away from using a lot of dialogs (except for setting properties). By that I mean that when the user starts the program, the main window appears and all subsequent views remain in the main window - no popup dialogs to do CRUD and other activities. I writing this in C#, and I wanted to get advice on my approach. Should I: a) Try to write the controls completely in code and display the appropriate set based on the current task? b) Create different panel controls for each view and show / hide the panels based on the current task. c) Screw it and go back to dialog based navigation. d) Some other approach? Thanks in advance. P.S. A tab control would not be appropriate for this app for various reasons.
Fri 30 Jan | hmm? | Have you considered a "tabbed" interface?
Fri 30 Jan | Don | I did something similar in a large Java client-side application. First, we had dialogs everywhere. For opening files, saving, blah blah blah. They had to modal or else people would click all over and get the main window on top of the dialog, lose the dialog, etc. When they are modal, notifications couldn't pop up. They couldn't click the help menu on the main window. They couldn't change their preferences, etc. So it's all in the main window now, and I just flip between pages using a CardLayout. TThe user can still access the menus and do whatever they want. I just switch to the screen that's appropriate for the current task. At first I thought that people were used to using dialogs that are modal, like when you open a file in Word. For whatever reason this didn't sit well with my users. I guess they just like being able to jump to any part of the application at any time, without having to close the current task.
Fri 30 Jan | the beGUIled one | The best example I can think of is tax software. It lets you navigate from page to page without using tabs or dialog boxes. The 'next' button navigates you to a new page displayed in the same client area, with each page having a different set of controls. Again, tabs wouldn't be a feasible option. It would take dozens of tabs to represent all the possible views. Also, I want to control navigation in a logical manner, which tabs would defeat.
Fri 30 Jan | Tom H | I just can't picture what you're trying to do, maybe a real big Wizard? Tax software always has a tree or menu structure so you jump to any form whenever you want.
Fri 30 Jan | Norrick | Treeview.
Fri 30 Jan | Perpetual Newbie II | Is this kind of like what you're looking for: http://hianoto.net/projects/articles/en-membuat_wizard_dalam_delphi.php It's a component called KWizard. It uses 'RouteMaps' and it's for Delphi . :)
Fri 30 Jan | Perpetual Newbie II | Sorry, the bottom two images have the routemaps.
Fri 30 Jan | Chris Altmann | I'd say 'b' with UserControls for each 'page' and a navigation manager class to tie everything together. You might also want some sort of app specific taskbar or active task list. Maybe a navigation breadcrumb trail too. Or wait for Longhorn which will have this all built in. Or use Longhorn as a guide so it'll be easier to port when it becomes feasible. http://longhorn.msdn.microsoft.com/lhsdk/appcore/overviews/appmodel_pagefunctions2.aspx
Sat 31 Jan | the beGUIled one | Chris, the navigation topology link was just what I needed. Plus, now I can say the phrase 'navigation topology' and sound smarter than I really am. Thanks. BTW, the tax software example probably wasn't a good one. I used the example in terms of the views, not the navigation topology (see, sound smart, don't I?). I don't want users to be able to jump to any other form. For example, the app will have a start page and paths A - J. Path A will have steps 1-5, path B steps 1-7, path C steps 1-3, etc. Each step of each path is a separate page with different user controls and the completion of each path will bring the user back to the start page. Also, I really don't want wizard-style dialog boxes.
Sat 31 Jan | Tom H | I'd watch out for two things when designing the navigation: 1) Most users want to feel that they're in control; it sounds like you want to dictate the exact sequence of steps. That's okay if it's really necessary; but the user has to understand (and accept) why you are taking control away from them. 2) People will make mistakes, change their minds, want to review what they've entered, etc. If you force them through a long series of pages whenever they want to change the last entry field on the last page, your app will be a pain to use.
Review of Joel's lecture at UCDavis | Fri 30 Jan | Dilip
I know Joels blog pointed to Ted Newards review at TSS.NET. But a much more technical review is available over at Teds blog at: http://www.neward.net/ted/weblog/index.jsp?date=20040129#1075429554816
Fri 30 Jan | Just me (Sir to you) | 'As part of that last point, he asked the audience, 'If a bug costs $100, do you fix it if it will cost $110 to fix it?' Most everybody said no. 'What if it costs $90 to fix it?' More hands went up. Then he pointed out, 'The problem is I haven't given you enough information--what if that same $90 can go towards advertising, and brings in $300? From the business perspective, that's obviously the better ROI for the money.' And a few engineers in the audience laughed, until they realized he wasn't making a joke.' This excerpt from TSS made me recall the discussion we had here (sorry, can't seem to find the topic in the archive) on development and business priorities in the light of the time spent fixing the huge upload problem of CityDesk. Has Joel changed his mind?
Fri 30 Jan | Philo | Out of curiosity, at some point in Joel's 'cost of bugs' discussion, did he point out that buzz on one $100 bug can kill your product? Philo
Fri 30 Jan | Foolish Jordan | I would say that if the "buzz" on that bug "kills the product", then that bug cost a lot more than $100.
Fri 30 Jan | no name | How is the cost of bugs being determined? By programmer hour? If a programmer costs $100/hr, a $100 bug takes one hour to fix? Does a $90 bug takes 55 minutes to fix? And a $110 bug takes 65 minutes to fix? Is there any real difference between 55 minutes and 65 minutes? Setting specific prices on bugs makes it appear that Joel is 'telling like it is. ' He's setting hard values on bugs. But the problem is, if you think about it more, his numbers have no meaning.
Fri 30 Jan | Dave B. | >> 'This excerpt from TSS made me recall the discussion we had here (sorry, can't seem to find the topic in the archive) on development and business priorities in the light of the time spent fixing the huge upload problem of CityDesk.' I believe the article was on software craftsmanship. I don't think adding the ability to upload large files while allowing the user to do other things is fixing a bug. It is merely adding a convience feature to the product.
Fri 30 Jan | Elephant | I think the point of the "meaningless numbers" is to make people realize that outside of academia, there is more that goes into deciding to fix a bug, than the fact that bugs are bad so you should get rid of them.  If fixing the bug delays your product 2 months so your competitor gets to the market first and capitalizes on 2 months of being the sole market player, than maybe fixing the problem where 1 in 100,000 data inputs crashes your program.  I don't know if the MS approach of release and patch is the best solution, but it gets them the money, and outside of academia that's what people write software.  For the income.  No one was ever a full time software developer for free that wasn't already wealthy.
Fri 30 Jan | Zealot | But software must be free! People who code for money are just monkey coders. They do not love what they do. All good developers like their work so much they are willing to do it for free to help the gerater community. We must stop the selfish acts of those who seek to destroy the profession by charging money. if we all instead work to 'help each other' out, that is the only true path.
Fri 30 Jan | no name | Elephant, point taken. However, you are setting up a straw man by mentioning academia. Nobody cares about fixing bugs in academia.
Fri 30 Jan | Richard Stahlmain | That is so true. It is absurd that Joel is basing fixing bugs on economic decisions. That explains why commercial software is of such poor quality compared to free software. in the free software community, someone will fix the bug without charging for it. Therefore the dollar cost of fixing all bugs is zero and therefore it is always economically advantageous to do the fix. In the greedy microsoft world they use economic arguments and hence their software is very buggy, unstable, and riddled with security holes. Also, in the free software world there is no money spent on marketing. This also opens up time and resouces for coding bug fixes. If anything, Joel's speech only proves that free software is the only way!
Fri 30 Jan | Junkster | Richard, the dollar cost of fixing bugs in an open source environment is not zero. This is basic economics. Time spent fixing a bug is time that could be spent doing something else. There's the risk that a bug fix will cause other bugs elsewhere. There's the risk that a bug fix will add extra complexity to the code. A relevant and well-known quote from Jamie Zawinski: 'Linux is only free if your time has no value.'
Fri 30 Jan | FredF | >>Richard, the dollar cost of fixing bugs in an open source environment is not zero. This is basic economics Basic economics would say bug fixing costs money if developers charge for it. If the fixing is done in the developer's spare time, or as an exercise by a college student, it's hard to define this as costing money to anyone, especially if the bug in question is not causing your business any harm. Logically enough, we should substract bug fixing to the GNP. Do we? Considerning how crude economics is, I don't understand why we even bother trying to evaluate the cost of software development...
Fri 30 Jan | T.J. | Please do not be naive.
Fri 30 Jan | mb | 1) this 'richard' guy is probably a parody of RMS. 2) many people do not understand 'opportunity cost'. 3) opportunity cost is not always a simple dollar calculation.
Fri 30 Jan | Jeremy | Nobody's time is ever free. We all have expenses -- housing, food, heat, water, and so on. At a basic level, you could sum those up, divide by the average number of full time work hours in a year, and that's hourly cost for someone to live. To avoid going bankrupt, that person would have to work for an hourly rate of at least that much. If you accept that a person must have enough money to live before they're able to fix bugs in Linux, then you must accept that Linux isn't free. In many cases, people have simply donated their time instead of money to fund it's development. Joel's right. There's a cost to doing work. Every feature has a price. Every bug fix has a price. One way or another someone pays.
Fri 30 Jan | no name | Joel makes an obvious point when he assigns specific dollar numbers to bugs and ROI, but that ain't reality. The reality is that you don't know, exactly, or even roughly. It comes down to wisdom and experience when making the call on which bugs to fix...but that doesn't make for good lecture talk.
Fri 30 Jan | pdq | Every decent manager makes this estimate before scheduling a bug to be fixed. Whether or not the estimate is accurate is another story.
Sat 31 Jan | Officer Barrone | 'Linux is only free if your time has no value.' Often, your time has no *MONETARY* value. One of the most common traps people fall into is the idea that monetary value is the only value that exists or matters. The old saying 'time is money' is a perfect example of that. In reality, time is ONLY money when you are 'on the clock' (or paying someone who is). Time has other values besides monetary value. if you are paying me $20 an hour, then an hour of my time is worth $20. However, if I spend an hour working on some software, and I'm not getting paid, the first question you have to ask is 'what would I have been doing if I wasn't working on that software?'. If the answer is 'watching TV' then the time I spent on that software has no monetary value -- it didn't cost me anything. If I spend a few hours a week patching Mozilla bugs instead of watching 'Everybody Loves Raymond' then those bug fixes are essentially free -- zero monetary cost. It doens't mean that my time has no value -- it just means that my time has no *MONETARY* value. But many people have trouble grasping this concept because they are too locked into the idea of 'time is money'.
Sat 31 Jan | Elephant | So time spent coding instead of with my family, does that not cost me something? Time spent coding instead of getting outside and going hiking, does that cost me nothing? Time spent coding not going out and being sociable with friends, does that cost nothing? Time may not cost money, but don't kid yourself, it's not free, as there is only so much of it to go around.
Sat 31 Jan | T. Norman | Great points, OB. The economic value of time expended for something must be considered relative to what the time would have been spent on otherwise. When a person voluntarily chooses to work on an open source project, that in itself is good evidence that the time spent doing that work is preferred to whatever else might have been available to do at the time. As a result, the time so spent may even be considered a positive economic gain for the person whose tastes lead them to choose to develop free software.
Sat 31 Jan | T. Norman | Elephant, if you always value your time with friends and family more than you value time spent developing open source, then you won't develop open source. For someone who *voluntarily chooses* to develop open source software, their values are different -- they may prefer to spend 10 hours a week programming open source and 35 with friends and family, instead of 45 hours with friends and family. For them, the 10 hours a week isn't a cost because the prefer it over 10 hours doing something else. Otherwise they wouldn't do it.
Sat 31 Jan | duh | Um...The guy pretending to be Dick Stallman is just trolling..And you all fell for it. Go back to the interesting discussion of bug vs cost stuff.
Sat 31 Jan | Richard Stahlmain | Quick! Somebody grab the net!
Management problem for a small ISV | Fri 30 Jan | Entrepreneur
I own a small software company. We are a 3 people company, myself included. I dont have management experience, but I have lots of programming experience. I usually let the programmers write modules for our product, and then I test the modules, and integrate them. I also test the product and do bug-fixing. The problem is, these tasks are now a lot more than I can handle. I have to do a lot of work - a lot more than I can do, actually. :-( I am extremely overworked and depressed. I could give the whole source to one of the programmers to fix bugs, but I am afraid of him stealing my source code and creating a competing product. I know of at least 2 cases where this happened. Our company is virtual, so I dont have my 2 developers in a hall, and I cant see how they really spend their time. I guess this is why virtual companies never took off - you cant really supervise the employees. There is also another large problem - my programmers cant design very good user interfaces. They just design average user interfaces, and for our product, this is not enough. So I have to make all decisions regarding user interface changes because I understand user psychology and user interfaces. This is one more reason why I cant have them work on fixing bugs - some of the bugs are related to the user interface, and I cant let the programmers make any decision regarding the UI - what dialogs to show, etc. So, lets say that I employ another super-developer who knows how to design excellent user interfaces, and I let him have the source and write the programs. In this case, what will stop him from stealing the source, modifiying all the UI text and colors, and creating a competitor of my program? Im very overworked. :-( Wish there was a way out of this, a solution.
Fri 30 Jan | GiorgioG | It's called a Non-compete agreement and Copyright.  That's all you need.  If you have 2 employees, I'm guessing you can afford to have a lawyer handle any potential cases of theft/copyright infringement/etc.
Fri 30 Jan | Entrepreneur | Blank, I tried very hard to have them do GUI design very well. They simply can't. :-(
Fri 30 Jan | Almost Anonymous | If your current employees can't do UI, hire some who can. If you really want to have your hands in it (and it sounds like do) then hire someone to handle the business. Either way, you're going to have to give up some kind of control to someone else. As for stealing code, a non-compete AND a strong employment contract should keep that from happening.
Fri 30 Jan | T-90 | Well, if they can't do good UI, then teach them how to. Or find other people who can. A concept you might chew on: Delegating - v. 1 (often foll. by to) a commit (power etc.) to an agent or deputy. b entrust (a task) to another. 2 send or authorize (a person) as a representative. [Latin: related to *legate] My interpretation: Find good people(hardest part), train them well (not so hard after the first part), give them with some work, leave it to them and trust them to do it properly. This isn't an overnite process, so don't expect instant results. Work on it, and in the long run it will *definitely* pay off.
Fri 30 Jan | T-90 | http://www.entrepreneur.com/article/0,4621,288573,00.html http://ollie.dcccd.edu/mgmt1374/book_contents/3organizing/deleg/delegate.htm
Fri 30 Jan | one programmer's opinion | What GiorgioG wrote. Also, you might want to think about doing something like embedding your company's name somewhere within your source code where it would be difficult to detect.
Fri 30 Jan | Tom H | ' I tried very hard to have them do GUI design very well. They simply can't' Very often a GUI that's considered bad by one person is good to someone else. There's also the possibility that you had a design in mind but you didn't tell them what you wanted, then you got mad because they didn't read your mind. OTOH, if they made a good faith effort to do what you asked and in the opinion of several people (not just you ), they failed, then you need to give that work to someone else (I suspect that's the case, since most inexperienced codes tend to write terrible user interfaces).
Fri 30 Jan | Dan Brown | This kind of problem is pretty common, and the issue goes beyond delegating or finding super programmers. When you write that the programmers cannot design user interfaces, I assume you mean that you understand how you want to approach the marketing and sales of the product. You are communicating your vision by constructing the user interface, and having the programmers construct the internals. That can work well, especially if the programmers like focusing on technical issues rather than dealing with customer issues. I see the same approach in a lot of businesses. For example, small general contractors for residential construction seem to usually be structured with one person, the owner of the company, who meets with customers and organizes projects. A crew of people do the work, in combination with subcontractors. For example, the general contractor's crew might do the framing, while contracting out electrical, plumbing, and foundation. The arrangement can easily break down, and I think you may be running into this. One problem you mention is technical people (the workers) going out and competing with you. This is easier solved in software than building, because you can be careful about copyright and non-compete. A more common problem I've seen runs the other way: the technical people don't want to have anything to do with customers, and this throws more project management burden on the person in the center. What do you do if the customer has agreed to pay for a certain number of hours of work to tile a deck, and the worker surprises you by spending three times that amount of time, saying that he is an artist, and it has to be done right? This sort of thing really happens. The customer refuses to pay, saying that if he had known it would be three times the price, he would not have chosen tile. Another problem is that the person in the center gets interrupted a lot, and can't get technical work done. I'm facing that right now with a brilliant builder who hired in-laws as his job site supervisors. The builder has a wonderful family, but they can't keep the subcontractors in line, so nothing gets done unless the builder himself is involved. Finally, there is the problem that in a company doing substantial amounts of business, engineering is a tiny portion of the overall effort. It doesn't work to have the public face of the company doing substantial technical work. Marketing and sales take more time. Some suggestions would be: - If you are selling a lot of product, cut back on the engineering. A lot of technically-oriented companies start out as vehicles to sell the products built by the founders. However, there is no long-term need to have the company oriented around engineering. I've seen successful companies driven into the ground by the founders doing engineering instead of marketing and sales. - Find another way to communicate your vision. For example, you could write specifications or do sketches. If you have programmers who don't do good work from these kinds of documents, you need to find programmers who focus on creating a product, rather than writing code. - Find ways to buy more of the components of your product, so the engineering effort can be more focused. Most of our customers buy our products specifically for that purpose. Of course, whether or not that is possible depends on your product. - Find a distribution channel that requires less of your time. I wish I had good advice about how to do this. I've seen other people do this, and I'm jealous. I'm finding that I need to spend more time on the distribution channel, even though we have wonderful customers and great distribution arrangements.
Fri 30 Jan | Sam Livingston-Gray | Copyright, NDAs and non-compete agreements (although make sure these don't unreasonably restrict your employees) are all excellent tools that would help protect you in case one of your employees did 'swipe your code' and use it to write a competing product. They're the stick. But try using the carrot too: make sure your employees are doing well enough (in terms of both finance *and* morale) by working with you that it's just not worth it to them to defect. Everyone will have different thresholds for what's worth it, but at the very least you can pay them as well as you can and treat them like you actually respect them (though this may be hard for you, since it could be argued that you don't). And get over yourself: they don't actually need your source code. Anything can be reverse-engineered with enough time, and the more time anyone spends learning how your program works while they're *on* your dime reduces the time they'd need to rewrite their own app from scratch... which you couldn't do anything about anyway.
Fri 30 Jan | Simon Lucy | If you can't trust them not to 'steal' the code why do you trust them to write the code? Also, its always irrelevant that someone stole code, created a rival product and 'stole' the customers. What is relevant is that in all such cases (I'd bet on without exception), that the original company just wasn't delivering what people wanted, or was too expensive, not sufficiently responsive or in some other way failed in its marketing. So, if you're confident in your product confident in your market, confident in your ability to innovate don't worry about people stealing the code. A final thought, if the other two developers are key to your endeavours and to the success of the product why not make them partners?
Fri 30 Jan | Entrepreneur | 'A final thought, if the other two developers are key to your endeavours and to the success of the product why not make them partners? ' Because I'm the BOSS, and there is no way I'm letting some 2nd rate coders think they are on the same level as me. Jeez.
Fri 30 Jan | Ron Porter | Actually, I've never really understood the 'don't trust your programmers' philosophy. People resent being mistrusted, and if you'll give a minimum wage sales clerk the keys to your store for opening and closing, then you shouldn't have a problem with me seeing your source code. If you're doing things right, there's a lot more involved in becoming a competitor than just taking some source code home.
Fri 30 Jan | no name | >> 'Because I'm the BOSS, and there is no way I'm letting some 2nd rate coders think they are on the same level as me. Jeez.' You sir are a fucking jerk.
Fri 30 Jan | Chris Tavares | Sounds like you need to bring in a UI designer and a QA person. You could fairly easily get them on contract for a short term engagement.
Fri 30 Jan | Koz | 'Because I'm the BOSS, and there is no way I'm letting some 2nd rate coders think they are on the same level as me. Jeez.' Wow, you sound like a boss I had once. Needless to say he's bankrupt and unemployed now. You may want to look at pulling your head from your ass.
Fri 30 Jan | Alex.ro | >> no way I'm letting some 2nd rate coders think Maybe that's why you're not getting work done? Why economize on 2nd rate coders? You should have gone for 1st rate. And they would know GUI too.
Fri 30 Jan | the artist formerly known as prince | I would say this is a very clever troll but ....
Fri 30 Jan | Me | To date you've hired low grade people who essentially work as your assistants, under instruction. To expand, you need a new class of staffer who you can trust as a partner and delegate responsibility to. I think your answer is that you need to go out and try to attract someone more with more rounded development skills, and then make the offer attractive to them. If you're growing, then give them a part of it. By the way, you are dead right about the risk of source code being purloined. It's a bigger risk for a small company because it's harder to discover until too late. It can happen in many ways. For example, a staffer might take the code to his next job, possibly without even realising the significance, and a consulting firm working at the new site might steal it. No-one even knows there's been a theft.
Fri 30 Jan | no name | your right about good programmers stealing your code.  If you want to keep it secure, you should fire your current guys, outsource to the cheapest indian programmers you can find, and you shouldn't have any problems.
Sat 31 Jan | Simon Lucy | I think the answer actually is that Entrepreneur needs to hire  a manager.  If he allows that manager to manage him and his time then he will succeed if not its a slow burn to failure.
Sat 31 Jan | no name | You think you're depressed? There's 2 guys who're working for someone who doesn't trust them and who thinks they're second rate programmers, with obvious contempt for their abilities. 'So I have to make all decisions regarding user interface changes because I understand user psychology and user interfaces' Really? If you're so smart, how come you're overworked, depressed, and treating your staff like crap? 'I'm very overworked. :-( Wish there was a way out of this, a solution.' Oh, there is a solution, but it requires acknowledging that 'paranoia' is not generally considered a critical trait of successful business owners.
Sat 31 Jan | no name | 'If you're doing things right, there's a lot more involved in becoming a competitor than just taking some source code home.' On second thoughts, maybe he actually should be paranoid about having his source code stolen. Assuming that his coding skills are significantly better than his management skills, of course. :)
Sat 31 Jan | Entrepreneur | I respect the developers who work for me. They do wonderful tech stuff. I mean, if I ask them to code an algorithm, I get excellent code for the algorithm. The programs are well designed (from a software design point of view), they work well, don't crash, run fast, etc. They have solved very difficult problems. But, somehow, they don't understand GUIs. :-( They are excellent at program internals, and very bad at GUI design. :-(
Sat 31 Jan | no name | 'I respect the developers who work for me' 'Because I'm the BOSS, and there is no way I'm letting some 2nd rate coders think they are on the same level as me. Jeez' Clearly these statements are either from two separate people, one of whom is trying to make the other look insane, or they're from one person with a really strange idea of what the word 'respect' means. As the original poster has made it quite clear that he considers these employees of his to be untrustworthy and a serious threat to his business (despite the fact that he also made it as difficult as possible to supervise them as he could), I really can't see how he can also claim to respect them. No, seriously, how can you describe someone as 'a skilled and talented developer and untrustworthy serious threat to my business who I respect' ? That just doesn't make sense to me. Hell, 'I insist on doing work myself and not allowing my untrustworthy enemies/employees near my amazing code and I wish there was some way I could stop being so overworked without letting anyone else do the work' doesn't sound like something that a competent business manager would say, either. How's your hairstyle? Keeping the points nice and sharp? Remember, if people don't lose an eye when looking over your shoulder you need sharper hair.
"The Apprentice" (Spoilers) | Thu 29 Jan | Philo
Well, I disagree with the Trumpster across the board, and want to point out one massive failing on his part. Pitting a team of eight against a team of five in running Planet Hollywood (a huge restaurant) was an interesting challenge, but Im a little unsure if its a realistic challenge - I think restaurant cycles are measured in months, not hours. To then criticize some of the kamikaze tactics used by both sides was somewhat hypocritical. I think Trump only kept Nick around for entertainment value - the man is a backstabbing snake, and belongs in arbitrage or negotiation, not leadership. Even if he didnt agree with a particular tactic, he didnt have to completely check out of the team - just dissociate himself from that task. Bowie didnt help himself by waffling on the get Kwalmes signature thing. (by the way, how come nobody pointed out that those people who paid for autographs would be pretty happy when the show came out? ;) ) Finally - I *strongly* disagree with the lecture Trump gave the women. First of all, Im a strong proponent of use every weapon in your arsenal. But more importantly, how can you assign a team of good-looking women these tasks: - Street sales - Marketing - Negotiating with retail vendors - Maximizing sales in a Planet Hollywood And NOT expect them to use sex to sell? Every one of those tasks *begs* for personal charisma. If he didnt want to see sex used, he shouldve assigned a task that separated the players from the ability to use their bodies. One possibility - give each team a room of 25 people picked at random. They have to hire ten salespeople who will then be judged by who sells the most. Philo
Thu 29 Jan | T. Norman | Trump reprimanded them because they are winning without showing qualities that would make them good at being his apprentice (unless he's looking for a hot chick to bang while on business trips). They deserved it, if you ask me. Having said that, he should have blamed himself for choosing challenges where sexuality is such an advantage, if he's looking for someone who can hold a job in which sex appeal doesn't help much.
Thu 29 Jan | Philo | That's exactly my point. It would be like having Schwartzeneggar vs. 90lb weakling guy in the following tasks: - Get a 10lb ball the farthest the fastest - Move a stack of large steel plates - Move a VW bug sideways Then bitching out Arnie for constantly using his muscle instead of his head. Duh. Philo
Thu 29 Jan |    | Philo, I think someone behind the scenes might have screwed up when he/she/they decided to create one team comprised of young women and another team comprised of young men. Then again, the TV show might be progressing exactly as planned. Those who know the real truth won't be talking anytime soon. Imo, having the game participants act like 'real managers' would have been a mistake because then the TV show would be mirroring reality and lose much of its entertainment value. The TV show COPS does a relatively good job of mirroring reality, however, I don't believe too many people would want to spend an hour each week watching managers performing the type of work they typically do on daily basis.
Thu 29 Jan | www.marktaw.com | Sales, Advertising, Negotiations, Management. I don't see that women necessarily have an advantage, or that men are '90 lb weaklings' in these fields. Of course, in just about all of these situations (except Advertising) the women turned them into Sales situations, which they're good at. ==== Based on their behaviour in the board room, I think I'd make the same decision Trump made. Kwame didn't impress me much one way or the other. Bowie waffled and proved that he was afraid of being wrong by straddling both sides of the fence on a sensitive issue. Nick stood up for himself and manage to take the heat off by shining it somewhere else. In my opinion, the failure of this particular project was in the hands of the team leader. There was a full day where they could prepare for managing a restaurant and I didn't see any of them researching, coming up with a game plan, scouting the area, or brainstorming ideas. The most spectacular thing Kwame did this whole time was sat and signed autographs. Bill took charge and really deserves special recognition for what he did, though I don't know that giving away $600 or more to the waitstaff was the right move. I really forgot who the team leader was for a moment or two, and when I remembered... well I noticed he wasn't doing anything. But Trump didn't see any of this, he only saw what happened in the board room. He didn't see Nick promising revenge for Sam getting fired, he didn't see Kwame doing nothing, he didn't see Bowie going from table to table selling merchandise.
Fri 30 Jan | Philo | 'Nick stood up for himself and manage to take the heat off by shining it somewhere else.' That's evil. I would *always* fire that person first. While Bowie's behavior was equivocal, that can be addressed. Nick's behavior was actively insidious, and that can destroy an organization. I also forgot to give kudos to Kwalme - he was the first leader into the boardroom who gave strong objective reasons for the two choices he made to accompany him. Bowie waffled in the boardroom, but he hasn't been in a position to perform, and we don't know how he would've performed under stress. From a management perspective, Sam, Kwalme, and Nick were all given chances to redeem themselves, but Bowie was simply shot in the head. Like I said before, I suspect that was an entertainment move, not a business move. As for what Trump knows and doesn't know - he knew about Sam falling asleep on the job. I wonder if he gets to see the tapes or can only go by what his agents tell him. Oh, and Nick's 'I will be Sam's agent of vengeance' - ick. Philo
Fri 30 Jan | One Programmer's Opinion  | www.MarkTAW.com wrote, 'But Trump didn't see any of this, he only saw what happened in the board room. He didn't see Nick promising revenge for Sam getting fired, he didn't see Kwame doing nothing, he didn't see Bowie going from table to table selling merchandise.' How do you know that Trump doesn't know everything? Perhaps his executive managers phoned him several times throughout the day or told him everything that happened during the day right before the two teams came into the boardroom to hear the results of their competition? www.MarkTAW.com wrote, 'Sales, Advertising, Negotiations, Management. I don't see that women necessarily have an advantage, or that men are '90 lb weaklings' in these fields. Of course, in just about all of these situations (except Advertising) the women turned them into Sales situations, which they're good at.' In the real world the women probably wouldn't have an advantage. I bet besides a classroom setting none of Donald Trump's current executive managers have ever managed or came up with an advertising campaign, negotiated for single item low priced merchandise/services, or sold individual glasses of lemonade in downtown New York. While the women were able to get the gold dealer to take a loss on one bar of gold, I seriously doubt they would have been able to accomplish the same results had the number of gold bars that needed to be purchased had been something like 200. I agree with you that the men could have done a better job of performing some of the tasks they have been given so far. That said, I also believe given the parameters of the game having two teams comprised of both men and women is better for the men. Also, sexuality then becomes a tactic/strategy/issue for both teams. Instead of people making comments such as 'the women only won because they sold sex' you would probably get people saying things such as, 'I think Kwame screwed up as project manager. He should have asked the women on his team to wear tight t-shirts and have them sell drinks or handout coupons just like Nick's team did the day before.' The show is pure entertainment and nothing more -- I say enjoy it for what it is, but don't try to read more into this show than what is really there. Managing (especially at the executive C level) is essentially nothing more than decision making. Sure some CEOs do sales/presentation work (i.e. beg for investment money) and negotiate business deals, however those tasks tend to: * Affect entire organizations * Be very complex * Involve a lot of people. Imo, what the two teams on this show are doing each week is more like deciding when to reorder office supplies which is a less complex task that involves far fewer people.
Fri 30 Jan | Canuck | Philo, I can't help but disagree with your 'use every weapon' philosophy. The women's tatics might work well when playing a game, such as The Apprentice, but not as business strategies managers employ in the real world. Tonight's episode was a terrific example of that. Yes, the did win, but you will note that they also got reprimanded by the GM of the restaurant. He had very valid concerns about safety of the patrons, coupled with the legal implications that the establishment bears when they leave the premisis. In addition, they were drinking on the job. Would you tolerate that type of behavior out of your leadership team? Finally, they produced good results for a single night. Were they sound, long term profit and growth strategies? Hardly. I think Trump was correct in telling them to smarten up.
Fri 30 Jan | Canuck | Actually, a few thoughts about the guys team. In this particular event, I thought that they had a massive advantage over to women. Not boobs and legs, but *time*. They had a full day and a half to prepare for this project. It really looked like they spent it goofing around ... oops, I mean 'team building'. When I am getting my ass kicked this badly on national TV, I would have sure as hell made sure it didn't happen again. Kwame had 36 hours to lead this team to victory and he came with ... *drum roll* ... Kwame Jackson autographs. You sir, should have been fired.
Fri 30 Jan | Nick | The one key management skill that the men consistently lack is the ability to prioritize. Did the men ever go talk to the restaurant manager and ask what items had the best margins? One of the women quickly figured out that booze had a good markup and you could sell $20 worth of it a lot faster than you could sell $20 worth of merchandise. Did the men determine which items had the biggest markup in the negotiating challenge and prioritize of those? No, they prioritized their day around the gold - a commodity with razor thin margins. The women may have gotten a sweet deal on the gold due to sex appeal, but they made their biggest gains on the golf club and the leg wax. Did the men realize that talking to the customer should be their number one priority in the ad campaign? Nope, but the women sure did. Prioritization is one of the most important management skills I can think of, and the men are consistently blowing it. So don't discount the women as though they've won just on sex appeal. They're a creative, quick thinking, and business saavy bunch that knows how to prioritize and pull together even when there's in-fighting.
Fri 30 Jan | Philo | Canuck, they won by maximizing their strategy *within the parameters of the competition*. Their job was to make maximimum profits in one day - that asks for slash and burn tactics, because they don't have to care what happens next week. Regarding drinking on the job - I'm glad you brought that up. When I saw the women doing shots with the customers, I happily thought *that* was what they got reprimanded for instead of the sex thing. But I don't believe Donald and his assistant mentioned the drinking, did they? It was just about using sex to sell. Philo
Fri 30 Jan | The Ted | 'I think restaurant cycles are measured in months, not hours. ' Speaking as a Former restaurant manager, they're measured in hours. Usually a restaurant manager will be able to see his labor costs for the hour, food costs, the total sales, etc..., and then be able to compare it to that day last week, last month, last year. As for using whatever weapon you have. Being overtly sexual will work in a one-off instance, where you don't have to build a relationship. But if you have to build relationships, as most salespeople do, eventually you'll develop a reputation as being slutty and no one will want to do business with you. Seen it happen, think it would make a good general rule.
Fri 30 Jan | Lou | Ted, how would you have boosted revenues if you were on the guys' team? I'm pretty shocked that the guys didn't talk to the manager and say, 'We need to boost sales for tomorrow, what can we do to achieve that?' Surely he'd have a pretty good idea? And I'm sure incenting the sales staff with $25 would have worked as well as $100, that was a waste of relatively precious resources. If you were on VersaCorp what would have done to boost sales?
Fri 30 Jan | Name withheld out of cowardice | I would really have liked to see this show done with people picked for brains instead of looks. I know Trump claims this is the case but it is clearly crap. The women have one strategy for everything- 'sex sells'. I think it is wrong that they won the advertising competition when the advertising guy clearly stated that their campaign would fly in the real world. The guys went with something that would but didn't 'think out of the box'. How were they supposed to know. With everything the guys have no coherent strategy and minimal planning it seems. When the one guy went in for a leg wax his tactic was just to ask her to do it for free because it would be fun to wax a hot guys legs. He couldn't help laughing when he said it. Why not come up with a story beforehand and plan for contingencies? They have nothing! I hope one of these competitions deals with money, finance, at least calculating simple interest.
Fri 30 Jan | The Ted | Don't really know if I would've done anything different, Lou. The 2 different places where I managed the owners took care of all the marketing. I was strictly operations. A place like planet hollywood will already have a good system in place, so changes in operations would have negligible effect. You need to have some sort of a promotion. I thought hitting up the tour buses for merchandise was a good idea, as was pushing the drinks. The places I worked didn't sell liquor, but we had a healthy markup for soda and beer. What I don't think anyone has mentioned is that one of the women is a restaurant owner.
Fri 30 Jan | one programmer's opinion | While I agree with Nick that the women haven't just won each round on sex appeal alone, I am going to try and refute some of what he wrote. The most recent episode I don't believe the men ever talked to the restaurant manager, however, I don't believe the women did either. While one of the women quickly figured out that booze had a very good markup, I wonder if this person was or wasn't the women who just happens to own a restaurant? The negotiation/scavenger hunt episode As for the gold bar fiasco, Kwame mentioned to Sam over the phone that he was wrong about the price of gold and was making a foolish decision when he demanded that the team stop what they were doing and leave Chinatown. Btw, whomever was standing next to Kwame when he was on the phone thought Sam was nuts as well. Of course, Sam paid the price for this executive decision and got booted off the show. As for the women saving a lot of money on the golf club and the leg wax. Well, didn't the women purchase the golf club inside of Chinatown? How do we know that this expensive golf club was the real McCoy and not some cheap ripoff that was manufactured in China? As for getting a great deal on the leg wax, I would expect that the women would know where to find the best deal on this service. Besides bodybuilders how many men wax their legs? Did the men determine which items had the biggest markup in the negotiating challenge and prioritize? No, but neither did the women. Both teams had the same plan which was to go to Chinatown and try to find the best deals possible on as many items as they could find. The men screwed up by not following their original plan. Could the men have won the negotiation/scavenger hunt episode? Perhaps they might have if Sam had stuck to the original plan and the office team had used the World Wide Web better than they did to search for the best deals in New York. The ad campaign episode Did the men realize that talking to the client should be their number one priority during the ad campaign episode? Actually some of the men did but those individuals were overruled by the team's Project Manager who got booted off the show. I didn't like this episode simply because Trump relinquished too much control to an ad agency. Imo, Trump or the airline customer should have the made the 'who's ad campaign was better' decision maker rather some ad agency execs. Nick wrote, 'They're a creative, quick thinking, and business saavy bunch that knows how to prioritize and pull together even when there's in-fighting.' Well, the results speak for themselves. The women are better than the men at playing this particular game. Also, it seems pretty obvious to me that this game favors those individuals who are able to think on their feet and make quick decisions. Nick wrote, 'The one key management skill that the men consistently lack is the ability to prioritize.' Prioritization to me means being focused on the end result. I think both groups have been doing this. I haven't watched all of the episodes in their entirety, however, this is what I have observed so far. Sam was a weak link on the men's team and the men elected to the Project Manager position made some bad executive decisions. As for canucks comment about the men having a full day to prepare, perhaps the men weren't allowed to do any planning or strategizing while the women were running the restaurant? The executive manager in charge of watching over the men didn't mention anything to Trump regarding what the men did or didn't do on their 'day off'.
Fri 30 Jan | Canuck | Philo, It was the General Manager of Planet Hollywood that intervened towards the end of the girls shift regarding the drinking. He was nothing short of livid. I agree that the girls are playing the *game* better than the men. I was simply illustrating that as management strategies, they don't go very far.
Fri 30 Jan | Philo | Incidentally, let me point out again that this discussion is why I think this show is an awesome leadership training tool - in and of itself the show isn't that great, but it provides *perfect* fodder for a lot of leadership topics. I think I could build an entire semester-long MBA course around the season. :-) Philo
Fri 30 Jan | Lou | I agree with that idea Philo, I watch only so I can think, 'What would I do in that situation?' I suspect I would have probably turned to Mr. Trump after the assignment was given and said, 'Are you aware that by asking for a one time boost to sales you're inviting poor business practices? We can definately boost sales, but anything beyond a certain margin is going to be cause for concern, not celebration.' There's absolutely zero interactivity there and that's a bit disconcerting. Knowing absolutely nothing about running a restaurant, I probably would have spotted a few of the smarter wait-staff and asked them what we could do to boost sales for one night. I'm sure a few of them have good ideas running around their heads.
Fri 30 Jan | Elephant | Incidently Philo at some universities, it is required in the Business schools.  My sister presently attends UNC and while a hot discussion topic, it is not required, although from what I hear, at other universities (notably Ivy's) it is required.
Fri 30 Jan | Nick | One Programmer's Opinion, When I talked about prioritization I meant in terms of the leader - not only identifying the priorities, but also sticking with them. Also, if the objective is to make more money, than prioritization in that case would be to brainstorm ways to achieve that, then identifying which ones give the biggest bang for the buck.
Fri 30 Jan | Nick | Which of these people would you hire right now? Since we haven't been able to see them all as one group, pick 1 man and 1 woman. My picks: - Bill - Amy
Fri 30 Jan | Philo | Troy (seems the only one in the group who can stay focused on the big picture) The woman who ran a restaurant, who I think played her knowledge very well last night. Philo
Fri 30 Jan | Philo | 'Managing (especially at the executive C level) is essentially nothing more than decision making' Many managers think that. They're doomed to mediocrity. Philo
Fri 30 Jan | www.marktaw.com | I saw the girls find out what the margins were early on, they were surprised that liquor was only 25% of the profits, becuase memorabilia accounted for much more than they thought. At the end of the negotiations episode (with the treasure finding) they said they went after the items that had more room to negotiate. So I think Nick (the one that posts here) has a point. The men consistently fail at setting priorities, they just charge ahead and hope that the first strategy that comes to them works. === It is interesting that Bowie was not involved in the cross fire and was the one that got fired. Bowie didn't get blamed for anything - he didn't slack in his job, and he didn't do anything that was morally questionable. All he did was not sell consessions as well as the women (which Trump pointed out), but nobody did anything as well as the women. It's obvious to me that Trump has an opinion of these people and it has nothing to do with their actual performance at the tasks they're given, remember Nick was an early favorite of Trump's. Probably because they buy their rugs at the same place. I bring up the waffling because in the first episode it was the guy who said he didn't know if he would do as well that he fired. An 'I don't know' is much worse than emphatically defending your position, even if you're wrong.
Fri 30 Jan | Name withheld out of cowardice | MarkTAW: I agree with you 100% minus the rug comment, but I guarantee you that the shows producers are exerting considerable influence on the selections. Reality TV is nothing of the kind.
Fri 30 Jan | Contrary Mary | My thought was that Trump's warning to the women was for a few reasons: 1. The women had won every challenge, so they hadn't gotten critiques of their methods through the 'firing' process. Firing one of the women for offering nothing but sex would have gotten the message across. 2. The producers had seen how cheezy (if effective within the game) their behavior was, knew it would offend some of the audience, and so had Trump call them on it, thus having it both ways. Attactive women prancing around scantily clad AND morality, honor, female virtue being defended (by Donald Freakin' Trump!). I think where they went over the line was goading some of the male customers into buying shots. Anybody know when is G-String Divas starting up again?
Fri 30 Jan | www.marktaw.com | This is the guy I want lecturing me on sex in the workplace: http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=3584225781&category=611 ;-)
Fri 30 Jan | Jorel on Software | Umm, Hello? That's not the workplace, that's a publicity photo. Time to hop on board the cluetrain, son.
Sat 31 Jan | no name | If your publicity photo is on the cover of Playboy, and includes a woman who quite possibly may have a naked picture or two on the inside of the magazine, then complaining that people shouldn't use sex to sell things is, um, not going to look so clever. Noone said it was a photo of a workplace. He said it was a photo of a man who occasionally talks about workplaces. Would you like to buy a clue as well, pops?
Tips & Advices for Becoming a great programmer | Thu 29 Jan | Alexander
This question may sound a bit dumb or even naive for some of you. But I would really appreciate if someone could anwser seriously without flaming me. Im looking for tips & advices, recommended books to read : Algorithms, Sofware Enginerring, UI, Softare Design, Testing There is not a list here of recommended book to read ?
Thu 29 Jan | YOU KNOW WHO! (I.A.) | 'But I would really appreciate if someone could anwser seriously without flaming me' LOL!!!!
Thu 29 Jan | Christopher Wells | > There is not a list here of recommended book to read ? Yes, here: http://www.joelonsoftware.com/navLinks/fog0000000262.html (You owe the Oracle an explanation for the space in front of your question mark. ;-)
Thu 29 Jan | .:: Website ::. | Great Programmers are a dime a dozen. There can be only one best programmer though. Poor programmers are the rarest breed. As one guy on this board used to say: P.S. You think I'm joking. I'm not.
Thu 29 Jan | Brad Wilson | 'Poor programmers are the rarest breed.' Yeah, I KNOW you're joking now. :)
Thu 29 Jan |   | First tip - advice is already plural.    Consider English as just another programming language -  you work a lot better if you know the syntax.
Thu 29 Jan | Matthew Lock | 'How to become a hacker' is pretty good advice (Hacker meaning coder, not people who break into other computers) http://www.catb.org/~esr/faqs/hacker-howto.html
Thu 29 Jan | .NET Developer | That's right. Knowing grammar is a must. Therefore, you should know that 'advice' is *not* plural (I think it is not event countable). I agree that he should've asked for 'advice' instead of for advices.
Thu 29 Jan | .NET Developer | A great programmer, in Joel's own definition, has to be able to 'get things done'. (Ok, he/she should be smart too, but let's talk about the part you can change.) In that sense, I would recommend looking for advice on how to be more productive. Hacking is great, but being a hacker does not necesarily means that you will be able to solve your *customer's needs* faster and better. I would give you some advice, but I have just remembered that I am supposed to be working right now instead of posting in this forum. Don't do as I do.
Thu 29 Jan | One Programmer's Opinion  | The best advice I can give you is this. Try to figure out what type of computer programming you really want to do. The fact is if want to earn a living writing source code you are probably going to have to specialize in some manner. How many programmers do you know who can claim they have earned a living writing computer games, commericial applications, embedded applications, as well as enterprise business applications for large corporations? My guess is your answer would be none or not very many. Some people choose to learn the C++ programming language because they believe doing this will give them some flexibility in their careers. While C++ might not be the easiest programming language to learn it is still being used extensively in lots of different types of industries (gaming, business, commercial, scientific, etc). Perhaps some of these 'I really need to learn C++' people are thinking, 'If I ever get laid off from my corporate job, I can always chase after small consulting gigs writing whatever type of application that someone is willing to pay me to write, create a shareware program, begin writing PDA applications, .....'
Thu 29 Jan | Matthew Lock | These questions always remind me of Richie when he was playing chess in Bottom: Richie : 'I should have been a chess champion. If I'd spent my whole life learning how to play chess better than everyone else in the world I could have been the chess champion. '
Fri 30 Jan | S. Tanna | What about other areas of knowledge, education? Is a great programmer somebody who just spits out code? I don't think so. Usually great programmers are good at code and the tech stuff, but they also have knowledge that goes beyond the mere technical details of what they happen to be doing today. This is not really even an attempted tip, except to say, be good at tech stuff, but try to learn about other stuff too. For example, for most projects it helps if you know lots about your users, their needs, their likes and dislikes, etc.. For business projects, it might include a general knowledge of the business in particular, or business in general.
Fri 30 Jan | no name | 1. to be great you need to figure this stuff out yourself.
Fri 30 Jan | Astrobe | http://www.ultratechnology.com Click 'Forth' Look for the essay ' Thoughtful programming' by Jeff Fox. Note: not everyone can read that.
Fri 30 Jan | Tom Vu | >>>Hacking is great, but being a hacker does not necesarily means that you will be able to solve your *customer's needs* faster and better. Most projects are completed 'successfully' by the project manager and client because there is too much at stake to admit it was a failure. Solving needs is pointless. As far as becoming a great programmer, that is done by many hours of programming.
Sat 31 Jan | Jim K | Try working as a technical support engineer for complex enterprise software product with little documentation.  Make sure your product development group is stretched thin as well so when angry customer call you don't really have many resources to turn.  You will either become a great programmer or you will go crazy trying.
Building Community with My Ass. | Thu 29 Jan | Anonymoose
Stupid Message. Will it live or die? References: http://www.joelonsoftware.com/articles/BuildingCommunitieswithSo.html
Thu 29 Jan | www.marktaw.com | Bold. Well that was the opposite of what I expected.
Thu 29 Jan | no name | priceless
Thu 29 Jan | no name | I've been doing a lot of squats and cardio; mostly jump rope and stair climber. I'm hoping to develop a really tight ass, then start a fitness website about it. What do you guys think?
Thu 29 Jan | no name | Think Marketing and it become clear.
Thu 29 Jan | Mister Fancypants | Best. Thread. Ever.
Thu 29 Jan | www.marktaw.com | Now all we need is Philo telling us about a former employer who actually expected him to build a community with his ass.
Thu 29 Jan | Tim Lara | Alright, who bolded this? Maybe Joel's summer interns started early!
Thu 29 Jan | satya | Actually, making this thread bold could be meta-circular ;-). So, do you think 'building ... with software' is working ? :-)
Thu 29 Jan | no name | A bold move it was to bold this thread... Is this becoming a Seinfeld episode...
Thu 29 Jan | braid_ged | Me thinketh the bolding is not manual but works on the principle that when enough trusted regulars respond the thread becomes bold. Me also thinketh me is probably wrong.
Thu 29 Jan | Theorist | Post another topic with a link to one of joel's articles to see if you have discovered an automated bolding rule.
Thu 29 Jan | Philo | You know, I once had this one client who asked for something really unreasonable. I said 'Sure, let me just pull that out of my ass!' And the client was all like 'Hey, can you do that?' I mean, honestly. Philo
Thu 29 Jan | Alex.ro | You should have said, this is the beginning of a beautiful friendship.
Fri 30 Jan | .NET Developer | Have you noticed that the last 3 bold topics are about 50 topics far from each other? We seem to be part of a matrix-esque experiment called the 'boldness of the 50th topic' without being aware.
Fri 30 Jan | .NET Developer | Ok. It may be just a coincidence.
Fri 30 Jan | Chris McEvoy | Isn't this a South Park episode?
Fri 30 Jan | Chris McEvoy | Is arse a British version of ass?
Fri 30 Jan | Ged Byrne | No, an ass is a type of donkey. 'Arse' refers to the buttocks, and is quite vulgar.
Fri 30 Jan | Simon Lucy | Your arse may be vulgar, I occasionally still get complimented on mine.  True its usually smelly old women pushing a shopping trolley on a railway station but one has to get one's compliments where one can.
Fri 30 Jan | anonymous | Ha ha
Fri 30 Jan | www.marktaw.com | 'arse' is British. And they invented vulgar.
Fri 30 Jan | Triumph | This seems like a very good topic. For me to poop on.
Fri 30 Jan | The Poop Nazi | No Poop for you!!!
Sat 31 Jan | Stephen Jones | The SOED gives as one of the meanings of 'arse' (Women regarded as a source of) sexual gratification. M20. Programming is beginning to sound like fun. Though I rather thnk the ass is of the equine variety; probably a manager.
Upgrade to the latest and greatest | Thu 29 Jan | Jan Derk
From the H1B topic that bursted into flames Crusty Admin brought up an interesting point about software upgrades. I find it interesting that people that run typically UNIX apps - apache and the like go with the if its not broke dont fix it. The converse seems to be true in the Windows world. If its newer, its better, upgrade now! In fact Apache 1.x is the latest and the greatest. That probably sounds confusing. Let me explain myself. Disclaimer: I am grossly overgeneralizing. In the UNIX world, especially the free one, there are generally two lines of products. The Stable old version (e.g. Apache 1.x, Debian Stable, FreeBSD 4.x) that does get updates, but only the security ones. Then there is the new Testing line (e.g. Apache 2.x, Debian Testing and Unstable, FreeBSD 5.x, Redhat Fedora) that get security updates together with new features. Conservative (read smart) system administrators will always run the boring outdated stuff. Outdated in features not security updates that is. No new features just means less headaches. And why would you install new features every month or so on a email, database or web server? You probably guessed that I am still running Apache 1.x, MYSQL 3.x. and thoroughly hate Redhat for ending support for RH 7.x. Bye bye Red Hat. Hello Debian and FreeBSD. In the Windows world software security upgrades generally come together with new features. The reason is simple, commercial companies make more money from customers that run the latest and greatest (read buy $$ upgrades), then from those that stick to the old stuff (read install 0$ service packs). While from a technical and reliability point of view it makes perfect sense to keep those security updates coming for older software versions, it is the managers and stock holders that decide to stop that, thus forcing you to pay for the new upgrades. Redhat as a commercial UNIX company followed the Windows rainbow, saw the pot of gold at the end and did the same. Lucky for them that purchase decisions are taken by marketing brochure reading managers and not the guy sweating it out in the server room.
Thu 29 Jan | pdq | Until recently, i was the product manager for a commerical software product. There basically are three or four groups that drive adding new features rather than just fixing bugs The products that I work on are not standard IT products but engineering tools so it's not exactly analogous to the OPs comments. However it's close enough. 1) End users. The guys who drive your product every day. They don't make purchasing decisions but it's generally worth putting something in the release for them. Typically they want annoying bugs fixed and features to make their lives easier. Their requests are generally simple to fufull, but endless 2) Sales/Purchasing decision makers. These are two distinct groups, but the sales guys want the same things the people at the customer's companies want with money do. There may be some divergence as sales should be focusing on people who haven't bought in addition to keeping current customers happy. This group wants the big ticket items that will in theory improve productivity or connectivity to some enterprise software. 3) Management (if their smart). If you have smart managment, someones thinking of innovative features that will really make a difference in the market two, three, five years down the road. In any case, it's not as simple as us wanting customers to buy upgrades. There is more than one motivation.
Thu 29 Jan | wtf-ed | Bursted?  Is that some kind of joke?
Fri 30 Jan | Just me (Sir to you) | That is strange. My experiences are exactly the opposite. Granted, we use a lot of Microsoft stuff around here, and they might be better than average for the Windows world. Typically the Windows stuff is supprted for a very long time now. Heck, even Windows 98 has moved into the 7 year lifecycle now. Updates are free during the lifetime of the product. Our Unix stuff OTOH comes with 'support contracts' that typically cost more per year than the total Windows equivalent software. The support has become better over the last few years, but in the past it typically was 'we don't tell you about updates and patches unless you tell us what your problem is'. The few Linux setups around here seem hopeless wrt support. It's like they don't even have the concept of maintaining support. They are running an almost perpetual upgrade mill with constant breaking changes. Maybe it is better if you run the 'enterprise' versions instead of the free stuff, but then again, those are far more expensive in all respects than the Windows equivalents, so what is the point?
Sat 31 Jan | Caliban Tiresias Darklock | My experience is that this has nothing to do with what platform you run, and is instead all about what you do. If your job is to GET things running, you want to upgrade, so you have the latest and greatest stuff and can do more. This is mostly managers and developers, who tend to like Windows. If your job is to KEEP things running, you want to keep what you have, so you don't break anything that works. This is mostly administrative and support people, who tend to like Linux. There are plenty of people in admin and support who use NT 4, and plenty of people in development who use the latest and greatest Linux. I'm one of those get-running people, so I'm always running the latest Windows and Office and LAMP stack on my desktop. But when I work on our public server, I'm in a keep-running role, so we're a couple versions further behind on everything.
My Adventures with our H1-b's | Thu 29 Jan | JS
Well, my adventures with our two H1-Bs that I am training (Heckl & Jeckl) continued today. Ever since they showed up on site they have had a facination with our WebServer. Basically, we have a Home built server we have Apache 1.3 on running activestate to engine our Perl Scripts. Heckl and Jeckl, have been stating all along we should move up to V2.0. Well, this is contrary to my ideology If its not broke, Why fix it!!. I only wish out H1-Bs shared my sentiment. After weeks of bugging me, and basically no trouble tickets. I decided today I would let them embark on their obsession and upgrade our Server to Apache v2.0 ( It seems to be their strange obsession with Apache.org). So around 10am they trotted off to the server room to do the upgrade. Well, should take no more then 1/2 hour I figure. 10:15AM (My office Phone Rings). Its Mrs Y and she cannot access her email. We have an Email gateway from the HTTP Server. Keeps from having to use Outlook etc. I simply assure her we are doing some upgrading and the homesite will be up shortly. I put my feet back on the desk and grab me a nice hot cup of coffee. [Several other people call inquiring about our Server being down] 11:55AM (Another Phone call). This time its my manager and hes ticked. Apperently, a customer could not access the Productline via our Web Server. And wants to know what the hold up is. Well by this time I decided to finish my jelly do-nut and head over to see whats going on with the Big upgrade. I get over there and Heckl & Jeckl are restarting the Server for (I dont know) probably the 50th time. Jeckl sees me and proudly says: Itll be done Mighty Fastly. Well Im scratching my head wondering why in took them 2 1/2+ to finish a job that should have only taken 30 , 1 hour Tops (and even thats a reach). So I left and allowed them to bring the site back up online. When all was said and done. I had to head back over there and reinstall Apache (v 1.6). I saved the config files on floppy. Fortunely, it didnt take me very long to get it back up again. Finding, my copy of Activestate took the longest. We all met back at my office for a meeting and I allowed them to tell me what they did (or didnt do). Now hopefully, they will adolpt my idology If its not broke...., and they will leave things well enough alone. Although, I doubt it. Ho Hum
Thu 29 Jan | no name | You spent 7 paragraphs telling what could possibly be the most generic IT 'disaster' story I've ever read. Someone tried to do an upgrade. It didn't work. People complained. Hilarity does not ensue. Come back when Heckyl and Jeckyl accidentally launch the missles at Pakistan when they spill their vindaloo into the flux capacitor. THAT's a story.
Thu 29 Jan | Almost Anonymous | I agree with JS. BTW, a little research would have shown that you should not, ever, upgrade to Apache 2.0. If you are so inclined, feel free to start a new project with Apache 2.0. Apache 1.3 and Apache 2.0 are radically different beasts!
Thu 29 Jan | FullNameRequired | 'I agree with JS.' ??? but he didn't make any points. (except maybe ;if it aint broke, dont fix it, but thats more of a truism than something that needs to be agreed with) I mean come on...I _learnt_ the truth of that by...well...breaking things that were previously working whilst trying to fix something that wasn't broken. sounds to me as if his _fellow workers_ are moving along the path of righteousness rather nicely..
Thu 29 Jan | crusty admin | I find it interesting that people that run typically Unix apps - apache and the like go with 'the if it's not broke don't fix it.' The converse seems to be true in the Windows world. 'If it's newer, it's better, upgrade now!' Being the sys adminly typt that likes functional things, I guess I prefer to upgrade on my own schedule only if necessary. Course maybe it's the shoddy quality of some Windows apps that cause people to run to the new versions like crack addicts to crack.
Thu 29 Jan | Jan Derk | First, you are totally right and should have followed your gut feeling. If Apache 1.x is running fine, don't upgrade. However, the biggest mistake has been made somewhere else. Please, don't take this as another JOS flame. The critical mistake was made by the person that allowed inexperienced, or at least unproven, system administrators to perform a major upgrade on an important server. When going from Apache 1.x to 2.x surely one would setup a test server first and let it run for a few days to see how it works. And only after sufficient testing one would redirect traffic to the new server. A secondary problem is that nobody should mess with an important server at 10 am. Changes should be made when the CEO is at his weekend resort and the customers are least likely to browse the company website.
Thu 29 Jan | B.Y. | You should not do this kind of unproven upgrade on a live server. This is mostly your fault because you allowed it.
Thu 29 Jan | njkayaker | You let people upgrade a live server with a new version with out testing it first?
Thu 29 Jan | flamebait sr. | Why were you letting them screw with a client-facing, user-facing, production machine anyway?  At the very least, make them run a duplicate of the main directory on port 8080 until it's working or something.
Thu 29 Jan | Mike | I hope the manager at my bank lets those eager young bucks upgrade their transaction processing system.  I mean, c'mon that thing is running Cobol, do you know how outdated that is?  Better get it on .net post haste.
Thu 29 Jan | Ian Ashley | Sounds like you and your H1-B's simply aren't experienced in dealing with upgrading when it comes to production situations. As a manager, i'm suprised you'd even let them go through with the upgrade on a whim. From my experience, any type of upgrading on production systems must go through some sort of change management and thorough testing in a simulation environment.
Thu 29 Jan | FullNameRequired | 'I decided today I would let them embark on their obsession and upgrade our Server to Apache v2.0' ...lets talk about where the stupidity lies then... No backup? No initial testing? you allowed them to upgrade your working server in the middle of the morning without a fallback plan? If I had to decide which of you lot to fire, it would be _you_
Thu 29 Jan | Mister Fancypants | This is completely your own fault for allowing them to make the change. Whatever happened to the buck stops here? Also, I've worked with tons of Americans who would have just as stupidly wanted to do the upgrade. This has nothing to do with culture-clash or the fact that they happen to be H1-Bs.
Thu 29 Jan | NathanJ | -- A secondary problem is that nobody should mess with an important server at 10 am. Changes should be made when the CEO is at his weekend resort and the customers are least likely to browse the company website. -- I agree with this. Anyone signing off on a 10am upgrade to a production server should not complain about the skills of others.
Thu 29 Jan | Jan Derk | Gee guys stop the flaming. Everyone makes mistakes. And as long as one learns that's all right. Anyone signing off on a 10am upgrade to a production server should not complain about the skills of others. Could be worse: I have seen system adminstrators start server breaking upgrades at 4 pm and go home.
Thu 29 Jan | Cosmo Kramer | 'I decided today I would let them embark on their obsession and upgrade our Server to Apache v2.0 ( It seems to be their strange obsession with Apache.org). So around ***** 10am *****' And you are a MANAGER? Jeez!!! ever heard about change control? If I were your manager, I would discipline you for your lack of responsibility and accountability.
Thu 29 Jan | Ian Ashley | A secondary problem is that nobody should mess with an important server at 10 am. Changes should be made when the CEO is at his weekend resort and the customers are least likely to browse the company website. I agree with this. Anyone signing off on a 10am upgrade to a production server should not complain about the skills of others. Huh? The timing of doing these sorts of things all depends on the situation. In this case 10AM was probably not the best timing considering the business and nature of the upgrade. However, in my situation, 8AM-10AM in the beginning of the work week is the BEST time to do drastic upgrades.
Thu 29 Jan | Cosmo Kramer | 'However, in my situation, 8AM-10AM in the beginning of the work week is the BEST time to do drastic upgrades. ' We are not talking about your situation are we?
Thu 29 Jan | njkayaker | (As far as flames go, this is pretty tame.) Yes, every body makes mistakes. Though, it's not at all clear that the original poster thinks he made one (or more). It's the extreme arrogance of the original poster that is so irksome. What an astonishing way to give himself the opportunity to basically say 'see, I was right'. Strange.
Thu 29 Jan | Chris Tavares | Actually, considering that the original poster is being forced to train *his own replacements*, this was actually a good idea. 'Well, they took two hours, lost us money, and never got it working. I fixed it in 15 minutes. Why'd you want to get rid of me again?' Sounds like it might have been the right thing to do.
Thu 29 Jan | JS | Apperently, some of you are missing my point, or I neglected to explain. I am currently training these two bozos to take my job. They came over here from India with every A++ known to man (Allegedly), but thus far have not demonstrated squat Except inaptability. So I just gave them the rope. As for timing of Upgrade. I agree, But then again with Managements, No overtime policy. Well that narrows it down a bit. As for testing Apache out before I upgrade it. I Agree. But remember these Two bozos are IT after I get the pink slip when MGMT thinks they are capable. So might as well give them enough rope now to hang themselves. Soon I won't be there and it will be thier show.
Thu 29 Jan | FullNameRequired | 'Actually, considering that the original poster is being forced to train *his own replacements*, this was actually a good idea.' ahh....so it _wasn't_ a tale meant to illustrate the stupidity and incompetence of his fellow workers, it was a tale intended to demonstrate the way in which the OP is tricking and manipulating his fellow workers to make himself look good. actually, it reads a lot better in that light :)
Thu 29 Jan | Tom Vu | You described yourself as an incompetent superior eating jelly donuts and drinking coffee rather than being in control. 
Thu 29 Jan | flamebait sr. | I've noticed that a lot of folks with too many A++s are often bright but lacking in common sense.  You can have a 4.0 simply by having persistance, a modicum of intelligence, and not much else.
Thu 29 Jan | no name | So two Indian guys came to America to take your job? Or are they going back to India with their knowledge? Why not fill a job in America with American workers? Please explain. It doesn't make sense. I probably have something wrong here.
Thu 29 Jan | Bored Bystander | JS, Given the situation you have been placed in, kudos for handling it mercilessly and with a sense of humor and irony. Everyone flaming and preaching is lacking humor and completely missing the point. You're being squeezed out by cheaper and ostensibly 'superior' workers. So you're stepping out of the way to give Heckle and Jeckyll the rope they need to hang themselves 'mighty fastly'. May your scumsucking employer get what they deserve when these idiots are finally in control of something important with no net.
Thu 29 Jan | Bored Bystander | Oh, yeah. And congratulations on allowing these nimrods to do their damage during a period of the maximal visibility, late morning. That's good. Anything you allowed to happen that others are aghast about should be viewed as a sarcastic payback to your management happening in real time.
Thu 29 Jan | no name | well, he didn't mention anywhere that they were replacing him. he just said he was training them. the other problem with the story, is that it sounds like any IT bungler story anywhere.
Thu 29 Jan | Mister Fancypants | I know I'll get shit for this, but on the whole I prefer to avoid working with 'full honors' 4.0 GPA types. I'm completely stereotyping here, and I know it, but in my experience they tend to be soulless automatons, capable of doing a well-described job, but lacking in the creativity & innovation departments. The really creative types skipped a few classes and didn't turn in all their homework. At least.. in my experience.
Thu 29 Jan | Mister Fancypants | Bored, The major problem here is that his post assumes we were following his 'continuing story'. If you read the original post not knowing he is training his replacements (which almost everyone did, since he never mentions it here), the story comes off in a vastly different light.
Thu 29 Jan | Mister Fancypants | Also, I (still) don't see what the replacements being H1-Bs has to do with anything. As I mentioned in my first post to this thread, I know a lot of Americans who would have gladly done something just as stupid simply because they want to be running the cutting edge of everything, even when doing so is ill advised. Since we're already stereotyping... If anything, *my* experience with H1-Bs tends to suggest they are more often at the opposite end of the spectrum, and believe in the 'if it ain't broke, don't fix it' mantra to a fault.
Thu 29 Jan | Bored Bystander | >> I am currently training these two bozos to take my job ... >> But remember these Two bozos are IT after I get the pink slip when MGMT thinks they are capable. So might as well give them enough rope now to hang themselves. Soon I won't be there and it will be thier show. >> JS Unless this post is forged, how much clearer can JS's situation be?
Thu 29 Jan | no name | BB, he posted that 18 posts after the original message.
Thu 29 Jan | NathanJ | Maybe your first post cleared things up a bit, but... -- As for timing of Upgrade. I agree, But then again with Managements, No overtime policy. Well that narrows it down a bit. -- If there is no overtime then you take the morning off and stay late. Very simple. I feel like Bella now. You seem like a whiny and lazy American that feels entitled to a job. Maybe if you spent some time on 'busywork' like upgrading to apace 2.0 your bosses would feel better about keeping you around?
Thu 29 Jan |   | He's been told he's being replaced by two rather incompetent guys brought especially into the country for the purpose.  And he has to train them.  In my opinion he has a right to be as lazy and whiny as he wants.  He's taking this much better than I would since I would tend to resort to violence.
Fri 30 Jan | FredF | >>However, in my situation, 8AM-10AM in the beginning of the work week is the BEST time to do drastic upgrades Agree. But make that a Sat or Sun, so you have plenty of time to fix things before people show up on Monday :-) And like several people said above, drastic upgrades require _planning_, ie. never to be done to a live server before it's been tested and validated on test servers, with real data.
Fri 30 Jan | Tony Chang | FredF, are you saying that the OP should have come in on the weekend for some unpaid overtime fighting fires not of his own making when he was already training his replacements in advance of his own layoff?
Fri 30 Jan | Cosmo Kramer | So JS are we supposed to sympathize with you? what's the deal dude?
Fri 30 Jan | no name | I would have thought the deal was pretty obvious. I sympathise with the plight of JS and consider the anecdotes useful comment on business practices.
Fri 30 Jan | NathanJ | I didn't read the original post by JS where he explains his whole predicament. I can't believe any company would just bring in two people to replace one person and tell the first person they were being laid off. There has to be more to the story. From what I've heard so far I still say JS is being lazy and whiny. He takes no responsibility to improve the situation so I don't feel sorry for him. In fact, he makes the situation worse by letting two newbies do a production upgrade in the middle of the day.
Fri 30 Jan | Lookout | How does that make the situation worse? Seems that anything to help them makes his personal situation worse and anything to let them hang themselves while conclusively demonstrating their own incompetance makes him look better. Hey this is the New Economy. You gotta look out for #1.
Sat 31 Jan | Stephen Jones | If you remember JS claimed that his job was being taken by H1B's payed $15,000 a year. Who does he expect to believe that? Might be an idea if he remembered there are two of the others. Why was the server down? 'Well, we wanted to do the job outside of work hours for this very reason, but JS insisted we did it at 10.am, didn't he?'
Sat 31 Jan | no name | NathanJ, You say you doubt JS's story because a company wouldn't replace someone and also tell him he's being replaced and require him to train them. The sad fact is that precisely this thing is and has been occurring all over the place. There are many documented cases. Search on Siemens and Mike Emmons for one well known case. If you don't know about any of this stuff, you should learn.
Sat 31 Jan | T. Norman | NathanJ: A common tactic is to tell someone they are getting liad off, but make the severance pay contingent on them staying long enough to train their replacement(s). Still, this story only makes sense if the H-1Bs are going back to India after their training. Because unless JS was making over $100K, it's not going to be cheaper to hire two H-1B replacements who remain in the US.
Sat 31 Jan | Lookout | Norman, how do you figure? You do know that they removed the unenforced 'requirement' that prevailing wage be paid right?
The Rich Client Strikes Back | Thu 29 Jan | GenX'er
http://www.sys-con.com/story/?storyid=38678&DE=1 Java Web Start & .NET Auto Deploys may indeed replace HTML as the UI.
Thu 29 Jan | anonymizer | `There is a movement afoot in the world of enterprise applications toward 'rich clients,' reversing the past few years' trend that abandoned client/server in favor of Web-based interfaces' I'd love to see their proof on this... my own observation has been the exact opposite, and that the pace to replace thick-clients with thin-client web apps has _accelerated_ (and has been extremely successful). Of course I suppose it depends upon the definition of thick-versus-thin : Some 'thin' client apps make use of SVG, Flash, and other very complex web technologies that give powerful graphics and interactivity, but are cross platform and easily deployed.
Thu 29 Jan | Impoverished Programmer | I could sure use a rich client right now.
Thu 29 Jan | Noname | What the world needs is a good just-in-time/web-deployable rich client, which gives the best of both worlds: ease of deployment and good usability.
Thu 29 Jan | Brad Wilson | Which is what you get with .NET.
Thu 29 Jan | Chris Winters | ...and with Java -- JavaWebStart has been doing this for a while now.
Thu 29 Jan | Been there | Yea, web apps are easier to deploy and maintain so the IT department likes them; but IMHO they're usually feature starved, put one side by side with a rich client and the browser based app stinks. And there isn't a "latency issue" with web apps, they're slow.
Thu 29 Jan | Philo | My experience over the past year is that there's only one person that wants web apps any more - the CIO. Developers don't like web apps because a) clients want rich functionality and it's up to us to provide it, no matter what the platform b) state management sucks Users don't like web apps because a) They're web apps But in several cases I've seen a CIO hold firm against pushing from *both* sides for a Win32 app. Philo
Thu 29 Jan | Noname | I should have added 'cross-platform' to my statement. That rules out .NET, at least until Mono is reliable on other platforms. Being 'good' as a client rules out Java, because unless you are among the 1% who know the inside tricks required to write a responsive and good-looking Swing app, Java sucks on the client.
Thu 29 Jan | Matthew Lock | One of the nice abilities of web apps is for corporations to 'stitch' them together just by making a page of links into a kind of intranet, so the users only have learn how to visit a single web page to get their work done. Users also like the ability to just hit the back button in a web app., gives them the feeling of control over the application.
Fri 30 Jan | Steve Jones (UK) | I can see that it is easier to create 'rich' WinForms apps, but I reckon you can still do a pretty good job using DHTML/CSS/JavaScript/ASP.NET. Just take a look at the web-based version of Outlook that ships with Exchange for an example of what can be done. I'm in the middle of a big web-application project and while it does have some downsides, the fact that it can be deployed across the client's entire workforce and then made available to their trading partners and customers, with almost no effort makes it worthwhile.
Fri 30 Jan | GenX'er | Steve Jones (UK), .NET Auto Deploys allows you to do the same with a Win Forms .exe and Java Web Start is similar in J2EE. You just copy your .exe and .dlls to a web server and the client hits the .exe on the web server I.E. 'http://www.servername.com/myapp/HelloWorld.exe' - this can be an internet shortcut. The app downloads automatically to a local cache as needed (Dlls only as needed). If a new version was released on the web server, the next request coming in from the client knows automatically to pull down the latest version. Simple deployment just like a Web App - but no browser, real state & real functionality....
Fri 30 Jan | Portabella | > And there isn't a 'latency issue' with web apps, they're slow. They'll never be as fast as thick clients, but they can be fast enough, which is what matters. And yeah, I've seen plenty of slow ones, but I've also seen some great click-the-button-and-bam-there's-the-next-screen ones too. I have to wonder how much 'Rich Client Strikes Back' is wishful thinking and predicting the thing in order to create it.
Fri 30 Jan | no name | 'I could sure use a rich client right now' ROFL!
Sat 31 Jan | Stephen Jones | ----'Just take a look at the web-based version of Outlook that ships with Exchange for an example of what can be done.'----- I'm using it at the moment, as I'm on holiday. IfI had to do my normal work with it it would take three times as long, before we count the slowness of the dial up connection.
Clearing the air on Delphi | Thu 29 Jan | Bored Bystander
One point I wanted to make about Delphi that I think is being missed. Delphis stated advantages (I wont go into them here) basically come with the IDE and development environment. The shift from, say, C++ to Object Pascal itself is actually VERY low effort and by itself doesnt change the dynamics of development. The language itself isnt the point. OP has more in common with C++ than is different (except that the language overall doesnt have the expressive power of C++ with features like definable common operators nor templates.) In one afternoon a good C++ developer could learn enough OP to fumble in the dark with. The features of the Delphi environment (quick compilation of large projects, for instance) may leverage Object Pascals structure, such as the fact that source code modules (units) have their interface specifications precompiled instead of being presented as text include files. But most of the productivity advantages of Delphi have to do with its unique IDE structure and the VCL. The most effort I spent in mastering Delphi was in grokking the IDE and the VCL, which give the platform 95% of its power. Object Pascal itself is nothing in comparison. As a reasonably experienced Win API developer when I started with Delphi I would guess that it took me 4 months part time to get to the point of writing reasonable commercial quality code. Probably would have taken 2 months if it were full time. But my point is: basically, Delphi is one big application itself with its own way of thinking about program structure, that itself takes time to master. This is one reason why the OSS community will probably never clone Delphi itself, even though there are GNU Object Pascal compilers. Theres too much to replicate. It would be admirable as a technical feat but I doubt it would ever happen.
Thu 29 Jan | Just me (Sir to you) | What do Delphi, the Macintosh, OS/2, Linux and the Amiga have in common?
Thu 29 Jan | no name | I know! I know! Delphi & Linux kick ass! Don't know about amiga or os/2 though.
Thu 29 Jan | a cynic writes... | ...the OSS community will probably never clone Delphi itself.. But it won't stop 'em trying. There actually is an attempt on the go to clone delphi, the lazarus project - http://www.lazarus.freepascal.org/
Thu 29 Jan | i like i | Technical dominance doesn't always translate into market dominance?
Thu 29 Jan | Mister Fancypants | Woohoo, third 'use Delphi' post! Let's not spoil it by bringing up the fact that using a development tool that only has one vendor (that happens to be a rather small and not entirely stable company) is probably a bad idea regardless of the tool's technical merit!
Thu 29 Jan | Chris Nahr | Especially when said vendor seems hell-bent on putting itself out of business...
Thu 29 Jan | Albert D. Kallal | I mean, the question remains, why is Delphi not making any inroads into the market place? In fact, lets even dump the idea, or even the EXISTENCE .net. Even before .net came along, the share, or number of people using Delphi was not exactly growing for the last few years. If anything, Delphi has been seeing a exodus of developers. So, we now have to conclude that all developers are dumb? Or, perhaps all developers are brainwashed by some marketing machine for not using Delphi? Sure, ok...we got stand alone .exe. However, one feature alone does not do the trick. And, lets be fair, as most, if not all of the non mainstream development environment have a very devoted and religious like following. Delphi is certainly one those platforms. Why is not Delphi more popular? And, this stuff about Delphi being a more productive environment then VB? Says who? I don’t buy that for one second. If developers could produce more software in less time with Delphi then with VB, then Delphi would be more popular then it is now. Likely, VB has a less steep learning curve, and gives good bang for the efforts made. Likely less effort then Delpi.. It also depends on what you are developing. If you are building a small business applications, and it is data centric, then VB, and Delphi are likely quite close. Products like ms-access are at least another 3 x better in terms out of output (compared to VB or Delphi). That means a $12,000 project in ms-access will cost you $35,000 in VB or Delphi. However, this cost difference will also depends on the size and type of project. And, the issue of the target market for the product. While you can use VSS with ms-access, it is not geared towards team development. It also depends on what kind of UI you are looking to build. (Delphi/VB are better then ms-access if you need a complex or custom GUI that goes beyond data forms editing). For MOST bushiness applications those ms-access forms are really good. (those access forms are a lot harder to learn and master then are VB forms anyway). I only mention the learning curve, as where the product stands in terms of difficult to learn and use is often not so clear, or cut and dry. And, talking about a GUI....try writing a game in ms-access! Duh! Another more important issue here is the architectures of both the development process (OO, and team development issues), and the design of project (3 tier database designs is a good example). As the project and size move up, then you start moving up the ladder in terms of what tool makes the most sense. You can’t use ms-access for 3 tiered applications for example (on the other hand, MS has released the soap tool kit for office/ms-access. And, now ms-access developer edition has been moved over to Visual Studio). All this means that development tools overlap in terms of what they can do. However, as you move up scope and size (and project budget!), the tool of choice to use will start to change. That means the right horse for the right course. Also, if you are looking at larger distribution, then again which tools to use will become part of the issue. There is TONS of business that have VB developers creating software in house. However, those applications are not generally going to be distributed. Perhaps, the position, or place in the market of where Delphi stands is the problem. Delpi is likey above VB. However, if you need more then VB, then you make the jump all the way to c++. (and now, we got .net..so this is even harder to choose Delpi). And, while we are at this, why don’t more people use FoxPro. It is full OO, and has the ability to create stand alone .exe. And, to be fair, since FoxPro is a full OO product, I likely would place it above VB in terms of difficulty to use due to the full OO issue. (you can also make ActiveX products with Fox). If Delphi is the slice bread that it is made to be, then why don’t more people use it? I have little, or no doubt that Delpi is good product. As it stands now...I would bet the Delphi community is loosing people. Albert D. Kallal Edmonton, Alberta Canada kallal@msn.com http://www.attcanada.net/~kallal.msn
Thu 29 Jan | Eric Debois | >>Especially when said vendor seems hell-bent on putting itself out of business... One might say that the fact that borland is still in existance is a testament to the quality of some of their products.
Thu 29 Jan | Dennis Forbes | 'If Delphi is the slice bread that it is made to be, then why don’t more people use it?' Has market adoption ever directly tracked with technical superiority? I hardly think so. If that were the case Mozilla would have 90% of the browser market. Instead we have countless Microsoft drones clutching onto IE like their comfort blanket, attaching any number of plug-ins and jimmies to make it Mozilla-esque (after eventually acquiescing after countless claims that things like tabbed browsing wasn't important), all while praying that the latest IE exploit doesn't FUBAR their PC. Note that this isn't a slam at Microsft -- Microsoft has _chosen_ to let IE grow stale, presumably under the premise that it'll make Longhorn easier to sell (given that the majority of users are too fearful to let down their Microsoft banner, so they'll still be running IE 6 when Longhorn eventually comes out, so IE 7 or whatever will look pretty special). Whlie there are those for whom Visual Basic really was the best choice, I largely attribute the high adoption of Visual Basic to the career programmers who simply want to be spoon fed by Microsoft.
Thu 29 Jan | Indian Developer in India | I largely attribute the high adoption of Visual Basic to the career programmers who simply want to be spoon fed by Microsoft. Beg to differ. I am *most* conversant with VB and am reasonably competent in a couple of other languages. Its _versatality_ is what is most appealing, more than the speed of deployment or faster learning time frames. Churning out good software fast is easier in VB than in any other language, imo. As mentioned, yes, its mainly in house business apps and less often games, and has no uber cool new paradigm shifting approach to memory management. But any good app made in C++ or Delphi or Python or whatever, can be done _just_as_well_ in VB. It may be more code and requires more discipline on the part of the coder (to compensate for the 'spoon feeding'). Then again, food, shelter, clothing are still the primary needs of any individual. VB meets those needs pretty much the best. Regards KayJay
Thu 29 Jan | Mister Fancypants | At the end of the day it doesn't matter why technology X is more widely adopted than technology Y, even if Y is seems to be a better solution to the objective observer. If you're planning a long-term business, you should go with technology X anyway simply because the momentum means: More developers to hire from. Better third party tool support. Lesser chance the company behind the technology will disappear, leaving you with code in an unsupported language. Etc. This is why I'm still using C++ when I'd really like to use Digital Mars' D language. It is a great language, but there are a long list of reasons why I just can't bet the farm on it and none of them have to do with its technical merit.
Thu 29 Jan | Keith Wright | If it is the Delphi libraries that are the bees knees more so than the Object Pascal, why don't they just make a C++ Delphi?  And if it plays nicely with MFC they could get some of the MFC users (of which there are still very many) to start transitioning to Delphi.
Thu 29 Jan | Patrik | >If it is the Delphi libraries that are the bees knees more >so than the Object Pascal, why don't they just make a >C++ Delphi? They did. C++ Builder is the same IDE as Delphi, but you use C++ as the language. C++ Builder can even include Delphi code in the C++ projects.
Thu 29 Jan | Richard P | But C++ can't be compiled in a single pass like Object Pascal can, and therefore Delphi compiles and intellisenses a lot faster than C++ Builder. IIRC, C++ Builder is more expensive than VC++. Therefore, C++ Builder is in this very niche market of people who are determined to use C++ instead of Delphi and don't mind spending more money than VC++.
Thu 29 Jan | Bored Bystander | IMO, reasons why Delphi never took off: - It's not Microsoft. Technical managements accept and generate their own FUD arguments revolving around the purported superiority and safety of MS languages. Why? Butt covering, and laziness. I remember arguments with MS heads 6 and 7 years ago that basically amounted to: 'we are precommitted to everything Microsoft just because, and we refuse to listen to anything else' as the justification. - Exceptionally poor marketing and judgement of the market and pricing points by Borland. - The (IMO) unwarranted 'Pascal' language stigma. - Poor results by some poor programmers. Delphi code and IDE *looks* like VB but it's really a compiled, pointer based language with voluntary, explicit (C like) memory management. I have seen heads down types crash and burn with Delphi because they refused to believe that it really would require effort and discipline to master. - In later years, unwarranted high pricing of Delphi and C++ Builder. That is: a copy of Delphi with database features is very expensive compared to the bundled or MSDN based price of VB, but the job market for Delphi skills is bad, so there is little incentive to plunge into Delphi if you aren't committed to it yet. - Chicken and egg effect: comparatively few shops use Delphi so there's not a lot of 'reference implementations' and peers who can support this tool around the industry. I think Delphi today would have *one* chance: Borland gets their heads out of their asses and slashes the price of the professional level Delphi to the bone (<$200) to match its market acceptance, and/or offers an attractive 'twofer' bundle with Delphi and C++ Builder.
Thu 29 Jan | [*] | Bored Bystander got ti right. It doesn't matter which is better. It all boils down to one simple fact - for every Delphi job available there is 10 or more MS (VB, C++ etc. ) jobs. Even C# as new as it is aoutnumbers Delphi. Why should I limit my options by sticking with a language that hasn't captured the hearts of corporate America?
Thu 29 Jan | TJ Haeser | There's about a million Delphi developers. Is that such a low number? PS: I honestly have no idea if 1 mil developers is a lot or not.
Thu 29 Jan | TJ Haeser | Oh, and due to the modifications introduced with Delphi 8, it's called Delphi Language now, not Object Pascal.
Thu 29 Jan | Nils | Albert D. Call wrote >>If anything, Delphi has been seeing a exodus of developers. So, we now have to conclude that all developers are dumb? Or, perhaps all developers are brainwashed by some marketing machine for not using Delphi?<< It's usually not the developers themselves that get to choose the tools they have to work with. All I know is that when you look at small development shops (1, 2 or 3 developers) you will see Delphi much more often than any other. Simply because with Delphi's IDE, component market, and hassle-free deployment it is a much more 'chewable' product for the small companies that can't afford specialists for every little niche. The personal reason why I chose Object Pascal over C++ though, is simply because I'm slightly dyslectic and can't keep apart = from ==, nor can't cope with the strange += and ++ and brackets everywhere (grin). Kind regards, Nils www.simdesign.nl
Thu 29 Jan | Thomas Eyde | Don't forget the fact that Delphi is painful to program in. Not for the experienced Delphi developer, of course, but for a competent VB developer seeking something new and improved, coding in Delphi takes too long, is too much typing, is too cumbersome and how irritating it is to always have to change my method signatures in two places, miles apart. Someone told me there are short cuts do do that. So be it, I didn't have the patience to find out. VB.NET is too lame, C# was the natural choice.
Thu 29 Jan | Nate Silva | I've looked at Delphi but it appears version 8 is .NET only -- or marketed that way -- and that scared me away. I code in C# so Delphi's main advantage would've been the lack of a humungous runtime. Apparently they are targeting a different market now.
Thu 29 Jan | pdq | There's a real cogent comment - 'VB.net was too lame'. Do you have a technical reason or is it that you don't want to be seen using a toy language. Personally, I can't stand CaSeSenSiTIVe languages. I don't see the benefit, but do see the cost.
Thu 29 Jan | Sum Dum Gai | I agree with Bored Bystander, except for his last point. The bird has flown. It's too late for Delphi to win now. If they'd got their pricing and marketting right 5+ years ago, they had a chance. Now they're too far behind to ever catch up.
Thu 29 Jan | Bored Bystander | >> Now they're too far behind to ever catch up. I was toying with the idea that if Borland practically *gave* Delphi away, it might take off. Or not. Yeah, it's probably too late.
Thu 29 Jan | T. Norman | A tool can be the best in its class from a technical perspective, but have a small market share because IT IS NOT TECHNICAL PEOPLE who make most software purchasing decisions.
Thu 29 Jan | one programmer's opinion | 'Why should I limit my options by sticking with a language that hasn't captured the hearts of corporate America?' Perhaps, I am stating the obvious but Visual Basic really never captured the hearts of managers inside of corporate America when it came out. Visual Basic snuck in the back door and was able to stay there with some help from Microsoft Office (VBA) and Microsoft's scripting language (VBScript). When Delphi came out Visual Basic was already well entrenched within many businesses and schools. Market penetration wise, it is hard to say how much of a difference it would have made had Borland done a better job on marketing and pricing.
Fri 30 Jan | max | Borland is very bad at marketing. Delphi 1 came out in 1995. It gained market share very quickly back then. Then Java appeared with a completely free compiler and libraries. Borland should have made some parts of Delphi free, in order to compete with Java. I have worked with both Delphi 1.0 and Java 1.0 and the winner is clearly Delphi. But Borland kept a high price tag for Delphi, while Microsoft lowered the price for VB and Java was absolutely free.
Fri 30 Jan | Junkster | 'But Borland kept a high price tag for Delphi, while Microsoft lowered the price for VB and Java was absolutely free. ' No, that's not how it was at all. Both Delphi and VB started out with low prices, then they stopped shooting for the low end and went for the $1000+ enterprise pricing. At one time Delphi Standard was only ~$70, with no strings attached. Delphi Pro was ~$500. Then they changed Standard to Personal, disallowing any kind of commercial use, and more than doubled the price of Pro. VB used to have a ~$500 version, but Microsoft dropped it. The real question is why someone would pay $1000+ for Delphi in 2004 when you can get the C# Standard Edition of Visual Studio for $100, with no licensing restrictions.
Fri 30 Jan | Bored Bystander | >> Both Delphi and VB started out with low prices, then they stopped shooting for the low end and went for the $1000+ enterprise pricing. Yes. Delphi 3 & 4 cost about $250 or so for the Professional edition with a competitive or version upgrade. (all desktop database functionality included.) This, IMO, was the upper limit of acceptability of pricing for Delphi. The pricing of the enterprise editions of Delphi (~$2500 and up) is a joke since there are several middleware packages in existence that do the same things. Borland flirted with 'look at our Powerpoint presentations on CORBA' pomposity in changing their name to Inprise in the late 90s and really got off stride with their core audience. They were trying to sound big, glossy, arrogant, and suitlike, and the rest of the IT industry just didn't buy it. Borland's pricing, image and marketing strategy in this period was like Pontiac trying to go after buyers of Lexus and BMW.
Sat 31 Jan | John Marland | Do not forget the power of the full source of the VCL of Delphi. When you use VB (or a .Net language) you sometimes get some total unclear errors, caused by some deep problem somewhere in the libraries of Microsoft. Our best programmers are occupied trying to program around those problems. And they do not like this kind of work, because they feel that they must concentrate on the problem of the customers, not on problems inside their tools. Of course in Delphi these problems also occur, but you can trace inside the VCL what happens, and get a clear understanding of the problem. And in most cases without changing the VCL you know what the do. With the 18 Mb Class library of .Net I fear that this situation will get even worse. Recently we changed a large VB project to Delphi, just to get a more stable system. For the original system we needed 48 months to build, the converted system (from scratch) 6 months. We did spend less on recoding in Delphi then on effort to program around VB problems. Even the interface to Excel was more stable in Delphi then in VB. I do not suggest Delphi is 6 times as efficient, there is no difference until writing an Alpha release of a program, but when comparing the programming effort including the final releases Delphi is the clear winner. But for Delphi (and also the .Net languages) you need more capable programmers. They need to understand the Object Oriented Paradigm. This makes it difficult to compare Delphi and VBA and disturbs comparison of Delphi and VB.
Sat 31 Jan | Bored Bystander | >> Do not forget the power of the full source of the VCL of Delphi. >> When you use VB (or a .Net language) you sometimes get some total unclear errors, caused by some deep problem somewhere in the libraries of Microsoft. >> ... but when comparing the programming effort including the final releases Delphi is the clear winner. >> But for Delphi (and also the .Net languages) you need more capable programmers. Well said. These are things I've pointed out to MS heads in the past. This message is absolutely impossible to convey to the 'brainwashed.' I think that in most cases, the kind of software projects that would benefit the most from Delphi just don't exist anymore in abundance and never were a large market force anyway. IE: rich user interfaces on workstation applications.
I'm a programmer and I don't have the .NET runtime | Thu 29 Jan | Roose
What popular apps require it?  Just curious.  The most Ive heard of it is on this board.  Ive never even seen any program that says it requires .NET.
Thu 29 Jan | Matthew Lock | How long has .NET been out for now? 2 or 3 years?
Thu 29 Jan | Koz | Sharp Reader requires .NET.  It's a pretty good RSS reader.  Though it's no feed demon.
Thu 29 Jan | Laim | What really put me off .NET was when I wanted to install an eval version of Vault (source control program) yesterday -- I go the message on my PC that the .NET framework is not installed. My PC is less than 1 year old and I am using Win XP Pro with Office XP & *I* have a problem! It will take many years before we can even think of rolling our applications out on .NET -- So Win32 development will be with us for *AT LEAST* another 3 years.
Thu 29 Jan | Philippe Back | The issue may be that by *not* learning some basics of it today will lead to being left behind and not able to catch up *if* it becomes mainstream. People having invested earlier would then be ahead of the pack. This is not specific to .NET of course, the same can be said of any technology. As a consequence, behing ahead of the pack on the 'flashy-technology-du-jour' helps in raising the fees. But for .NET, it is always possible to graft an API|gateway to an existing app and tell that it is .NET compliant (COM Interop anyone ?). Customers will always buy if the product gives them a significant benefit. People buy benefits, not features (like it's .NET-based). If the benefit is compelling enough, they would buy no matter what the tech is. At the end of the day, it's a call upon ourselves, based on an assessment relating to what we like to do and how our current personal investement in a particular set of technologies. Personally I had a huge investment in Clipper, Pascal and C++ in the past (MSDOS) and most of it had to be thrown away due to the move to Windows. It's not a good feeling. Moving from Win32 to .NET feels somewhat like the same. Of course there are benefits but are they compelling enough if you can do the same on the current platform ?
Thu 29 Jan | Sum Dum Gai | I work on a product that has a nice shiny .NET logo on it, as it's been certified that it does web services in .NET. However, the bulk of the code is written in old fashioned C++ COM objects and ASP (not ASPX) pages. So yeah, you can use .NET as a marketting point even if you're really not using it much at all.
Thu 29 Jan | Oren | NewsGator (a great RSS reader) requires it.
Thu 29 Jan |   | How many desktop applications have you seen that say it requires Java's JVM? .NET was created primarily to reduce Java's dominance in the corporate enterprise software development market. If you don't write business apps for a living then you probably won't need to learn anything about .NET.
Thu 29 Jan | Hermaphrodite | I used to use SharpReader, but found it taking 60M+ of memory on my 256M laptop.  Unacceptable.  So I uninstalled it, and uninstalled the runtime while I was at it.  Yea!  More space on my 20G harddrive!
Thu 29 Jan | Brad Wilson | Yep, SharpReader is a pig, no doubt about it. Outlook (an app I've always considered a pig) is only taking 35MB on my machine, and that's with NewsGator running in it.
Thu 29 Jan | matt | I don't understand why users not having the runtime is such a big deal.  Many Java apps are bundled with the JRE to install if necessary.  Can't .NET apps do the same?
Thu 29 Jan | Mike | 'I used to use SharpReader, but found it taking 60M+ of memory on my 256M laptop. ' Yes. Just as almost any java program does. .net and java eat ram like there is no tomorrow. Does that surprise anyone? 6 degrees that addin to outlook done in java likes about 60M also. Languages that run in a virtual machine environment need a ton of ram, end of story.
Thu 29 Jan | Kentasy | Yes, a .NET app can install the Framework if necessary. It is only 23 MBs for the redistibutable runtime...sheesh... I bet most people here download 23 MBs of mp3s, avis, Red vs. Blue, SourceForge projects, Linux updates etc. etc. every day.
Thu 29 Jan | Mister Fancypants | Yeah, and most people here are also not what you'd categorize as your standard 'end-user'. You know, the people who might not be developers but might want to buy your application online and download it through their AOL dialup account. Why is it so hard for most developers to understand that?
Thu 29 Jan | Kentasy | Ok, yes, this is a serious issue if the majority of your customers are AOL users on dialup.
Thu 29 Jan | SteveM | If the majority of your users are AOL customers on dialup I think you have bigger problems than the size of the .NET framework! (Sorry - couldn't resist)
Thu 29 Jan | SteveM | Err - unless you *are* AOL that is :-D
Thu 29 Jan | The real Entrepreneur | 'If the majority of your users are AOL customers on dialup I think you have bigger problems than the size of the .NET framework!' Actually, having a customer base of people willing to pay 50% more for dialup access than they need to is a VERY VERY GOOD THING. I think that's what a lot of programmers miss: The more technologically sophisticated your customer, the LESS they are generally willing to pay for a product. Look at the extreme: all those very sophisticated linux gurus who REFUSE to PAY for any software. Those folks, generally, will never be a paying customer.
Thu 29 Jan | Chris Pearce | I was talking to a Microsoft guy, and he said that .NET would be the default executable format for Longhorn. At the very least it will come with the CLR. So in 2 years time (or whenever Longhorn comes out) all new computers will have it. I think they're releasing it now so that people can have a chance to write programs that will work with Longhorn, without having to have a copy of Longhorn.
Thu 29 Jan | Kentasy | >Ok, yes, this is a serious issue if the majority of your customers are AOL users on dialup. Or Linux geeks
Thu 29 Jan | trollbooth | How many times must we go over this? Talk about beating a dead horse. I can only tell you one thing - if you write programs for windows you will use .Net in the future. So get used to it, now or later. It's up to you. But please don't cry when a clearly marked .Net application (Like Vault) requires the runtime. It's like crying because a java app demands a JVM!
Thu 29 Jan | Brad Wilson | What's a "Java App"? Don't think I've heard of those. :-p
Thu 29 Jan | Chris Tavares | The only one I've seen in general use is PCGen, a character creation program for D&D. And installation's always been a bit, er, fickle with it. :-)
Thu 29 Jan | Man who knows it all | Why use new tools when I can sit and complain about everything that comes down the road? It's much easier.
Thu 29 Jan | trollbooth | Now sure if you are being funny or not so I'll just assume hostile like a good semi-pro troll: A Java App is like a Java Ape except not so polite as to use vaseline. See the beauty about being a troll is that I can switch between logical and cave man in .02 seconds and my argument will still fit my troll template. Self-serving. The unfortunate aspect of it is no one will take you seriously. But on this board who really gives a patoot? The only reason anyone reads your shit is to nitpick away at your statements and prop themselves up. And they honestly think this place is better than slashdot, that is the funniest part (in a 'hey that old lady just slipped on the ice!' kind of way).
Thu 29 Jan | Wayne | That was a terrible ending to a pretty nice conversation. This place WAS better than slashdot. I guess the next time that I find a cool little blog-o-board, I'll just keep it to myself!~
Sat 31 Jan | John Marland | At this moment most shareware and Freeware is written in Delphi. Also on your computer most non Microsoft software is likely written in Delphi. (Microsoft uses C++). The reasons are: a) stability, in Delphi you have the full access to the underlying libraries. So you can always trace the cause of an error. b) Small size of executable. Everybody - also most Delphi Developers - agree that course Delphi will fade out on the long term, but that takes far longer then I expected. Microsoft was a big help, they first did help with financing Borland, then they killed Java, and now still have a muddled .Net strategy. Why is Basic.net not part of Office 2003? Why can I not program Excel 2003 in C#? If Microsoft does not use .Net in its own applications, why should we? Shareware developers are rather skeptical about .Net. On a recent shareware conference 100% of the participants developed for windows, 2% also for Linux, 2% for Macintosh, and 0% planned to develop a .Net application in the near future. Even an enthusiastic presentation of Microsoft could not change this. The general oppinion that if Longhorn is promised by Microsoft in 2005, it will be delivered in 2006, and we start making software for it in 2007, ready for delivery in 2009, when 25% of the computers have Longhorn.
Delphi compiles to stand-alone executables | Thu 29 Jan | max
Joel complains about a lack of a linker in .NET. In fact, Joel is asking for something that Delphi does since 1995: stand-alone executables that dont require a runtime or other external components. With Delphi, you can create reasonably sized application which dont require a runtime, and you dont have to worry one bit about DLL Hell and version incompatibilities, because you can use all the Delphi controls and components you want and everything will go into one .EXE. Also, Delphi compiles to native code which is extremely fast - the speed is comparable with the speed of C++. So, how do Delphi and C# / .NET compare, out of the box? I have 7 years of Delphi experience, starting with Delphi 1.0, and 1 year of C# experience. Delphi comes with a better set of components, and has a lot less bugs than .NET. In WinForms, even the grid is broken and produces problems. There are a lot of quality third-party components and controls for Delphi. The speed of Delphi compiled code is higher than the speed of C# .NET code. So, what do C# and .NET have, that Delphi 7 doesnt have? - garbage collection, managed environment (but Delphi implements several ways to deal with the lack of gc) - multicast events - C-like syntax Its an acceptable compromise, to me.
Thu 29 Jan | max | Also, about Pascal leaving people a bad taste in their mouth: Delphi is based on ObjectPascal, which is a very much improved variant of Pascal. I can understand why Pascal, Turbo Pascal or MS Pascal (yes, there was such a thing) left people a bad taste in their mouth - the language was restrictive, compared to C. But in ObjectPascal, they fixed it by extending the language a lot. You get dynamic arrays, an object model very similar to Java's and C#'s, and many other things.
Thu 29 Jan | Matthew Lock | A developer's skills in languages and development environments aren't 'hot swappable' though are they? For example, if you have invested a few years in building VB applications then your looking at months of work before you are as proficient in say Delphi as you were in VB.
Thu 29 Jan | Mister Fancypants | The inevitable second "use Delphi instead of (whatever) post".  Here's hoping this trend continues!
Thu 29 Jan | Matthew Lock | If you want to persuade me to use Delphi tell me something you can do in Delphi that is very much harder in other languages? I mean something concrete, for example it's very much easier in perl to rip though a file and extract data then any other language I've seen.
Thu 29 Jan | max | It is a lot faster and easier to create an app with a good, usable, rich GUI in Delphi than in other languages, including VB 6 and Visual C#. The standard Delphi controls also have a lot less bugs than the corresponding .NET co