last updated:23 Feb 2004 15:51 UK time
Joel On Software Discussion Forum
JOS Statistics - Recent Comments
(Comments added for week ending Sun 22 Feb 2004) | View Other Weeks
Microsoft CRM Server | Sun 22 Feb | Chris Ormerod
We received licences for MS CRM as part of our Partner package this year and so far the sales department and the tech support guys have had a play with it and all agree that it beats hands down our current system which consists of: 1. Act! 6 for the sales guys and 2. A homegrown support app written in ASP.Net and based heavily on the FogBugz UI and Case driven mentality. We have been looking for a system to tie the sales and support guys together for a while and this is the first one we have seen that looks like it could prove to be the replacement. But we have some questions: 1. Has anybody used the MS CRM Server 1.2 in a production sales environment for any period of time? 2. How did you find it compared to your previous solution? (What was your previous solution?) 3. Have you used it in a tech support environment? 4. Has anybody had experience tieing a licencing routine into the backend (or doing any custom work on it)? We have a setup in our program much like the FogBugz licence input form picks up how many users you have through an automated query based on your invoice number - we currently have this running through our custom support app and CRM would have to support this somehow. 5. (The killer) Has anybody had any luck importing their Act! data into the MS CRM program? I spent half a day looking at the data migration framework supplied with it and from what I can tell, I am going to have to write an app to massage the Act data into a compatible format ready to put in the import staging databases ready for upload. Is this the correct mentality or is their an easier way?
Sun 22 Feb | GiorgioG | Before singing praise for MS CRM 1.2, make sure you can do something as simple as replicating data for offline use. My job this coming week is to figure out why replication for our sales reps is not working for anyone. I wrote an internal data migration application for MS CRM 1.0 back when we implemented it - using .NET and their accompanying 'SDK' which was semi-painful. We were pulling data in from our internally written Lotus Notes/Domino system. Our previous system, Lotus Notes/Domino was sufficient, but did not integrate with our newly installed MS Solomon financials package. The company has pledged it's life to Microsoft recently (away from IBM.) Overall, MS CRM is still a 1.0 Microsoft product and will not be the most robust, flexible, easy to maintain system. With regards to the offline usage, Lotus Notes/Domino makes it extremely simple to do. Whereas in MS CRM, the replication system is not yet mature. In fact, I'm going to have to go in Query Analyzer and run some stored procedures and the likes to get it work - supposedly, from a CRM knowledgebase article I found. That aside, the product works well. We've had 1.0 running since last August and 1.2 was installed recently... We mainly use it for sales, not for tech support, so I can't really comment on that aspect of it. Your approach to migrating the data makes sense. When I wrote our migration application, I exported from Lotus Notes into a CSV file, massaged the data in excel, and then imported the file with my custom application. Nothing fancy, but personally I did not like their 1.0 sdk. XML is not the end-all, be-all and should not be used for everything IMO. Maybe things have changed in 1.2's SDK, I wouldn't know. If you have any specific questions, get stuck, etc - send me an email...
Sun 22 Feb | Laurel | 'The company has pledged it's life to Microsoft recentl' Time to sell your stock
Sun 22 Feb | Chris Ormerod | Thanks for that info GiorgioG, Apparently the Sales for Outlook addin gives us the offline ability right in outlook2003 but we haven't got that far into testing it out yet - we have just been evaluating the server side of it so far. Obviously we still have a lot to go over before we did implement it and if we do implement it we would trial it in 'real life' for a little while just to make sure it worked as advertised. This message was more just to gather others experiences with it to make sure we weren't wasting our time even looking at it. Offline isn't the top priority in our case as we only have 2 or 3 people who sometimes (once every 2 months or so at the moment) need offline ability anyway but obviously it will become necessary so thanks for pointing that out.
Sun 22 Feb | Chris Ormerod | And having CRM web based rather than desktop bound like Act! may need we don't need Offline anyway. Chris.
CMM & Off-Shore | Sun 22 Feb | Anon this time
... I just read another white-paper by an off-shore provider claiming to be CMMi 5 and PCMM 5 and Six Sigma. Having read the 768-page implementation guides to CMMi and browsed the rest, knowing when CMMi came out (2002?) and when these companies began chasing CMM (generally 1998 or so) ... ... Is it just me, or are some of these CMM level 5 companies completely bogus? Seriousy, CMMi requires an intensely, heavyweight, documented process structure that must be built from the ground up over a period of years. Then these companies come in and say oh, yeah, we got Cmmi5 last week ... I just dont buy it, especially when there is not true audit system in place for CMMi. Thoughts?
Sun 22 Feb | Oh? | I think a more pertinent question would be is how well do these companies maintain their CMM 5 status, given the nature of the industry that they are in. What I mean is that it's hard enough for IT/IS shops to turn out internal applications when they work in the same company, understand the business and work closely with each other. Now throw in the issues that off-shoring brings and try to do it under CMM Level 5. That's gotta be difficult to do since CMM 5 has such stringent change control procedures and now we've introduced some level of 'static' in the communication between client and development shop. I dunno..I've not worked in a CMM 5 company, nor do I have much experience working with an off-shore company. My gut reaction makes me wonder how they do it.
Strawman terminology: "expert C++ programmer?" | Sun 22 Feb | Bored Bystander
This topic was posted to another board by a recruiter who was lamenting the lack of responsive candidates for a job: http://pub21.ezboard.com/fopenitforumfrm8.showMessage?topicID=328.topic >> With all the pain and suffering going on in the I.T. world - you would think itd be rather easy to locate some top C++ talent. Wouldnt you? >> Well the reality is not the case. >> Many of the guys I run into are still living in an illusion. >> Wont even get off their couch for a chance at making 70-80K this year. >> Unbelievable. What emerges later in this thread is that: the $70-$80K is actually a contract rate of $35-$45/hr somewhere in Indiana, US; and what the recruiter really means by expert and top talent is someone able to develop C++ applications without supervision or training. Just a reality check, now: what does anyone here think that top talent or expert really mean? And is the reluctance of some qualified candidates to consider a mediocre rate on a contract position that probably requires relocation an indication of terminal laziness or poor character? My feeling is that some people want to protect their salary history and not work for wankers who consider someone an expert who simply meets nominal job qualifications. Just wanted to see what the folks here thought. Cheers.
Sun 22 Feb | T. Norman | A real 'expert' wouldn't accept $35-40 per hour.
Sun 22 Feb | Curious | Why not? Seems like it would be better, in many cases, than getting nothing. Not trying to be a smartarse. I'm not a contractor and don't have any insight into what represents a choice assignment. Just wondering what the thought process is.
Sun 22 Feb | Sum Dum Gai | 'A real 'expert' wouldn't accept $35-40 per hour.' Why not? What if the job is something they really love doing and they're willing to work for less money than they might otherwise be able to command? Or are experts only found amoung those solely motivated by money? Additionally, it may be that someone is an expert, but very poor at selling themselves, and hence is unable to command a greater rate. I think it's foolish to make blanket statements about how much an expert would cost.
Sun 22 Feb | no name | Let's get out of the bullshit IT world that's been destroyed by moron recruiters, pimps, outsourcers and business hacks for a minute. An expert in a profesional field means someone recognised to be at the top of their field, probably 40 or older, numerous achievements. Probably good position. Poeple like this do not work for $40 per hour.
Sun 22 Feb | Dan Brown | openIT forum is poisonous, I recommend staying away and not listening or believing anything that gets said in there.
Sun 22 Feb | no name | Why, Dan?
Sun 22 Feb | Dan Brown | Short and sweet: It's very important to keep good company, and that forum is full of whiners and complainers. A lot longer: Aristotle's conception of Eudaimonia - http://en.wikipedia.org/wiki/Eudaimonia
Sun 22 Feb | Mark Hoffman | If I had been out of work for years, with no foreseeable prospects then I think I would take whatever rate I could get just to feed my children. ..however...If I were just in a slump, I wouldn't take a $35-$40 job, even if I had nothing else lined up. One reason is that I wouldn't want to be tied down to a low paying contract when something better comes in. The other reasoning is that I simply am not interested in working for that rate. I'd rather spend the time working on growing my business, learning new skills or just spending time with my family rather than sloshing out code at $35/hour for someone who is likely to be a royal pain in the arse to deal with, given the low rate they pay. Of course, given enough time with no business and one has to re-evaluate their market price.
bookkeeping for mobile macintosh professional? | Sun 22 Feb |  
hi, I recently ended my glamorous career as an IT systems programmer and have switched over to becoming a filmer/producer of video clips. My production kit is based on an apple powerbook. Im trying to keep the number of non-media-production apps at a minimum. One issue Im running into is that I dont know what a decent accounting package is for the mac. Im considering purchasing a windows laptop for running quickbooks, but I have to travel a lot and would rather not carry 2 laptops. Most of my mac-head friends say the version of quickbooks for the macintosh is not worth using. does anyone have any other suggestions for macintosh accounting software? also, another idea I had was to see if there is a palm-pilot based accounting package. I do like the idea of dedicating my powerbook to final cut pro and logic, and having my accounting package run somewhere else, but would rather not carry about 2 laptops. carrying a palm pilot wouldnt be so bad, though.
Sun 22 Feb | Mike | This is a good package. My father uses MYOB on Windows, he started with it on the Mac though. The Mac stuff is now called Account Edge or First Edge for on without payroll and inventory. http://www.myob.com/us/products/
Creating docs/specs as first/final versions | Sun 22 Feb | Philip Dickerson
I recently acquired a copy of the book How to Write Fast (While Writing Well) by David Fryxell (1992). Its not a book I normally would have bought for myself, but someone at work was giving away some older books from his collection, and this looked interesting - I frequently write specs, proposals, articles, etc and sometimes I struggle with them. One chapter in particular has been very interesting to me - Writing a first draft right from the start. This is helping me to realize that it is a desirable skill to write a document that needs a relatively small amount of revising rather than, as seems to be often recommended, to repeatedly re-write the document with major revisions. I find that the times when I can write a document from start to finish (in the flow) which only needs a small amount of revising, it is a much better document than when I go through several major rewrites. This has always seemed to contradict most teaching that seems to recommend writing down lists of points, then an outline, then several drafts with lots of changes all before writing the final perfect copy. But now this book is showing me that my natural instinct of writing a first draft as the final version is good and should be encouraged. Of course, doing this requires more than just the desire to sit down and write, and the earlier chapters in the book help with this - getting organized, doing prior research on your selected topics, keeping your topics and notes mentally gathered, etc - somewhat like doing the rough drafts in your mind rather than on paper. If youre interested, the book listing at Amazon is: http://www.amazon.com/exec/obidos/ASIN/0898797381 (And no, Im not associated with the book or author in any way.)
Sun 22 Feb | Aussie Chick | >This has always seemed to contradict most teaching that seems to recommend writing down lists of points, then an outline, then several drafts with lots of changes all before writing the final 'perfect' copy. All through highschool I refused to do drafts, the best I would ever do was to scrawl down a few points to give me directions. I thought I was just plain lazy, it turns out I was doing things the smart way.... Actually I find this very interesting, I am about to write the documentation for my little program, it is a daunting task, the type of task that I want to keep putting off, If I thought I would be writing numerous drafts and revisions etc, it would be hard for me to get started, and I know for sure that I would cheat as much as possible so that I could get it over and done with.
my career | Sun 22 Feb | PSA
I am a bit confused with my career.my 3 12/ years of experience involved java/c++ with databases(oracle in major,SQL server).i also have an experience in working on oracle express which is a multidimensional database.I am comfortable working with jsp/servlets , RMI, etc..This is my last companys exposure/experience Now from last 18 months or so i am into Java GUI development and java application programming using Core java.I am not really fancied with GUI Development.I am a profound interest in Databases primarily db design , db tuning,etc but i also like programming so its not that i want to orient my career path on the lines of a dba or so.Now i am in a dilemna as to what should i do ? Should i leave my current job and look for something which has always fancied me and was of my interest.Also leaving my current job is kind of difficult since its paying me very well and i wonder if i can find something else which will pay me at pare or better in my city. Please flow in some suggestions for me thanks PSA
Sun 22 Feb | RP | With things the way they are, you want to add as many skills to your resume as you can. When you have your own company you can think about doing whatever fancies you.
Sun 22 Feb | Brad Wilson | The answer depends on what you want to do with your life. If you want to be a professional software engineer with your life, then you better get over this idea that you're going to specialize in one thing, especially something like databases. The fact is, you need a cross-section of skills to be useful. When you go up for a job, your database-only desires will be put up against general purpose candidates who can also do the required database work, and nobody's going to employ you. Get a PC at home, and play with databases to your heart's content. At work, get as many skills as you can so you can be useful in ALL situations, not just the ones primarily concerned with databases.
Sun 22 Feb | Dennis Forbes | I respectfully disagree with the prior postings. My personal perception has been that vast general skills (i.e. 'jack of all trades, master of none'), such was the rage during the .COM boom, are not enough in the current environment. Instead you need to demonstrate excellence at one core area, whether it's extraordinary database skills (as a sidenote--the overwhelming majority of databases designed by such generalists are horrible), guru skills with .NET interop, whatever. I'd rather build a team comprised of a collection of complimentary experts, with each having a realm of ownership, rather than a set of general purpose developers. There are countless applicants who'll list a litany of skills, each of which they can talk about in general terms. There are very, very few applicants who can demonstrate expert knowledge in one area.
Sun 22 Feb | Immature programmer | And exactly how does one demonstrate excellence in one core area? Do most employers care whether an applicant is 'excellent', or do they look at bullet points + years of experience? Dennis, I don't disagree with you. But you probably don't represent most employers.
Sun 22 Feb | veal | I understand where you're coming from Dennis. Having superficial experience with a technology is worth almost nothing, because other candidates can acquire that level of skill quickly. On the other hand, I've gotten lucrative gigs and broken new accounts by having just a little skill with technologies so obscure that the clients couldn't find *anyone* else who had used them. But that's very rare, and probably not worth pursuing as a general strategy. But becoming a guru on just one thing -- or a few things -- proves dangerous as that one thing falls out of use. Plus, a breadth of experience gives you a broader base of ideas to draw from in solving problems. Obviously the best route is to become a 'jack of all trades, master of most'. :-) Personally, I'll always hire the person with the broad experience over the guru of one thing, unless I need a 2-month contractor. The one point I'd like to make to the original poster is that it is generally a very bad idea to choose jobs based on salary early in your career. Your chief goal should be to gain good experiences during that period and do yourself no harm. If you steer your career properly during those early years to gain rich and varied professional experiences, any meager salary differences you momentarily denied yourself you will recoup twentyfold or more over the course of your career because of the opportunities those experiences will open up for you. And of course the most important thing is to follow your passion. If you see a job that will provide opportunities you crave, take it at all costs. You will never regret doing work you love when it's available, and you can always resume your old path should the exciting opportunity dry up.
Sun 22 Feb | Dennis Forbes | 'And exactly how does one demonstrate excellence in one core area? Do most employers care whether an applicant is 'excellent', or do they look at bullet points + years of experience?' This is where cover letters come into play -- clearly identifying your focus on a key, important part of the development process can really grab someone's attention. Most teams are full of lots of people with lots of supposed skills, but in the end the majority are piss poor at all of them. One of the reasons Microsoft is deprecating COM in favour of .NET for distributed computing is that despite millions of 'DNA' programmers, _extremely_ few (well under 1%) have any idea what they're doing in COM+/MTS (i.e. actually understanding and implementing security and transactions across COM objects). In this case perhaps representing yourself to a firm as a guru of COM objects would get you interest. 'Dennis, I don't disagree with you. But you probably don't represent most employers.' Oh I have no doubt that most employers look for bullet lists, but remember that most prospective employees are providing bullet lists -- saying 'there are 10,000 jobs for the general skills people' is incompletely job hunting information if there are 10,000,000 general skills people spamming resumes. I'm talking about those few employers who respect experts, despite the job advert that might include a laundry list of technologies -- From submissions that I've seen, there are dramatically fewer specialists.
Sun 22 Feb | Brad Wilson | If you want to be heavily focused on small areas, like becoming a database guru, then I would say the best thing to do would be to become a consultant/contractor. When people look for specialists, this is the route they're going to take, and you'll be able to bill for more money than you'd get as a general employee. It's pretty risky, though, and requires you to be a good sales person (selling yourself) and a good networker (making contacts so you can get contracts), in addition to the extreme time you'd spend become a guru-level person. Definitely not the track I'd recommend for the general person, but some could make a very good living at it.
Sun 22 Feb | no name | Dennis, there's a difference between being an expert and getting hired. The poster is asking about getting hired. Deep expertise is NOT the thing that's get you hired, unless you're going for a job with Microsoft.
Sun 22 Feb | x | My question: do you want to be marketable to the largest sheer number of jobs or the jobs where there are relatively few, but highly specialized, openings. Frankly, I chose the latter: there are maybe 500 openings in the world in my particular field of small embedded- systems database engines, but maybe 250 people with the relevant experience and skill-sets to apply. The field is small enough that most people in it know each other. I was briefly unemployed in 2001 after my last company disintegrated, and I gave thought to learning Java and becoming a 'generalist'. (I've spent most of my career doing C and db engines of various sizes.) After a quick glance at various resumes and realizing that Java work was clearly a commodity prone to outsourcing, I abandoned that thought and quickly found work at a startup, that is now starting to take off.
Sun 22 Feb | Brad Wilson | Sure, but now let's be specific. Nobody hires an expert database developer any more. Especially when we're talking about MSSQL, which is relatively good at optimizing itself, and easy for devs to install and admin... it just seems entirely unwise to bet the farm on that. Embedded development expert != person who doesn't want to do anything besides SQL development
Sun 22 Feb | Mike | 'Especially when we're talking about MSSQL' Which is why if you want to be a consultant pick some hairy difficult to understand relative to Microsoft pap product and learn it inside and out. To put it anothe way. Learn a skill most companies don't have in house. Open Road for example. This next statement is not ment to reflect on the OP or anyone else here, just a general comment about the way things are: It always amazes me the time noobs will spend on dotnet or some other IT commodity. Don't pick a commodity skill. That's why a brain surgeon commands higher prices than a general practicioner. If you have a particular niche technology you are interested in go for it. You can always be a commodity coder.
Sun 22 Feb | x | I was offering a personal anecdote, not trying to compare to the OP. But I agree: career management is tricky nowadays. Be too 'general' and you run the risk of having 6 months experience in each of 25 technologies, 20 of which are obsolete, and you're constantly competing with hordes of freshly-minted script-kiddies. Be too 'specific', and your skill-set may become completely useless with a small shift in technology. I'm definitely more at risk here. So, the real answer may be to figure out what you _like_ doing, and damn the market (at least to an extent). But save every penny and be ready for shifts and downturns.
Sun 22 Feb | no name | And, if you're one of ten experts in your field in the world, DON'T work for $50 per hour.
Sun 22 Feb | Dan Brown | People's lack of broad experience shining through? Some companies want generalists. Some companies want specialists. More companies want generalists, and as a result more employees market themselves as generalists. There's a time when you need somebody that can set up the website, database, and client. There's a time when you need somebody that has 10 years of experience tuning Oracle queries.
Sun 22 Feb | Laurel | Stay away from MS technologies and you will do fine.
Sun 22 Feb | one programmer's opinion | Essentially everybody is correct is some manner. The following is how I have seen things breakdown: * Some companies looking to hire a salaried employee want a generalist. * Some companies looking to hire a salaried employee want a specialist. * Most hiring managers looking to hire a contractor want a specialist. The above scenarios is one reason why many 'salaried employees who are generalists' have a hard time landing a contracting gig and one reason why many 'contractors who are specialists' have a hard time landing a full-time salaried position or another contracting gig using a different programming language.
Bizarre tax silliness | Sun 22 Feb | Philo
The year I left the military I was supposed to file a partial year return with my current state of residence at that time. I didnt know this until I got a tax bill for the entire years income from that state. So I got an old copy of Turbotax State, filled in the blanks from my federal return, and sent it off. A few weeks ago I got the return back noting it was incomplete since I didnt attach my W-2 forms. Okay, bear with me now - obviously they know how much I made, since they sent me the tax bill, so why do I have to attach the forms? In fact, the same is true of Federal returns (tho not with e-filed returns) - the one form you are required to attach is the one form that your employer is required to file with the government. Its also the form that increases your tax obligation - you dont have to attach proof for any of the reductions in your tax obligation. Ah, the joys of weve always done it that way. Philo
Sun 22 Feb | Jason | 'we've always done it that way' is probably right, but it's possible that having a copy of the w-2 gives them something to check their electronic copies against for fraud or mistakes there was a good show on Frontline last week about the elaborate tax dodges used by corporations, which the IRS is powerless to prosecute, even though they account for a much bigger loss than anything us wee individual taxpayers might pull off
Sun 22 Feb | Nick | When I was in the Army 18 years ago, I never got a W-2 for any of the years I served.  The Company Commander never mentioned anything about taxes, so being young and naive, I assumed that members of the armed forces didn't have to pay taxes.  I never once saw any of my fellow enlisted men filling out tax returns. Now that I think about it, it seems really strange.
Sun 22 Feb | no name | If you're working for the government, your pay comes from the government. If you pay taxes, your money goes to the government. Normally when you get paid, your employer gives some money to the government and some money to you. Government employees paying tax seems, well, somewhat pointless, really, although if you happen to have multiple income sources then it may be important for working out which tax bracket you're in.
Sun 22 Feb | mb | it has gotten better--as you mention, you don't need to send your w2 if you e-file. however, a few years ago you did--you'd e-file, then send off a 2-page return with the 'efile' form and w-2(s). i don't remember if you had to fill out yet another form for payments or if that was done all at once. more bizarre sillyness: many forms are now available as form-mode PDFs, so you can fill them out on your computer, print, and send off. but some forms must be filled out on special paper. the reason they claim is that they're computer read, but why a computer would have an easier time reading handwriting on a red piece of paper as opposed to a properly-printed form is beyond me. well not really--i think the affected forms are ones which are usually files electronically by businesses, and the few small people get the old technology shuffled off to them, a possibly rational reason.
Database Design: Ordered Collections | Sun 22 Feb | Not actually a database programmer
RDBMS are based on set theory and therefore do not implement the concept of ordered relationships and collections. In practice you have to do this on your own. One possibility is to add an additional integer field to the table that represents the items inside the collection. This field contains the ordering criteria. The ordering semantics is available to relational operations through the ORDERED BY option in SELECT statements. However, when the items inside the collection have to be rearranged, this strategy can lead to expensive reorganizations of many rows inside the table, affecting an unpredictable set of items, even if the position of only one item has to be adjusted. Among other things this can lead to locking problems. How do you handle this problem?
Sun 22 Feb | Patrik | ORDER BY always sorts result sets only. Why bother with the 'real' order in the table? You select whatever you need and sort the result set. There is no need to sort the individual data in the table. Or what am I missing here?
Sun 22 Feb | Not actually a database programmer | Patrik, the challenge is to store an (artificial) ordering criteria that cannot be derived from existing database fields.
Sun 22 Feb | M | How many items are in your collection? How often will they be rearranged? Will you act on the database of one item order change at a time, or prefer to make the entire change at once? If you have pretty huge lists with some major reorders, you could try to store the order in a seperate table. The table would contain the shared key for that record set and a long string field. You could then store the order in a string with the indiviudal record key seperated by a delimiter. When you query for that record set, you would also query for that order list. In your programming language, you would combine the two for ordering purposes. This is more work on your end, but to rewrite the list order, you are updating a single field in the DB. Obviously this is not relational and would have Codd juming up and down in agrevation. The number of list items would be limited to the length of your string field, but you can have very large text fields. Sometimes you have to use shortcuts to gain speed though.
Sun 22 Feb | Patrik | An ordering that cannot be derived from table fields? What would that accomplish other than poor SQL performance? I mean if you invent some virtual homebrew ordering magic that is not based on table fields, then that would be invisible to the SQL parser and you royally fool the SQL query plan optimizer. You would need to sort the result set of the complete table in your program anyways. This would lead to full table scans in the database. This is a bad idea. What is the root problem you want to solve by having this 'invisible' sort order? ... Why cant the sort order be visible in your database schema? And, in my experience, any half decent RDBMS do a much better job at sorting using ORDER BY than your average sort algorithm in your (or my) programs.
Sun 22 Feb | Tom H | 'challenge is to store an (artificial) ordering criteria that cannot be derived from existing database fields' How can you store the artificial ordering criteria if it can't be derived from the existing data? There must be some way to map the order into the records, or you could never find the records in which to store it. So look at the algorithm you are using to sequence or resequence the fields, and apply it to the result set (instead of storing an artificial ordering column). If I've still missed something here, you might need to supply a more concrete example.
Sun 22 Feb | Philo | I think he's talking about an order that's derived from data outside the database. For example, a student roll that lists kids in class rank order, but the grades aren't kept in this system. So every grading period the entire roll has to be re-ordered. And someone already gave the answer - just use a second table with two fields: StudentID and Order. Then you just have to re-write that table. As for performance, this example is exactly why you keep the data in a relational database - only an RDBMS would give you the ability to re-order the entire recordset while only locking the order data and not the full record data. You just have to learn to think relationally. ;-) Philo
Sun 22 Feb | Tom H | The second table is essentially the same as his original design. What's the difference if you store it in the same table or a child table? But your guess as to the source of the problem is probably correct; he needs to join data in one database with data from another source. So this is an external interface problem, not a database design problem (think web services, XML-RPC, etc).
Sun 22 Feb | Philo | If you store it in the same table, then you have to lock every row when you're updating the ordinal data. If you store it in a child table you only have to lock the child table. Since it's ordinal data, I'd think just about any change would generally be a full re-ordering (if #2 drops out, you have to touch rows 3->the end), so depending on how often you change the order, it could be a real issue. Philo
Sun 22 Feb | Tom H | Tempering my last post, the child table might be useful if changing the order does cause the locking/many row update he mentions. But I'd still prefer to see the original data (the grade) stored in the db, rather than a computed value (the rank).
Sun 22 Feb | Philo | Agreed. There are several potential problems that immediately come to mind: 1) Privacy. The system that's printing class rank may not be authorized to hold grade data. 2) Politics. The academic staff keeps grade data, the administrative staff keeps ranking data (or needs ranking data for some other purpose) 3) The grades are in a legacy system that doesn't do ranking. I've run into each of those problems in various systems I've worked on. Philo
Sun 22 Feb | FPR | Another motivation to store the ordering data in a table separate from the items being ordered is that it is probably a more logical model of what you are trying to do.  The master table represents a set of individual items or objects.  The ordering table represents ordered collections of those items/objects.  Two distinct notions.
Sun 22 Feb | Mediocre ASP Monkey | >>But I'd still prefer to see the original data (the grade) stored in the db, rather than a computed value (the rank). << You can run into a situation where you're trying to order not by data that's out of your hands for whatever reason (the grades in the above example), but completely arbitrary schema. I've been thinking about this just this morning - trying to determine how to order questions for insurance application forms being read in from the database. The questions will be ordered by the (changeable) whims of particular insurance agents and underwriters, but I certainly don't want to hard-code the questions onto each and every form! My 'solution' is an integer field to control the ordering, defaulting back to ordering by the date the question field was entered at need (the ordering field exists in the table associating the question with a given insurance product). It feels very kludgy, but I can sorta get away with it because of the relatively small size of the problem. The only way that sort of thing could really work, I suspect, would be through an appropriate interface which manages the ordering whenever a change is made (for instance, an interface that allowed the insurance agents to change the order of questions without bothering me). I can't think of an elegant way to handle the problem, though...
Yes Joel you May Have a Linker! | Sun 22 Feb | Bill Rayer
Ive just read Joels article from 28th Jan Please Sir May I Have a Linker (OK Im a slow reader). Im moved to comment as Im interested in language design issues and have long disliked the move to runtimes which IMO are not 100% reliable. Joel, in a sense the answer has always been in front of you. As you know if you use C, C++ or Delphi you can produce statically linked EXEs which dont suffer runtime issues. In http://www.lingolanguage.com Ive spent a lot of effort making sure runtime inconsistencies can never occur (OK Lingo uses some runtime DLLs but these are versioned by filename and checked at startup). In Lingo I would guarantee there can never be any versioning issues, irrespective of what version of Windows youre using, and irrespective of whether other versions of Lingo (earlier or later) have been installed on the same PC. Theres nothing special about Lingo in this regard, you can do the same with any language supporting static linking. I also read http://weblogs.asp.net/jasonz/archive/2004/01/31/65653.aspx (Jason Zanders reply). His main objection to a .NET linker is security but this is a red herring. Security issues do not reside in run time library code that gets linked in. Eg in C/C++ I can pass NULL as a dest pointer to strcpy() and crash the program (or possibly cause an exploit). Although the crash is in strcpy() this is not a C runtime bug - the C runtime is doing what it should and the fault is mine for calling it wrongly. So I think security holes are fixed by patching the app source, recompiling and redistibuting the new compiled app. The penalties of separate dynamically linked language runtimes are clear. There are VB issues with installing the correct versions of OCX controls. When I worked at IBM we had to write an installer that switched between two different versions of the Java runtime, since the app we wrote (AO Manager) had some Java code developed locally and some developed by IBM in India, and they used different versions. Now that PCs have 512MB main memory and 60GB+ hard disks I dont see static linking as an issue. On a minor pedantic note I think Fortran came out around 1956 and I guess the first linkers would date from then. Being British I claim the first stored program computer was invented at Manchester University in 1949 so I think 1950 is too early for a linker. Bill Rayer
Sun 22 Feb | Fred | >> His main objection to a .NET linker is security but this is a red herring. Security issues do not reside in run time library code that gets linked in Maybe I read that article too fast, but what I understood, is that they'd rather you call .Net API's so that when a bug is found by MS, it can be more easily patched the next time you upgrade the .Net framework. OTOH, apps that just copy a sub-set of the .Net framework in their EXE statically will be left with the bug,with no way to force the developers who wrote those to grab the latest version of whatever .Net code they took,recompile, and send an update to all their customers.
Sun 22 Feb | H. Lally Singh | Quick nitpick, absolutely unrelated to the original post. Sorry, can't help it. Even though (sadly) many programmers using a C++ compiler still use str*() for their string manipulation, and get burned for being irresponsible about buffer management, str*() aren't the C++ string manipulation routines. std::string and std::vector are great string systems, and don't suffer from the security ailments of str*(). C++ can give you as little or as much help in reliability as you want, although the default is ver little :-) Ok, sorry to waste everyone's time...
Sun 22 Feb | Brad Wilson | It comes down to this: There is probably at LEAST a 100:1 ratio of vertical business applications to horizontal customer applications (and I think I'm being generous here, personally). To design the system so that it best suits corporate apps instead of consumer apps is a no-brainer. Sure, it bugs him, because he's in the 1% (or less). What I don't get is that Joel has a big brain, and has mentioned on at least one occasion: 'consider the cost'. How can be objectively look at this, and yet still bitch about it? As has been pointed out so often, he has a ton of other options, including options from Microsoft. This topic (in general) really needs to die.
Sun 22 Feb | The real Entrepreneur | 'There is probably at LEAST a 100:1 ratio of vertical business applications to horizontal customer applications ' What do you base this on? (I think you may be right, but I'd like to know) That would explain the sinking feeling I, as a *commercial* (shrinkwrap) software developer feel, of being tugged around by MS's development language choices. There's a simple reason: Microsoft isn't focused on shrinkwrap sw development with .net. So they don't care about my needs or Joel's needs. One more reason NOT to use .net for my programs.
Sun 22 Feb | Brad Wilson | I have no hard stats, just time in the industry and a rough guess. I'm not sure there are hard stats.
Destructive experiments | Sun 22 Feb | Duq
Of course writing an online article about a word that only returns 1 result in a search engine destroys its own subject. Google now returns 9; the original one, the article on Joelonsoftware and 7 copies of the article...
Sun 22 Feb | Aussie Chick | kind of a cool concept though. Pick some obscure word/phrase, turn it into one word, something that will return zero hits on google. Embed this on your webpage, or in public posts (make it part of your handle). And then you can never get lost, anyone wanting you can just type your special word into google, and instead of being the 12,000th 'Joe Blogg' out of a possible 10,000 hits (okay really made those figures up, didn't even bothere putting 'Joe Blogg' into google to get an accurate figure...) suddenly you belong to everyone of the 300 hits. Not sure how useful this would really be, kind of like the whole Orkut thing in a way, I mean you friends could know your special words, and then they can join in the fun regardless of what website forum you have decided to join, makes the world alot smaller. Now as far as I could see the only market for this would be teenagers who find this sort of thing cool (I know I would have, or am I just a geek). Cannot imagine how many adults would like their online doings so transparent.
Sun 22 Feb | Experiment Failed | Ummm, I typed 'aussie chick' into Google, here's the top link: Nekkid Radio Xmas Party 2003 / Aussie Chick - 27 December 2003 partygirls@nekkidradio.com. TITLE: Aussie Chick. COPYRIGHT: (c)2003, Nekkid Radio ...
Sun 22 Feb | Aussie Chick | try typing ToowoombaChick See, if I used this as part of my signature, eventually google would return lots of places I have visited!
Sun 22 Feb | Andrew Cherry | Schrodinger's Google whack?
Sun 22 Feb | mb | and now you see why i use such a 'unique' 'name'. i don't want to be tracked.
Scroll speed in firebird/firefox | Sun 22 Feb | Rob
The thread on firebird prompted me to try out firefox, and it is pretty cool.  The one thing that really bugs me is that the scroll speed is much slower than that of IE.  This happens when using the scroll wheel or the up and down arrow keys.  Does anyone know how to change this?  I have searched the online help extensively -- that is one thing that sucks about firefox, lack of docs.  Im sure it is very powerful but it is undocumented.
Sun 22 Feb | Satisfied \n User <br> :-) | It seems fine to me.  If "smooth scrolling" is checked in the advanced options dialog, then uncheck and see if that makes a difference.  When checked I found scrolling in general to be slower
Sun 22 Feb | Brad Wilson | Definitely turn off smooth scrolling. It's an "engineer" feature, not an "end user" feature. Dumb ass engineers. :-p
Sun 22 Feb | Jan Derk | Firefox docs: http://texturizer.net/firefox/ Firefox uses the Windows default scolling size for your mouse wheel. I think the default is to scroll 1 line per mouse wheel click. To change this go into the Windows control panel and select 'Mouse'. I have it set to 3 lines per scroll.
Sun 22 Feb | Roose | Well, if it uses the Windows default, then IE doesn't. Because IE scrolls 2-3 times as fast as Firefox and I like this. I'm sure there is a setting in Firefox, you just have to use that registry-like thing which I remember from a few releases ago. And smooth-scrolling was off by default.
Sun 22 Feb | www.marktaw.com | I did a very informal test. Setting both browsers to the same height & width and scrolling the JoS forum homepage (which is fairly long). It took around 4 scrolls in IE and 5-6 in Firebird. Clicking the down arrow in the scrollbar in Firebird requires 1 clicks to get past the FogCreek black bar on top. Clicking it in IE requires 1 click. So Netscape/Firebird probably does do 3 lines per click movement of the scroll wheel, but each line is shorter.
Sun 22 Feb | Roose | OK -- now I know why you were kind of dismissive. I think I uncovered a bug. I was reading the documentation you pointed to, and it said that if you press alt and scroll it goes line by line. I tried that and there was no difference, but when I released alt -- my scrolling was much faster! It seems like that was the default, and all it took was one use to make it behave correctly. However, it still doesn't solve the fact that pressing the down arrow only scrolls one line instead of 3 like in IE. It seems trivial but it makes browsing pages so much easier.
Sun 22 Feb | as | A related query - I just downloaded and installed version 0.8 of Firefox, having been running version 0.6 for some time. One thing that drives me crazy is the new "feature" whereby the screen is continually updated when the window is resized, causing the contents to leap around the page in an alarming fashion. Does anyone know how to stop it doing this?
Sun 22 Feb | fool for python | There was a bug with scroll speed on pages with background images. I belive this was fixed before the Firefox release.
Stupid errors in In Search of Stupidity | Sat 21 Feb | Albert D. Kallal
Funny how my previous post about how dumb it is to state that dBase got eaten alive by FoxPro because dBase needed a linker and did not get one. As mentioned, this is simply not so. It is very clear that the source this incredibly stupid statement is from the book In search of Stupidly. As I pointed out…it was not the fact of a linker at all that hurt dBase, but the lack of runtime option! I decided that since such a stupid and wrong statement from the book kind of entails a closer look, then what else is wrong in that book?. I mean, if one such large dumb statement is from that book…surly more must follow? Hum…off to their web site. http://www.insearchofstupidity.com/ Golly…just full of misrepresentations and silly statements. I only reading from the “free samples” / excerpts. . Lets take a few quotes here: The Nuttiness of Subtractive Marketing Subtractive marketing works by taking a successful product and subtracting key capabilities and features until the product is clearly different from, and inferior to, the original. The subtractive marketer then attempts to pawn off her second-class creation by advertising it as a “value” or a “money saver.” It never seems to work. People will, if they have the choice, always refuse to buy something that brands them as not being able to afford anything better. Even people who are thrifty like to go in style; they just don’t like paying for it. It then goes on to talk about the failure of the Falcon, but the incredible success of the Mustang (which was based on the same platform). However, the real issue I have is the statement that people who are thrifty like to go in style, and that if take something away from the consumer and become a “value” vendor. Supposedly this is a bad thing? Oh really? What about the really crappy square looking car with no frills, virtually no styling and even had a 4 cylinder motor when most cars had larger engines? We are of course talking about the k-car that saved Chrysler. This was without question a low budget no fuss car that obviously should not have sold at all according the authors of in search of stupidity (SA = Stupidity Authors).. What is it..9 out 10 consumers will pump their own gas to save a some money, and the heck with the frills of a having a nice pump jockey. Again, the impression the SA folks give is that a image of thrifty ness is a bad marketing idea. And, lets take the shopping experience. Gee crappy lighting, crappy cement floors, crappy and non existent decor. Crappy shelves. Ugly floor pallets all over the place. Huge line ups! And, really crappy customer service? However, you do save a bundle of money with no frills. Yes, I am talking about Costco which is perhaps one the greatest revolutions for consumer shopping. It is beating the crap out of traditional stores, and went from nothing to taking a huge chunk of the market. They now sell billions per year!. Again, SA folks state that no frills, and the “bargain” mentality will not fly. They could not be farther from the truth! The ford falcon was simply ugly…it had nothing to do with cheap! And, in the excerpt form chapter 8 they talk about how expensive Porsches and Mercedes Benz got. However since the book makes such a strong statement on not making a budget , or striped down version of the product, they fail to mention the greatest success in the market place have actually been based on this concept of selling a cheaper version of flagship product. This is clearly what IBM was trying to achieve with the home pc that failed. It is a time horned product idea that when done right is a great idea. For, example the book fails to mention the introduction of Mercedes C class. The c Mercedes was a low cost budget mercies Benz without all the frills of the high end models (smaller motors, less options installed…basically stripped down models and smaller. They were for the cheaper folk. In fact, the models even had 4 cylinder motors!). This was a new low territory in terms of cost (and market) for Mercedes cars. Of course this low cost Mercedes is likely one of the great marking triumphs that Mercedes has EVER achieved. Sales of Mercedes Benz in some markets increased by TRIPLE DIGITS with the introduction of these low cost Benz. This also generated lots of traffic at the dealers. Without a doubt the c class saved many Benz dealers, and certainly increased the potential market of their products by leaps and bounds. Even now Jaguar is entering this market as I write this. Porsche also introduced the low cost boxer and for a few years could not even keep them on the lots. Again, those Porsche boxers are really poo poo by the real die hard Porches 911 fans. Never the less, the success of the low power, striped down Porsches has actually saved the company. When I now drive around town I CAN NOT believe how many of those Boxers are on the road. In fact, so successful is now new boxers are selling for more then 10 to 20 grand MORE then when they hit the showroom floors a few years ago. In fact, certainly one problem is now buyers are forgoing the expensive 911’s, and going for the cheaper low powered and lower cost boxers. After all, you get the Porsche name and prestigious.. Why buy a 911? Again, the Stupidly book complete ignores this concept of making a striped down product of a flagship product, or making a cheaper model of a great brand name. From the k-car to the c class Mercedes, and the Porsche boxers are fabulous examples of making a cheaper product of established product. The book got this concept complete backwards! The sample issues apply to retailing also! The ford falcon example is simply an example of failure…not the fact of company making a budget edition of a flagship product or name. And, in the example of the IBM “peanut” home computer, the MAIN REASON of failure was the lack of a proper keyboard. If the peanut was all stripped down..but had a decent keyboard..then it would have sold. In fact, the one of the main reasons of the INITIAL success of the IBM pc was a incredibly nice display (those TTL’s) , and a incredible nice DETACHABLE keyboard. We all remember that fantastic click clack those keyboards made. They were first rate pc’s and took the market by storm. IBM could have easily striped out a lot of stuff for the peanut home PC version BUT NOT the keyboard. I remembered that peanut keyboard and instantly told the sales man it would NOT sell. He replied, well, it is a IBM, and that will make it sell. The keyboard may have been durable enough to last a life time. However, it was crap. They did not even have to use the original IBM keyboard, but they at LEAST needed a decent keyboard. It is not a question of quality here. They could have used a MUCH cheaper keyboard for the home version. However, the keyboard for the home version was simply VERY crappy to type on. This is was not a issue of stripping down a flagship model, it was simply a issue of a incredible crappy keyboard. It was a cheap chiclets style keyboard…worse then what MOST of even the Apples, and pets and radio shack computers had at that time. It was not really a real keyboard..and that doomed the peanut. The bad keyboard was really the downfall of that computer. So, again, the moral is not to make a cheaper version…but don’t make crappy or BAD product! Here is another dowser of such incredible straw grasping from that book that I can’t believe! That word was “pointer.” As in a hierarchical pointer. As in a hierarchical database pointer. As in the development group had made the decision to discard the WordStar 2000 database and replace it with a new one based on hierarchical database technology. It was an incredibly foolish thing to do and it sealed MicroPro’s fate.... That above statement is so incredibly dumb as to warrant a book recall! You can find the above quote at: http://www.insearchofstupidity.com/Book_Excerpts/Chapter_Four/chapter_four.html You see, way back then, each product had its own printer drivers as they were not part of the OS (gee at least the SA folks got that fact straight!). So, that printer database has all kinds codes for each printer. Things like the Bold printer on code, Bolder printer off code. These are just a bunch of codes. It is this database that the above brain dead quote refers to. The author is trying to make the case that since they used a new hierchial pointer database for printer codes, that was the reason for the fall and demise of the MirocPro word processor. I not saying the book is making this the ONLY reason, but the book tries to make a case that the old database could not be used. Well, only if you are stupid project manager and don’t have a clue about software. Obviously, the real problem at MicroPro was managers that don’t have a clue about software. The issue of not being able to use the old database is stupidity at its worst. In fact, a team of developers could write some code to copy those printer codes from the old database system to the new format in LESS THAN A DAY. In fact, I could move the printer codes in less then a day if you gave me the old database of printer codes. So, it is not a big deal that you can not “read” the old printer database…but you sure as the heck can “USE” the old data as the basis for the new database. As I write this, I am looking at my old FoxPro 2.6 (dos). (grabbed one of my old archives with Fox on it to check out the linker subject I just posted on). The FoxPro has a printer database of printer codes. In fact, it has 104 printers. No doubt, building up this database of printer codes is a valuable asset for any piece of software. So, in the case of FoxPro, we have drivers for likely the most popular 104 printers in the market place. The only important fact here is that the printer driver code only needs those codes. The layer or database engine code you use will not effect the process for the printer driver in any way. The MicroPro failure here is NOT the fact of using a pointer or weird database. This is just nonsense on the books part. The failure here is that no one was smart enough to simply write some code that would read the old data base of printer codes into the new database format (this is a one time thing). The SA author makes a good case that two software development teams where NOT cooperating, and that fact seems just fine. However, the author then goes on to tell this stupid story about how the new database could not use the old printer codes format due to some werid pointer database stuff! Sure, but a small piece of code to read that old data into the new format is a trivial programming exercise. All the printer driver code needs is the bold on code or the bold off code for a particular printer . The software layer that grabs those codes does not really matter It is a trivial matter (I REPEAT) TRIVIAL MATTER to copy those old codes from the old database to the new database…regardless of whatever technology was used. This book has got so much stuff wrong. Time after time, a idea or concept is proposed and then examples given to make the case . The problem here is that the points like the linker example, or the cheaper version example just don’t fly one bit here. Has anyone else read this book? Anyone have some opinions to counter my initial HORRABILE impression? I really do hate to shoot down a book that I have not read. I would certainly welcome some counter arguments to what I have observed so far. Albert D. Kallal Edmonton, Alberta Canada kallal@msn.com http://www.attcanada.net/~kallal.msn
Sat 21 Feb | Joel Spolsky | The book is meant to be funny... And though it's not correct in every detail (the author, Rick Chapman, is a marketer and not a programmer) it is quite accurate about the big picture of what happened in the early days of the PC software industry. And it's FUNNY! Really FUNNY! The author is the kind of person who has forgotten more about software marketing than you or I will ever learn.
Sat 21 Feb | Cowboy from FMJ | 'is a marketer and not a programmer' In other words it's like when Scoble talks about technology of past. Not always correct, but a good story.
Sun 22 Feb | Albert D. Kallal | Gee, perhaps I will just have to purchase a copy of the book. I really don’t mind some issues of technology not being 100% correct. To tear apart every little spec out of place would also not make, or break this book for me. It is not a book about the software development process anyway. I also hope I did not come across too harsh. However, there does seem to be a bit of a writing style issue here that does clash with how I see things. It is not such a problem that some technical issues in the book are not up a developers knowledge level. Really, I have little problem with that!. My real complaint is that some ideas used to support his views and ideas as to why some products were failures don’t fly with how I see these things. Perhaps , we are dealing with that typical clash that is so often observed between technical type people.. and marketing type people… My motivation for this post was some input…and perhaps a bit a whack on the brain as to how to read/view the book. It would seem that a light hearted approach is needed here. Albert D. Kallal Edmonton, Alberta Canada kallal@msn.com http://www.attcanada.net/~kallal.msn
Sun 22 Feb | VPC | Then maybe you should read Winners, Losers & Microsoft. It's not funny and it takes more time and concentration from reader, but authors tried to look more scientific and accurate writing about similar products and events Stupidity Author did.
Sun 22 Feb | rick chapman | OK, Albert. While I've decided to not participate on a regular basis on this forum because some of the Yahoos here practice identity theft, I think I can answer some of these points at this juncture secure in the knowledge that people will know it's me responding to you, not some socially inadequate geek. Let's take these one by one. +++As I pointed out…it was not the fact of a linker at all that hurt dBase, but the lack of runtime option!+++ Sigh. Factually wrong. Ashton-Tate certainly DID have a runtime option. The problem was, A-T wanted to charge for it. Developers didn't want to pay A-T for it. Hence the development of compiler technology, which bypassed the A-T runtime offering and made Ed Esber very, very angry. +++It then goes on to talk about the failure of the Falcon, but the incredible success of the Mustang (which was based on the same platform).+++ This is not 'talk.' This is one of marketing's most famous examples of a 'build towards' marketing campaign ever executed in any business, which is why I make reference to it. +++However, the real issue I have is the statement that people who are thrifty like to go in style, and that if take something away from the consumer and become a “value” vendor. Supposedly this is a bad thing?+++ Yes, this is a bad thing. People don't like being told they can't afford any better. People like to think they're getting more for their money, not just a fair exchange. Marketing 101. The Ford Falcon was marketed from the day of its conception in the US as a car for the average Joe who couldn't afford any better. And guess what. No one thinks they're an 'average Joe who can't afford any better. ' Everyone thinks they're an average Joe who DESERVES better and is smart enough to buy it. Hence the success of Mustang. +++What about the really crappy square looking car with no frills, virtually no styling and even had a 4 cylinder motor when most cars had larger engines? We are of course talking about the k-car that saved Chrysler. +++ Sigh. Complete, utter, ignorance of the facts and history. Albert, there never was a 'K-car.' There was the K-chassis design, which Chrysler sold via a top down branding campaign. (To understand what this is, READ ISOS.) Many differenct Chrysler cars were built on the K-chassis, including Chrysler's more profitable luxury offerings, as well as mid-line cars such as the Aries and Reliant. 'K' was sold as a combination of technology, economy, and power. And what helped make Chrysler profitable was doing things like chopping off the top of Aries and Reliants and turning them into convertibles, throwing turbo-charged engines into Omnis and creating the GLH (goes like hell) and inventing the 'pocket rocket' concept, all example of 'build towards.' Let's not forget the mini-van, of course. Built, I believe, on the K-chassis. +++What is it..9 out 10 consumers will pump their own gas to save a some money, and the heck with the frills of a having a nice pump jockey. +++ Sigh. More ignorance of history. Albert, up till the oil shocks of the 70s, most people didn't pump their gas because it was included as part of the standard service. After the oil shocks, standard service was withdrawn from most gas stations, replaced by self serve. The public did not clamor for this; it was driven by a shift in the economics of oil. +++The ford falcon was simply ugly…it had nothing to do with cheap!+++ But the car, oddly enough, sold well in Australia! And why? Because it was marketed as a fun set of wheels and sold with many enticing options! Now, maybe Australians are just inherently attracted to ugly things? Or perhaps the marketing approaches to the respective audiences differed? Hmmmm? +++And, in the excerpt form chapter 8 they talk about how expensive Porsches and Mercedes Benz got. +++ Yup. I do. I focus on the MB 190, which came into the market at about $15K and ended up selling for about $45K. And we're talking 1980s dollars. About the same pricing curve occurred with the Porsche 944, also mentioned. +++For, example the book fails to mention the introduction of Mercedes C class. +++ Sheesh. The introduction of the C class, which occurred years later, proves my point. The MB 190 was a four-cylinder small car selling for the SAME price as the Lexus and Infiniti brands introduced by the Japanese in the 80s. These high-end cars, targeting the E-class MBs, sold for about 40K. They were six cylinder models that were larger, had more features, and were in line with market expectations about what you should pay for a car in this class. MB expected it could get away with its pricing schemes based on the strength of the MB brand. Well, they couldn't. They lost large amounts of market share to the Japanese and were forced to come up with C class concept years later in order to regain lost ground. It would really, really help if you read the book. +++Porsche also introduced the low cost boxer and for a few years could not even keep them on the lots. Again, those Porsche boxers are really poo poo by the real die hard Porches 911 fans. +++ Since the events I discuss in the book occurred in the late 80s, the event YOU discuss occurred in the late 90s, you haven't read the book, and are ignorant of many basic facts this is completely off the point. Again, Porsche's introduction of these models proves my point. +++It is not a question of quality here. They could have used a MUCH cheaper keyboard for the home version. However, the keyboard for the home version was simply VERY crappy to type on. This is was not a issue of stripping down a flagship model, +++ Again, since you have not read the book, you have no real idea of what you are talking about. I have talked to people at IBM who were involved in the design of the PC Junior, I sold them, and I know that the machine was deliberately crippled to ensure it would not compete with the PC. Expansion capabilities, storage, co-processing, etc were all deliberately limited to achieve this goal. Not really a disputable point if you ever actually looked at or used a PC Junior. +++That above statement is so incredibly dumb as to warrant a book recall!... It is this database that the above brain dead quote refers to. The author is trying to make the case that since they used a new hierchial pointer database for printer codes, that was the reason for the fall and demise of the MirocPro word processor.+++ Unbelievable. Albert, to someone who has read ISOS, you have no idea of how silly you sound. No, Albert, that's not the point. The point was that the effort to convert the database structure from its flat file format to a hierarchical one was a bad business decision based on several factors. Which I will not explain to you. Read the book. +++ the book tries to make a case that the old database could not be used. +++ Uh, no it does not. +++In fact, a team of developers could write some code to copy those printer codes from the old database system to the new format in LESS THAN A DAY. In fact, I could move the printer codes in less then a day if you gave me the old database of printer codes. So, it is not a big deal that you can not “read” the old printer database…but you sure as the heck can “USE” the old data as the basis for the new database.+++ The fact that you are so inexperienced in this area is made grimly manifest by a statement I'd expect to hear from some kid learning BASIC in high school. Maintaining, testing, and verifying the operation of hundreds of devices such as printers is not the work of a 'day.' Especially in the pre-Wndows era. ESPECIALLY for a company that lived and died on printer support. I won't try to explain to you what IS involved. Such things as a rewrite of the printer install program, the lack of any desktop tools to achieve this port, the need to rigorously text and then retest all printer operations to insure data was not mangled during the port, etc, etc, etc. Suffice it to say that you are totally out of your league here. You really should read the book. Merrill R. (Rick) Chapman
Sun 22 Feb | Cowboy from FMJ | Marketer meets techie.  It's like watching a train wreck.
Sun 22 Feb | Stephen Jones | Dear Rick, To comment about the price of cars without considering currency fluctations is pretty stupid. Also you are limiting yourself to the USA market. The cheapest Mercedes, whether the S200 or the !90 has always sold a lot outside the USA. It's two selling points are that it holds its value, and parts are cheap compared to Japanese cars - the two are linked. The Mercedes reputation outside of the States is for reliability. BMW's tend to collapse after a few years (or less in the case of the smaller ones) and their spare parts are horrifically expensive, and old Jaguars or Daimlers are so disaster prone that you would pay a premium to swap one for a Lada of equivalent age; in the UK they're mainly used by unemployed rap singers who park them outside the pub and aren't too bothered if they have to walk back. American cars are considered a joke in this respect (with the exception of the Caprice Classic, GMC Suburban and Jeep Cherokee) In Europe Mercedes are used as taxis and a taxi driver is only prepared to pay nearly twice the price of an equivalent car if he thinks he'll recoup the investment. You seem to have completely misunderstood what Allbert was saying about the printer database. He wasn't talking about rewriting the database. He was talking about converting it. As he has been working with the programs you mention since the late 80's you are on dangerous ground to accuse him of not knowing what he is talking about. Sure. testing with each printer would be a pain, but they would already have the printers from the first time they tested. It's pretty stupid to say that the public didn't clamour for self-service at petrol stations. They didn't clamour for self-service in supermarkets either, but what happens of course is that when someone introduces a cost saving measure, and reduces prices accordingly, everybody flocks to buy there and other companies go broke or follow suit. Of course companies can also upmarket themselves; it depends on what the consumer wants, but the consumer doesn't initiate the trend. Now of course, what you mustn't do is rub it in the face of the consumer that he has a crippled version, though that has been known to succeed (the consumer version of Photoshop is an example). You've got to make people think of the brand name, not the fact that they are buying the cheapest of the brand. And of course for selling crippleware successfully look at Microsoft! Mind you, having a monopoly does allow you to be eclectic in your marketing decisions :)
Sun 22 Feb | Stephen Jones | ----' Sigh. Factually wrong. Ashton-Tate certainly DID have a runtime option. The problem was, A-T wanted to charge for it. Developers didn't want to pay A-T for it. '---- If you had bothered to read the earlier post Albert was referring to you would have read, --'So, developers really were NOT asking for linker…but a royalty free otpion..and that could be runtime, or some linker.'----- Albert's point was that FoxPro then, and Access now, offer a royalty free run time, and if a developer got that he couldn't give a monkey's toss about a linker. ---' I sold them, and I know that the machine was deliberately crippled to ensure it would not compete with the PC. Expansion capabilities, storage, co-processing, etc were all deliberately limited to achieve this goal. Not really a disputable point if you ever actually looked at or used a PC Junior.'---- You're failing to get Albert's point. He's not denying that the machine was crippled. What he is saying is that this was not the reason for it not selling, but the fact that it had a crappy keyboard, which was the first thing the user would feel. He specifically mentions discussing this with salesmen, so you can hardly accuse him of never having seen one. You may disagree with his point, and no doubt having tried to sell it may know of other factors. but his point is that if the 'crippling' had been done intelligently then the concept would have worked. You're saying that poor implementation invalidates the whole concept. And surely the PC itself is the perfect example of subtractive marketing working when the economics are right.
Sun 22 Feb | rick chapman | +++To comment about the price of cars without considering currency fluctations is pretty stupid.+++ And to have not been there and studied the subject and then presume to know what you are talking about is even dumber. Currency fluctuations did not account for the run up in the MB 190's price. During the 1986/87period Audi, which sold the 5000/100 at a comparable price to the MB 190 in Germany, ran an ad called 'Mysteries of the Sea' in which they made fun of the MB 190 price. The company pointed out that the two cars sold for the same in Germany and then pointed out the discrepancies in the prices between the two cars in the US. +++The Mercedes reputation outside of the States is for reliability. BMW's tend to collapse after a few years (or less in the case of the smaller ones) and their spare parts are horrifically expensive, and old Jaguars or Daimlers are so disaster prone that you would pay a premium to swap one for a Lada of equivalent age;+++ Yes, yes, no kidding. And completely off the point, because YOU have not read the book either and thus have no idea of what was said and the point that was made. +++You seem to have completely misunderstood what Allbert was saying about the printer database. He wasn't talking about rewriting the database. He was talking about converting it.+++ You seem to have not read the book and thus, like him, have no idea of what you are talking about. +++As he has been working with the programs you mention since the late 80's you are on dangerous ground to accuse him of not knowing what he is talking about.+++ No, actually, I'm on absolutely solid ground. As I say in the book, I started off in the industry programming in Vulcan/dBase II. The last significant piece of code I ever wrote was in 1991, a vertical market app designed to track blood gas sticks for BMHC in New Yawk. 20K lines of Paradox code. Not a huge project, but it had to be solid. +++Sure. testing with each printer would be a pain, but they would already have the printers from the first time they tested.+++ Like Albert, you are absolutely clueless about the impact and requirements of ripping out a critical subsystem from a piece of 80s shrink wrapped code. There's not much point in arguing the point with you; you simply don't know what you're talking about, haven't read the book, and aren't really capable, at this point, of arguing the issues coherently. +++It's pretty stupid to say that the public didn't clamour for self-service at petrol stations.+++ It's the facts, son. People didn't rush to save money pumping their own gas; they were forced out of their cars. +++Now of course, what you mustn't do is rub it in the face of the consumer that he has a crippled version+++ No kidding. But that is precisely what IBM did. rick
Sun 22 Feb |   | rick, aren't you a successful marketeer and author? do you not have anything better to do than "argue" with anonymous IT drones on a sunday?  why not take the afternoon off to wax the mercedes, or something? Do you really want your kids to do a google search and find dad arguing with a canadian and a saudi about fox pro?
Sun 22 Feb | rick chapman | +++If you had bothered to read the earlier post Albert was referring to you would have read,+++ If Albert had read the book, I'd bother. But based on the silly statements he's made so far, there is no point. +++--'So, developers really were NOT asking for linker…but a royalty free otpion..and that could be runtime, or some linker.'----- Albert's point was that FoxPro then, and Access now, offer a royalty free run time, and if a developer got that he couldn't give a monkey's toss about a linker.+++ Well, no kidding. And off the point. Ed Esber didn't like losing that A-T runtime revenue, which sparked the behavior and actions that led to the demise of A-T. It would REALLY help if some of you actually read the book instead of throwing out pointless and off the point observations on a subject of which you are demonstrably ignorant. +++---' I sold them, and I know that the machine was deliberately crippled to ensure it would not compete with the PC. Expansion capabilities, storage, co-processing, etc were all deliberately limited to achieve this goal. Not really a disputable point if you ever actually looked at or used a PC Junior.'----+++ You're failing to get Albert's point. He's not denying that the machine was crippled. What he is saying is that this was not the reason for it not selling, but the fact that it had a crappy keyboard, which was the first thing the user would feel. +++ Amazing. So, you're claiming that because the unit was crippled with a keyboard it was not crippled because the keyboard crippled it. Amazing. Why not read the book and you'll actually be able to comment intelligently on its observations? And you weren't there and I was. The first thing the aftermarket did after the introduction of Junior was rush plenty of keyboards to market. But AFTER you'd bought the keyboard, figured out how to add a second floppy, bought the upgrade to see an 80 character screen, etc, etc, etc, why bother? People just bought PCs. +++his point is that if the 'crippling' had been done intelligently then the concept would have worked. +++ His point, as the book points out, never seems to work. This concept has been tried again and again and again. And has failed again and again and again. As Joel recently found out for himself. As the book documents (but you haven't read it, so you don't know this). +++You're saying that poor implementation invalidates the whole concept. And surely the PC itself is the perfect example of subtractive marketing working when the economics are right. +++ No, it wasn't. The PC was a nice system for its day and attractively priced. Of course, you may be one of those types who nattered on endlessly about the 8088 not being a 'true' 16 bit chip but, of course, one paid any attention to all of that. And, of course, you haven't read the book so you're basically talking through your hat. rick
Sun 22 Feb | Dennis Atkins | Albert's not anonymous at all - he's got a site, source crode, photographs, an address and telephone number. Call him up if you want some good transaction software put together for tour buses. > More ignorance of history. Albert, up till the oil shocks of the 70s, most people didn't pump their gas because it was included as part of the standard service. After the oil shocks, standard service was withdrawn from most gas stations, replaced by self serve. The public did not clamor for this; it was driven by a shift in the economics of oil. This is totally false. As everyone over 30 in the entire North America knows and remembers, We had full serve and self serve at nearly every gas station in the US for over 30 years. I guess Rick's never been to the US?
Sun 22 Feb | long time lurker | Is Chapman great at marketing or what?? He comes to a website frequented by the target audience for his book and manages to post a response that has the words "read the book" 10 times.
Sun 22 Feb | rick chapman | +++This is totally false. +++ This is totally true and only a kid would argue the point. Up till the oil shocks, someone pumped your gas. After the shocks, you pumped your gas. rick
Sun 22 Feb | rick chapman | +++Is Chapman great at marketing or what?? +++ I sure am! +++He comes to a website frequented by the target audience for his book and manages to post a response that has the words 'read the book' 10 times. +++ Yup. Great marketing and a generous offer on my part to some to stop making fools of themselves misstating basic facts, learn from the past, and hopefully not repeat history. ALL of which can happen if you read the book! Excerpts at: www.insearchofstupidity.com rick
Sun 22 Feb | rick chapman | rick, aren't you a successful marketeer and author? Sometimes! +++do you not have anything better to do than 'argue' with anonymous IT drones on a sunday? +++ Writing a book and defending your literary reputation is a contact sport. JOS is an important site that many people viist. When someone attacks your book via a series of wild misstatements it behooves you to respond. Of course, you can adopt the above it all attitude Novell displayed when MS came after them after the release of NT. To see how well THAT approach worked out, I suggest you read chapter nine of ISOS to find out. Also, the controversy helps build interest and sales! +++find dad arguing with a canadian and a saudi about fox pro? +++ I don't think it would really bother them and I'm indifferent to the nationality of the people with whom I discourse. rick why not take the afternoon off to wax the mercedes, or something? Do you really want your kids to do a google search and find dad arguing with a canadian and a saudi about fox pro?
Sun 22 Feb | Stephen Jones | Dear Rick, Congratulations on giving us another example of 'In Search of Stupidity'. An author publishes excerpts from his book on his web site apparently deliberately chosen to make the reader think he doesn't know what he is talking about. When this is pointed out he proceeds to tell the prospective customer that he is an idiot and ought to read the book immediately. Why don't you try it out with software. Give a trial version of your program that destroys all the readers data. When the prospective customer complains tell him he's an idiot and it's all his fault because HE HASN'T BOUGHT THE PROGRAM. Rick, why should we buy your book when your excerpts appear to be controversial at best, and you come across as a loud-mouthed obnoxious jerk?
Sun 22 Feb | rick chapman | +++An author publishes excerpts from his book on his web site apparently deliberately chosen to make the reader think he doesn't know what he is talking about.+++ What a stupid comment. Can you walk and chew gum at the same time? Look, if you can't argue the facts or learn them, why not go back to your cubicle somewhere, keep telliing yourself how much smarter you are than everyone else, and don't try to ever manage or start your own company? ISOS is fun of course, but, as a guy on Amazon noted, it's also a good Rorshach test. People who are serious about building a business will read it and avoid repeating history. Those of you who like to repeat history and do the same stupid things already done by previous generations of idiots will just have to learn the hard way. As I said, I'm planning a sequel. rick
Sun 22 Feb | Dennis Atkins | Well I certainly hope this is not the real chapman and is actually an imposter. Joel (who wrote the intro to the book) says Rick is a fun guy. but this 'imposter' just comes across as a creep. If it is the real Chapman, i know I would never want to read his book and if this name-calling diatribe is an example of his marketing skills, only a fool would hire him to market their products! I remember that toy PC membrane keyboard. It really did look and feel cheap and so there was no point to even trying the computer out, regardless of what other features it had. if I want a lousy keyboard I'll get a speak and spell. Even a $5 calculator has a better keyboard. Regarding Chapman's continued assertions that full serve was not an option after the gas crises, I think he must have been smokin too much crack during those years! Does ANYONE on this board think that you couldn't get full serve at most all gas stations (for 10 cents more a gallon typically unless it wa sTuestady and you were a lady, or any day and you had a handicapped placard in which case they charged you regular) up until around 1999 or so?
Sun 22 Feb | rick chapman | Awww. Have I been too hard on the Kings of Code here? People who like to dish it out regularly? But can't seem to take it? Hurt your feelings? Pointed out the facts and made you feel not so smart? Well, well, you'll get over it. +++Regarding Chapman's continued assertions that full serve was not an option after the gas crises, I think he must have been smokin too much crack +++ Sigh. Amazing stuff. Uh, no, that's not what was said. As I said, a kid. rick
Sun 22 Feb | no name | Mr Rick Chapman seems to be suffering under the delusion that by acting like a socially inadequate asshole, he's going to bully people into buying his book.  Well tough luck Ricky, I'm not buying and you made yourself look like such a moron here that I highly doubt your book has any value at all. And if it this isn't the real Rick Chapman, I congratulate you for making the guy look like a supreme idiot.
Sun 22 Feb | I'm Rick Chapman, and so's my wife! | 'I think I can answer some of these points at this juncture secure in the knowledge that people will know it's me responding to you, not some socially inadequate geek.' 'And to have not been there and studied the subject and then presume to know what you are talking about is even dumber.' 'And completely off the point, because YOU have not read the book either and thus have no idea of what was said and the point that was made.' 'There's not much point in arguing the point with you; you simply don't know what you're talking about, haven't read the book, and aren't really capable, at this point, of arguing the issues coherently.' 'It would REALLY help if some of you actually read the book instead of throwing out pointless and off the point observations on a subject of which you are demonstrably ignorant.' 'And, of course, you haven't read the book so you're basically talking through your hat.' 'Yup. Great marketing and a generous offer on my part to some to stop making fools of themselves misstating basic facts, learn from the past, and hopefully not repeat history.' 'Ahh. I wondered how long it would take a socially inadequate asshole to show up!' -- Rick Chapman Frankly, I feel pretty confident that the person replying here is both the real Rick Chapman AND a socially inadequate geek. You come across as a real jerk. Try not attacking people personally just because they disagree with you, and try supporting your arguments with something other than 'buy my book.' People will like you a lot better.
Sun 22 Feb | Stephen Jones | NO, I don't really think you had deliberately chosen the extracts to confuse; however from the extracts alone you are clearly wrong in your generalization about cars in Chapter 3: ---'the Falcon was designed from the get-go as a “people’s car.” In other words, it couldn’t go very fast, got good gas mileage, and was economical to run. Extolling these virtues was the car’s deliberately plug-ugly design,'--- Now, the fact that the car was 'plug-ugly' probably explains why it didn't take off, as Albert said, but substitute 'Citreon 2CV' or 'Volkswagen Beetle' for 'Falcon' and you have two of the most phenomenally successful cars in history. The truth is that there are plenty of successful example of subtractive marketing, but they do depend on accertaining the details, and the market (the 2CV would never have sold to Americans). Sometimes you can still recover from a mistake. Intel fouled up with the first Celeron, but made up for it with the increased cache and thus saw off Cyrix and held off AMD at the bottom end of the market. You clearly give the impression in the excerpt of Chapter Four that the change from a flat file database to a hierarchical database was the reason Wordstar 2000 did not have printer support. Moving the data from one to the other shouldn't require ---' Such things as a rewrite of the printer install program'--- any more than moving customer records from Foxpro to Oracle would require digging all the letters from customers out of filing cabinets to recreate the data. There might be other factors involved but you've not pointed them out, either in the excerpt or in your post. Your comments on car prices in Chapter Eight still should have had some mention of exchange rates. In 1991 the Mark and the pound were higher against the dollar than they are even now, and the yen was incredibly low. The comparable Japanese saloons you mention would have been costing 50% more only a couple of years later unless the Japanese sold them as lost leaders. And incidentally, Toyota produced a 'value version' Lexus that was pretty successful only a year or so later. Actually, that number of mistakes in excerpts from ten chapters is not a bad percentage (I can't find anything else seriously at fault, though nothing to ethuse over either). But if you reckon drawing attention to the books faults, as opposed to its good points, is the way to market it, who am I to object. After all, you're the guy who knows the answers to the universe.
Sun 22 Feb | rick chapman | +++Frankly, I feel pretty confident that the person replying here is both the real Rick Chapman AND a socially inadequate geek. You come across as a real jerk.+++ But no one can argue that you ARE a real jerk as you practice identify theft and are coward who hides behind this 'flaw' in this board. rick
Sun 22 Feb | rick chapman | ++substitute 'Citreon 2CV' or 'Volkswagen Beetle' for 'Falcon' and you have two of the most phenomenally successful cars in history.+++ Neither the Citroen nor Beatle were marketed in the US as wheels for the proletariat, the Beetle's Nazi ancestry as a 'Volks' car nothwithstanding. The Beetle in particular was the darling of academics and intellectuals, who regarded it as a 'culture' statement. It was bought by many families as a second car, or as a starter set of wheels for the kids. +++The truth is that there are plenty of successful example of subtractive marketing, +++ The truth is that there are very few of them in high tech. And software is an area of particular danger. But don't let me stop you from trying! +++You clearly give the impression in the excerpt of Chapter Four that the change from a flat file database to a hierarchical database was the reason Wordstar 2000 did not have printer support. +++ I clearly gave no such impression. You are unable to read clearly; I suggest you go back and persuse the excerpt far more carefully. Actually, I recommend you buy the book and read it so that you will have a clue as to what you are talking about. +++Moving the data from one to the other shouldn't require ---' Such things as a rewrite of the printer install program'--- any more than moving customer records from Foxpro to Oracle would require digging all the letters from customers out of filing cabinets to recreate the data.+++ As I said, you are completely ignorant of the issues surrounding such an effort. In point of fact, the problems were immense, the product was delayed by months by the effort, and when WordStar 5.0 shipped it had a database one third the size of the WS2K product. Again, you simply don't know what you are talking about. The facts are on 'the ground' and not in dispute. If you want to know more, read the book. +++Your comments on car prices in Chapter Eight still should have had some mention of exchange rates. +++ No, not really, since the huge increasess in price were not generated by exchange rates, as Audi pointed out. +++And incidentally, Toyota produced a 'value version' Lexus that was pretty successful only a year or so later.+++ And they didn't charge 40K for it. Next. Amazing. Unshakeable ignorance in full pursuit of unsupportable assertions. +++Actually, that number of mistakes in excerpts from ten chapters is not a bad percentage (I can't find anything else seriously at fault, though nothing to ethuse over either).+++ No 'mistakes' have uncovered by you or anyone else. What has been uncovered is a particular type of arrogance peculiar to many in high-tech. I talk about this syndrome in the video you can see on www.insearchofstupidity.com +++ After all, you're the guy who knows the answers to the universe. +++ Mmmm hmmm. Now, go read the book and asuage your ignorance. You are lamentably ignorant of the past and the mistakes that were made. I know the facts, have demonstrated that, and have accomplished what I felt I needed to do in this thread. I don't want to upset all you fragile flowers out there any further; watching the tears tremble in the corners of your cornflower blue eyes is more than even my flinty heart can bear. You can all repair to a room somewhere, have a big group hug, and console yourselves over your rough treatment at my uncaring hands. And then you can read the book and actually learn something. rick
Sun 22 Feb | Will the real Rick Chapman please stand up? | 'Mmmm hmmm. Now, go read the book and asuage your ignorance. You are lamentably ignorant of the past and the mistakes that were made. I know the facts, have demonstrated that, and have accomplished what I felt I needed to do in this thread.' Does that mean you'll go away again? Please?
Sun 22 Feb | Dennis Atkins | 'What has been uncovered is a particular type of arrogance peculiar to many in high-tech.' I wonder if you are aware that the guy you are talking to is a high school English teacher? Knowledgable about a wide range of subjects, but not 'in high tech'. Probably you'll slam him for not being an expert next. Perhaps you could tell us about your own high tech qualifications? Many successful projects under your belt? A fair understanding of a decent number of languages?
Sun 22 Feb | rick chapman | +++I wonder if you are aware that the guy you are talking to is a high school English teacher? +++ Well, I suggest the teach buy copies of my book as an excellent example of contemporary business writing for their class. It's one biz book they'll enjoy reading! +++Perhaps you could tell us about your own high tech qualifications? +++ You can read my bio on www.aegis-resources.com and www.insearchofstupidity.com. +++A fair understanding of a decent number of languages? +++ Coding? Haven't done any serious coding since 1991. Languages. I used to know 6502 assembler, all variants of dBase, Paradox up till version 4.0, some BASIC of course, a smattering of DBMS packages such as K-man and similar stuff. Also was pretty good with InfoStar, though it never really had a language per say. Not that this is on the point, of course. ISOS is a book about high-tech marketing. Bad high-tech marketing. As brought to you in the past. For the future, I feel I can rely on some members of this forum as grist for my future efforts. I'm sure they won't disappoint me! rick
Sun 22 Feb | Tayssir John Gabbour | Changing topic a bit (I don't know much about the 80s), do you still think it was a good idea not to participate in Amazon's lookinside program? It clearly conflicts with your idea of leaving people hanging at the end of your excerpts, and you've probably worked to ensure that people who know your book will know your website. However, if Amazon believes there's a correllation between lookinside and effectiveness of pushing a book on its frontpage, you might lose out on free advertising. And in physical bookstores the whole discussion is moot since they'll just flip through it. So would you take the same strategy for your sequel book? I know they've recently dropped looksinside for searchinside, but I'm pretty sure they had it when you came out with your book.
Sun 22 Feb | not required | Hi Rick.  If I'm ever unlucky enough to come across a copy of your book, I'll make sure to put a copy of it on Kazaa so we can all marvel at your immense studity for free.
Sun 22 Feb | rick chapman | 'Hi Rick. If I'm ever unlucky enough to come across a copy of your book, ' I can assure that one thing this thread has guaranteed is that every clueless geek who read this thread is rushing out to get their hands on a copy of the book ASAP. They'll do their best to avoid paying for it, but they'll read it. You can put money on that. The smart ones will buy the book, make notes, and avoid repeating history. 'I'll make sure to put a copy of it on Kazaa so we can all marvel at your immense studity for free. ' Awww. Is your little feelings hurt? The Big Bad Rick made you screw up your eyes and cry? Mommy will pat you on the back and make it all feel better. I'm not worried, little man. The book's not in an E-format and you'll have to spring for the copy machine. I'm sure you're too cheap to bother. Sheesh. What a bunch of whiners hang here. Where are the manly coders of old? The effete snivels of these second raters are dreary! rick
Sun 22 Feb | braid_ged | Just in Case anyone is interested, the Ford Falcon is _massive_ in Australia, and has been since at least the early 1970s. Ford Falcon and Holden (a local Australian Car brand owned by GM) Commodore duke it out for supremecy in the large family sedan market. Taxis for example, are often Falcons. I never knew the Falcon was originally a failed US model :)
Sun 22 Feb | Tayssir John Gabbour | Rick told me he accidentally sent me an email instead of adding a post, so I'm sure I can mention that he said it was more his publisher's decision to make, not his. And he explained that he's not absolutely sure it's effective since one can eventually read the whole thing with the new searchinside thing. Apress probably has a lot of data on whether it's worthwhile; they are extremely experimental with authors putting stuff on the web. Entire drafts of books-in-progress are up, and they're reprinting Graham's _On Lisp_ which is free online. They've got good forums at http://forums.apress.com/ . But whatever, as a consumer I'm satisfied with what's on your site. In fact, I've bugged O'Reilly on using multimedia to sell books, like videos of the authors teaching something or whatever. - - - - Incidentally, if you wonder about programmers of yore, it seems coders are politer than before, and expect more politeness. I've noticed this on google's usenet archives.
Sun 22 Feb | rick chapman | +++Incidentally, if you wonder about programmers of yore, it seems coders are politer than before+++ Perhaps, but you can't tell it from this forum. As the song says, you only get what you give. And I've been quite fair to my respondents. rick
Sun 22 Feb | Dan Brown | This is surreal. Will somebody email Chapman & tell him that somebody is on here abusing his target audience and making him look like an asshole? ((( p.s. Dan Brown remembers full serve/self serve lines for the gas stations well after the oil crisis. At least in Texas)))
Sun 22 Feb | Philip Dickerson | braid_ged, [An aside, completely off-topic] The Australian Ford Falcon bears little resemblance to the old Falcon in the USA. Actually, it wouldn't surprise me if the only thing they had in common was the name. I believe the Australian Falcon was designed (or at least heavily modified) in the Australian division of Ford specifically for the Australian market. The early Australian version looks much more like a 'muscle' car than the old American Falcon, and was designed to handle the temperature extremes and high speeds on the rougher outback roads; and some models were also fitted with 40 gallon fuel tanks to help Ford win the Bathurst 500 races for unmodified production street cars.
Firebird 1.5 Final Release | Sat 21 Feb | Dewd
Hey, there were lots of release candidates to reach this final release, so it better work well ! ;-) http://firebird.sourceforge.net/ Some strong points about it: 1) It is totally free, so you can embedded it with your apps and distribute it freely. 2) It performs sometimes 30% faster than Interbase. I first saw that number from a German developer that said that one big press/printer (I dont recall) from Germany had migrated from Interbase to Firebird after some benchmarks showed such an improvement. And I saw it too in some tests done by me. 3) Linux and Windows versions. Etc. It may not be a match to MS SQL Server or Oracle or... But it certainly is robust enough to be used in production systems.
Sat 21 Feb | Fred | Precisely, any news of the embedded version, ie. the one that comes in a single DLL with no server required? When I checked the solutions last summer, it was just barely in beta, and since MySQL wouldn't work from VB, I settled from SQLite.
Sat 21 Feb | Dewd | I think this http://prdownloads.sourceforge.net/firebird/Firebird-1.5.0.4290_embed_win32.zip?download might be of interest to you ! :)
Sat 21 Feb | Joel Spolsky | How does it compare to Jet?
Sun 22 Feb | Herbert Sitz | To Jet? Well, first of all, it's a true database server not just a fileserver database. It will obviously scale much better than Jet, both in size of db and in number of users. And feature wise it's got views, stored procedures, triggers. Some of it is implemented in very nifty ways.
Sun 22 Feb | Dewd | I don't know Joel. But 'InterBase and Microsoft SQL Server, a Technical Comparison', by Bill Todd - http://www.borland.com/products/white_papers/pdf/ib_vs_SQLServer.pdf - Has some info even on MSDE.
Quicken's Quality Meltdown - Anybody know why? | Sat 21 Feb | J. Peterson
A happy Quicken 99 (or was it 98?) user, I recently upgraded to Quicken 2004 after warnings from my bank that on-line banking would cease to work if I didnt upgrade (an evil marketing strategy if ever there was one). Quicken 2004 is the classic example of a disaster release: Incredibly buggy, in some cases corrupting users data, gratuitous UI changes offering no benefit, five patches out in as many months. Dont just take my word for it, look at user comments on Amazon (2/5 stars), ZDNet (94% thumbs down), CNet (79% thumbs down). Matching on-line transactions to recorded ones isnt exactly rocket science, and Quicken had it working for years. Yet in Quicken 04 they managed to screw it up completely. Its just amazing. My question for the JoS crowd: Does anybody have the inside scoop on how a major software vendor caused such a massive quality meltdown on their flagship product? Did Intuit lay off the QA staff as a cost savings measure? Outsource the coding to a third world country where the developers never use the product? I would love to know what went wrong. Probably some valuable lessons there.
Sat 21 Feb | Jason | I upgraded a month or two ago, it works OK for me. I don't do a whole lot with it. Really, I could still be using Q99 happily. Online banking integration is the only significant change that I think has happened in several years. I guess that's a strange sort of problem to have - you dominate your market so the only way to continue to make money is to sell new versions with useless features
Sat 21 Feb | Ryan | I worked for a small software vendor with a decent-quality product. When we wrote the next major release, all hell broke loose. It took us almost 18 months to completely fix it and regain our customers' trust. Here are a few reasons why it was such a problem: 1.) We had no architectural design for the largest new feature. It started as a UI prototype, to which we kept adding features, until boom, it became the shipping product. 2.) We hired a firm to do some pretty advanced usability testing, and came up with a lot of places which needed help. We then brainstormed new interface design internally and coded it. But we never went back and had external users test again, nor did we have any formal usability testing performed on the new version. As a result the new version suffered from *different* UI flaws which were just as bad. But to long-time users, they were even worse, because those users already knew their way around our old flaws. 3.) We had almost no written specs. As a result, when we thought the product was 'complete,' upper management would review it, find major issues, and require us to rewrite major portions of the application. This pushed us later and later, which meant... 4.) We didn't have enough QA resources available. No dedicated QA staff. Not enough time for developers to QA it, because we were so late finishing coding.
Sat 21 Feb | Mike Treit | I've never understood that argument about companies making money by selling new versions with 'useless' features. If nobody wanted the features, why would they buy the product? Because they're stupid? I give the person shelling out their hard-earned money more credit than that. More often than not, new features get into products like Office as a result of direct customer feedback, and the products sell because people want the features.
Sat 21 Feb | Steve | Curious. I just read an article in Business 2.0 about how they have the hottest CEO in tech. He goes on in the article about how he used his Sigma Six (or whatever its called) stuff to revitalize Intuit. Quicken....running your business....into the ground.
Sat 21 Feb | Rob Walker | I happily used Quicken from around '96. Upgraded to Quicken 2000 to get the new features and rapidly gave up on it. I tried going back to it recently, but the online features no longer worked (it claimed they had 'expired'). That most have been in the small print I didn't read when I bought it. So I've switched to MS Money and so far so good. On a related note I use TaxWiz for (Canadian) tax filing (taxwiz.ca) as it is downloadable, cheaper than QuickTax perfectly adequate. When I bought a copy online this year the credit card charge came through as Intuit. There is absolutely no mention on their website that they have been bought out by Intuit. I wonder how longer they will market two 'competing' products?
Sat 21 Feb | TK | My wife runs all but one of these with Quickbooks: http://tk-jk.net/jk/clients.htm It's our bread and butter. She usually has at least 4 versions running - 00, 01, 02, and 03 right now. She pays $650/year for premium support; it's worth every penny. Upgrades usually go well but she, wisely, is the ultimate late adopter. Thanks for the warning. Every new client seems to have some requirement that QuickBooks is missing. I should say that she can make QB do about anything but QB could make some quirky things easier to set up. As the person who keeps her computer running and safe, I'm in awe of what it takes to support multiple versions the product. Bookkeepers get very uptight when it's time to print paychecks.
Sat 21 Feb | Sam Livingston-Gray | OP: Do you really need the online banking features? I have 2001 basic and I just manually reconcile by alt-tabbing back and forth between my online transaction history and my reconcile window. It only takes 5-10 minutes every 3-7 days. I've never been particularly impressed with Intuit's products or their business practices, especially not since registering Quicken 6 with the address '[my name] \n No Snail Mail On Pain Of Death' -- and then, months later, getting a credit card offer with that name and address printed on the image of a gold card. ;> Still, I'm to the point where I need to send out invoices and manage payments, and I'm not aware of anything that sucks less, so I'll probably wind up buying QuickBooks too.
Sat 21 Feb | The real Entrepreneur | We've used QB to run our software company for about 7 years now. Currently on Version 2002 (we're very very late adopters). Never had any real problems, although my wife (who does the accounting) occassionally complains that it does wierd stuff (like a transaction gets categorized differently than she thought she set it, etc.). Not sure if that's operator error (which I've done myself) or a bug in QB. Support hasn't been the greatest, although we've not needed it yet. $150.00 for financial sofware to run a $160k a year business seems like a pretty good deal to me. I'll be wary of 2004 version.
Sat 21 Feb | hoser | I recently switched from Microsoft Money to Quicken at the start of 2004. The main reason was that I was fed up with how hard it was to get Money to integrate into Turbo Tax. Possible but a pain in the neck. New year, new finance records. Anyhow, it works very nicely for me. One thing I did find had to do with Money. I had been using Money 2000 (I think, perhaps it was 99). I had a brand new copy of Money 2002 already installed on the PC. I thought it might useful to try the new copy of Money already on the computer. ARGH!! You cannot even use the damn thing without signing up for a passport account. What a load of crap. Another Microsoft PM smoking crack.
Sat 21 Feb | Joel Spolsky | Quicken is not the same as Quickbooks. A couple of posters here seem to have conflated the two, although they are similar products both from Intuit I believe they are completely different code bases.
Sat 21 Feb | O Canader | Rob (& any other canucks): Yes Quicken does own TaxWiz. Over the years that have also bought out WinTax, HomeTax and CanTax (personal) each of which were of reasonable quality. I have personally used each of the major brands (TaxWiz, WinTax, HomeTax, CanTax and QuickTax) and this year I am trying Griff Tax. That leaves UFile for next year. My favourite so far was HomeTax followed by WinTax -- both of which were bought and buried by Quicken. I have no idea what Quicken is doing with the IP from these products. It sure as hell was not added to QuickTax... So far GriffTax simple is OK. I haven't finished the year end for my wife's small business yet so I don't know how good or bad that will be. For simple taxes it works very well.
Sun 22 Feb | Greg Hurlman | I don't know about Quicken, but one of Intuit's other products, TrackIt (trouble-ticket tracking, among other things) has been one of the most unstable products I've seen in action.
Sun 22 Feb | Rich | (Re: Intuit products) I've noticed this phenomenon as well, from MacinTax in the early '90s or so to TurboTax and Quicken more recently. I've noticed more bugs in later versions, and decreased usability. And do we need to mention the MBR thing? I know developers that won't touch their products again because of that! Happily, I can say that the latest Turbotax was pretty good--fairly easy to use and stable. They sure had some problems, though. They used to employ more usability folks than the norm; I don't know if this is still true. (re: track-it) I looked at this product a few years ago, didn't know it was bought by Intuit (I'm reasonably certain they weren't owned by them at the time). It looked like a fabulous product. But man, the bugs! I'd have this thing running in the background and I'd have my machine crash within about an hour, every time. The evaluation I was doing ended fairly quickly.
Sun 22 Feb | Rob Walker | 'O Canader': thanks for the pointers about other tax software. I'll try one out next year if its still around. I wonder if this leads to a viable business plan: 1. Write tax software 2. Be bought by Intuit
Sun 22 Feb | Not an Intuit Fan | No idea as to why Intuit has experienced a quality meltdown, but it isn't limited to Quicken. Quickbooks is at least as buggy. Actually, I'm not sure that this is new behaviour - going back to version 6 (or maybe 5 was the first version we used) Quickbooks was the program that crashed badly if you had any network instability (still does, but not as regularly) - despite advertising five user access over a network. It was also the program that could not reliably import the same file twice. And it is the program that gets slower, and slower, and slower as you add transactions. Have a lot of inventory? Not only will searching for inventory take many minutes, but so will searching for anything else. Bugs in Quickbooks have cost us hundreds of dollars. Incautiously activating the multi-currency feature (obviously too soon), not all of the reports reported the same currency. When I say that, I mean that if you do a tax report covering multiple currencies, sometimes it 'forgets' the invoices are multi-currency, and reports as if they were all the base currency. And this isn't consistent either, so you have to view the details of every report before trusting the consolidation, and match each detail with the base currency amount that you expected in order to be sure your numbers were right. Of course you can't return to single currency mode. And heaven forbid if you decide to use an outside payroll system (after they changed their payroll subscriptions to force you to subscribe to the actual software as well as payroll - a nearly 300% price increase, plus you get to be a guinea pig for all their new features and bugs with each new version of the software, which is automatically rolled out with the payroll). If you use an outside payroll system, you have to set up new payroll accounts. If you use the internal payroll accounts, even though the transactions appear successful, they don't show up on the reports. The sad part about all of the above is that the previous software (Simply Accounting) that we used randomly deleted entries (actually usually only half an entry, which is worse). So Quickbooks was superior software. Part of Intuit's problem (I think) is the fact that they have so many different code bases for essentially the same application. The Canadian version of Quickbooks does not have the same code base as the American version (for instance). Another part of the problem may be that the migration from traditional app to browser based app wasn't particularly smooth. They have also purchased a ton of companies and integrated their code (supposedly). I suspect said integration had some quirks that needed (needs?) working out. It seems to me also that much more effort has gone into nifty copyright protection schemes and automatic updating (some of which silently disable previous features - argh!). And figuring out how best to force your customers into a subscription mode instead of a 'buy our new software when the customer wants to' mode. I admire Intuit at a business level - they have done an incredible job at weaning their customers from a one-time sale to re-occurring revenue streams. But their methodology has also really turned me off as a customer.
Sun 22 Feb | Kentasy | I use a human being (not me) to do my taxes. Highly recommended. :)
Sun 22 Feb | Christopher Wells | > If nobody wanted the features, why would they buy the product? Maybe it's not trying a matter of trying to persuade people to upgrade: maybe it's a matter of, if you don't have new features (a 'new release') then you can't get people to publish reviews of it again.
Sun 22 Feb | Sam Livingston-Gray | Okay then, since Quickbooks is starting to sound really awful, does anybody have recommendations for another application I can use?  I mostly need to create detailed invoices for hourly consulting and sales of a shrinkwrapped app; tracking my bank balance is not necessary since I have an older version of Quicken.  (=
Sun 22 Feb | MacSqueeb | Anybody try GnuCash? I currently use Q2001, with which I am satisfied, but the machine it's on is nearing the end of its life and re-installing on a new machine means 1) finding my Q2001 media, 2) re-registering OR 2a) spending 1-4 hours on the phone to explain that I've already registered and just want to use a re-installed instance, 2a1) listen to the PSS read the part of her script about why I should upgrade, 3) try to get all of the updates installed so on-line banking will work, 4) restore current data from backup and pray. Here's what I'm wondering about GnuCash. Obviously almost no banks on earth support on-line banking with it, but it does claim to import and automatically merge .QIF files. My bank provides manual download of QIFs based on filter criteria that you select in a browser interface, so I've thought it would be cool if I could get in touch with someone in their development area to see if there was some way I could automate my selection and download through scripting on my end, which would come pretty close to satisfying my wants. I'm sure they would never give up that kind of information, but it's a nice thought. Anybody ever try anything like this?
Sun 22 Feb | fool for python | And they boast about their Six Sigma program.
FoxPro clobbered dBase | Sat 21 Feb | Albert D. Kallal
Joel wrote: In the late 80s FoxPro clobbered dBase in the market mainly on the strength of the fact that it compiled standalone executables. FoxPro had a linker. xBase developers pleaded with Ashton-Tate, makers of dBase, to develop or acquire a linker, but Ed Esber, reviled CEO of Ashton-Tate, refused to give them one. Learn from your own history. (Thanks to Rick Chapman for reminding me of history repeating itself.) Well, no question the distribution Kit for FoxPro was ONE big reason why I choose FoxPro over other products. Remember, also clipper also produced .exe’s also. In fact, clipper was a compiler that produced a real executable, where as FoxPro was interpreted p-code with a runtime. The minimum size of a FoxPro application was 750k + whatever your application used. So, in fact, FoxPro had runtime, and was p-code…not compiled. To produce an .exe, FoxPro did have a linker, but that is not really the real story here. And, point in fact, I never did figure out what the FoxPro linker did as you had to have a runtime anyway…and that runtime was a all, or nothing affair in terms of runtime size. However, the issue was not the fact of a linker..but the fact of royalty free distribution options for developers. That is a considerably different option, or issue. Developers wanted to write software, and NOT have the end user purchase dBase (or whatever). So, developers really were NOT asking for linker…but a royalty free otpion..and that could be runtime, or some linker. Without question, many developers really like Delphi due to a linker and an ability to produce nice small .exe files. However, this ability has not really saved the day for Borland and Delpi developers…..has it? When ms-access came on the scene, it also had to compete in the database market for developers who wanted a royalty free distribution option also. Without that option, NO developers would adopt the product. So, to this day…we still can distribute royalty free ms-access applications , but we sure never did get a linker. In fact, we got a fairly large runtime. So, both FoxPro and ms-access actually use runtimes. As a side note, the ms-access developers tools for office are now part of visual studio (office extensions). So, I have beg to differ on this issue. A linker is nice and foxpro used one…but the issue was a royally free runtime that FoxPro had and the means to package an application that won the day. This approach does not require a linker. Albert D. Kallal Edmonton, Alberta Canada kallal@msn.com http://www.attcanada.net/~kallal.msn
Sun 22 Feb | Les C | I still use VisualFoxpro every day and I really like it. I only wish I could afford to upgrade to the latest version (I'm stuck on 6). I am pretty sure that FP 2.6 was the first FoxPro that *didn't* have the capacity to generate native .exe files that didn't need the runtime. It was also the first *not* to offer DOS and Unix support. It was also the last to offer decent Mac support. (VFP 3.0 had a Mac version but it was pretty badly stuffed)
list of skills on resume | Sat 21 Feb | Jason
Im trying to get my resume up to date. In the past, under skills, I usually have a bullet list of the technologies Ive worked with. Ive always hated how this looks, but Im not sure what the alternatives are. Any suggestions? How do you handle conveying your technical skills on a resume without having it look like a grocery list? Part of my concern is that theres a lot of things I do a little bit of: a little VBScript, a little HTML, some C#, some XSLT, some SQL, etc... I want to get across that Im conversant in these areas, but Im not an expert (I dont spend 40 hours a week cranking out C#, but I can write a C# component)
Sat 21 Feb | Norrick | I've heard that you should list your competencies in decereasing order of expertise. I've also heard that you should use modifiers like 'fluent in', 'familiar with', and 'some experiecne with'. I've also heard that you should list your skills in no particular order at the top of the resume, then pepper your history below with the applicable technologies so the person reading your resume will know not only what you know, but what you have done with it. *shrug* Who's to say what's right?
Sat 21 Feb | Sam Livingston-Gray | I was going to describe the way I approach this, but it's easier to just post a link: http://www.timestream.net/resume/Resume.asp
Sat 21 Feb | Alex.ro | A naive question: doesn't "fluent in [...]" sound like "Read first 20 pages of '[...] for Dummies' "?
Sat 21 Feb | M | List them all in bullet form, grouping them by language, systems, applications, operating systems, etc. The goal here is to make it past the HR and/or computer filters. Do not label your relative expertise in these. If a manager sees you only know some SQL and they think any developer worth their salt needs to know SQL, they may get rid of you... oh and the position requires no SQL, but oh well. Use the interview to make clarifications and set expectations for the resume reader.
Sat 21 Feb | Li-fan Chen | You might consider making your resume active, have links to a minisite where a link like 'Linux' expands out to what you mean exactly.. whre you get to elaborate on the technology you really know (be it sendmail, apache, java+j2ee, oracle, etc etc on the linux platform).. That way for the normal folks they see one page, when they forward your resume to a technical hiring staff, they can click to learn more. Like so: Linux skill listing
Sat 21 Feb | Li-fan Chen | Mini sites are great because they don't fall into a 5000+ active website you see every blogger building. It's limited, it's 5 pages.. it does its job and impresses. Do not use the opportunity to expand your resume into 5 pages, use it to clarify, not confuse.
Sat 21 Feb | Mike Treit | If someone lists on their resume a particular technology as a 'skill' that they possess, I think it's reasonable to expect a degree of competence beyond just light familiarity. If you think it's a good idea to put skills down on your resume that you don't really possess, in order to get yourself in the door, you're in for a rude awakening in the interview. It's very close to being dishonest, which in many cases is going to result in an automatic no-hire. To give an example, if you happen to know how to call into COM objects from a scripting or RAD language, and you put 'COM' as one of the skills on your resume, you are probably going to make a poor impression when the interviewer decides to drill into your COM experience and expertise.
Sat 21 Feb | Li-fan Chen | Mike, I think it goes without saying. The other major sin ofcourse is trying to ballon up the number of years you have spent using a technology. I don't know if recruiting companies now days still ask for unrealistic number of years of experiences (like 20 years of Java) but they use to do that so much it made all the young college grads nervous.
Sun 22 Feb | Chi Lambda | My uncle, who is an IT headhunter in NYC, helped me with my resume. He had me put all my computer skills (languages and software) at the top, with the corresponding number of years I've worked with them. Example: - VBScript (3 years) - JavaScript (4 years) - C#(1 year)
DotNet is Deja Vu | Sat 21 Feb | Dewd
Many things that are discussed about DotNet were discussed for Java as well. Thats Deja Vu and I am very tired of it. I am sure that I am not the only one, but there are the Virtual Machine newbies around here that are migrating because Microsoft is migrating. Man that gives me a headache. Why we cant have everything we wish for ?
Sat 21 Feb | Mike | So I guess what your saying is the Microsoft centric developers are waking up to the problems java developers have known about and learned to live/deal with? Good point if that is what your saying. I think the big issue is a lot of MS developers target the desktop and not the corporate world and have a hard on for the single .exe simplicity that is being left behind. You can't have it both ways, you can't have an enterprise ready architecture that is simple and fits into a 2 mb download. Sorry, that's the way it is. On the other hand, MS changes their developement platform often enough. Wait three years and you'll have a whole new set of complaints. Complaints 2.0 if you will. If you want a single exe what's wrong with Delphi, or Real Basic? Answer, nothing. You're just too used to riding Microsoft's coat tails to venture out on your own with a tool made by another vendor. I'm not talking about everyone here, do don't be killing the messenger. That's just the way I see it. And if your answer is that 'well, Microsoft tools are what everybody uses' then you've just discovered the problems with monopolies.
Sat 21 Feb | Cletus | 'If you want a single exe what's wrong with Delphi, or Real Basic?.... You're just too used to riding Microsoft's coat tails to venture out on your own with a tool made by another vendor. ' Delphi is a great product (and I'm sure RealBasic as well), but the reality is that most developers do not get to choose their own tools. This choice is made for them by their management. For the most part the industry seems to be dominated by two giants: MS.NET & Java. It seems that if you want to work in this industry, you have to have some knowledge of one of these two (or both). Not that you will never use anyother language, or that .NET & Java are the end all to be all of languages, but the current reality is that many of the IT jobs you land will be in one of these two camps. So I don't blame folks for riding MS coat-tails or Sun's coat-tails. Also, the fact is that you make a pretty good living riding on either one of these coat-tails.
Sat 21 Feb | Chris Tavares | Everything we've been hearing about Java is just a repeat of Smalltalk, LISP, and UCSD Pascal. That's just Devja Vu and I'm sick of it. There's nothing new under the sun.
Sat 21 Feb | Mike | 'but the reality is that most developers do not get to choose their own tools. This choice is made for them by their management. ' At the corporate level certainly. I'm talking about the desktop developers that are screaming about the large runtime downloads.
Sun 22 Feb | Nate Silva | I don't think Delphi is an option. Take a look at Borland's web site: it's now 'Delphi for the Microsoft .NET Framework.' The version that compiles to stand-alone executables is a legacy product. Why Borland would do something this stupid is beyond me. RealBasic is interesting, but doesn't have market awareness and has an unusual development model (your project is in a single file; you can only view/edit your code one function at a time from a tree-style browser). Which isn't bad, but it's not what commercial developers are used to. So even the desktop developers have to consider .NET -- and you bet they're going to complain about the huge runtime.
Objects Flamewar | Sat 21 Feb | a
I took a dissenting view of the desirability of object oriented programming in other discussion threads, and got shot down, so I thought Id fight back here rather than polluting other discussions. My case is that objects = inheritance, and that inheritance = spaghetti, and therefore that objects = spaghetti. People say that object programming is actually about modularity, abstraction and encapsulation. This is because of the Object Lobby, who think they are some kinds of programming senseis, have spread the following propaganda: Up to now, you foolish mortals have been suffering under the Wheel Of Fortran77, but now you may reach Enlightenment under the Tree Of SmallTalk, if you realize the Noble Truth, that Programming is Information Hiding! However, in the real world we were using things like Turbo Pascal in pre-object days, and had to switch to things like Visual C++ when the Pointy Haired Bosses decided that objects are A Good Thing. Now the information hiding facilities of Visual C++ are Classes (compromised by Friends) and #include, whereas Turbo Pascal has Units (not compromised by Friends). So actually, object orientation probably means *worse* modularity, abstraction and encapsulation. People will also say that objects are about polymorphism, but in object languages this means overrriding methods in subclasses. So if you kill off inheritance (which I want to do) you dont get polymorphism (because you dnt get subclasses) in the languages that people actually use. Now that I have made my case for objects = inheritance, I want to say why I want inheritance killed off, which is that inheritance = spaghetti. This is because your code becomes riddled with dependencies from the very bottom of your hierarchy right the way up to the superclass, and so very easy to break. This is far worse than the problems with global variables and gotos, because *they* are at least explicitly visible. But the dependency chains you get from inheritance are too opaque because they are complicated and partially hidden. At this point, people say No! This is a feature! Its your fault for abusing it! The compiler should Trust The Programmer, and *you* shouldnt code! Unfortunately, in the real world, *I* am not responsible for the garbage I have to maintain. So this approach will not work: Boss: Fix this (shows SpaghettiHierarchyNightmare.cpp) Me: How dare you write such garbage code! Go back and rewrite all 300 Megs of it before you pass it to me, you cretin! Boss: Take this instead (shows pink slip) In the real world, we dont want the compiler to Trust us, we want it to prevent the cretin from being able to write SpaghettiHierarchyNightmare.cpp in the first place. We want Control Of The Idiots (C.O.T.I) that preceeded us. Someone would have to pull many stunts in a non-object language in order to produce inheritance. This means that the cretins could not produce a spaghetti hierarchy nightmare as casually as they can with C++, but we know that is still *possible* to do inheritance without objects when *absolutely* necessary because of Turing equivalence. Im fine with that, because the number of problems that are inherently (no pun intended) hierarchical is very small compared to the number to be solved in total. A spreadsheet is not hierarchical. A word processor is not hierarchical. An instant message is not hierarchical. Only oddball things like Bill-Of-Materials queries or C.A.D. graphs are hierarchical. So in practice, if you program with objects you get a small benefit for a *few* oddbal problems you have to solve, and a large decrease of C.O.T.I in *all* cases, because the cretins start making unnecessary spaghetti heirarchy nightmares all over the place, making it harder to maintain, evolve or re-use the code, and lumping *you* with the responsibility of maintaining the cretins garbage. At this point, the Object Lobby might say Well, why did you hire cretins in the first place?. Yes, I admit it, the recruiting practices of the Fortune 1000 are all *my* fault. Back in the real world, the cretin filters weed out low IQ types. What remains is mere mortals with 800 GREs in analytics and computer science like me, whom Joel would call C Players, and a bunch of autistics (A Players). They delight in riddling their code with stupid unnecessary dependencies, they *can* keep these all in their heads for maintenance purposes, and they see no problems in burdening their team members by dumping on them with SpaghettiHeirarchyNightmare.cpp. If I didnt know better, Id think they were deliberately sabotaging the maintainability (by anyone else) of the code, in order to render themselves indispensable and their jobs secure. It is these A Players that *will* get hired, who are the cretins that the compiler *should* control, in order to prevent this sabotage. Taking the horrors of objects and inheritance out of their toy box is a very good step.
Sat 21 Feb | K | Come on, get a grip.  Insulting the "Object Lobby" doesn't make your case any better.  Denigrating object-oriented programming in general is a losing battle.  Obviously it can be done badly, but you would throw out the good with the bad.  In fact, inheritance and polymorphism can be used to great effect even in a word processing program, where document elements share a great deal of data and behavior.
Sat 21 Feb | Chris Nahr | 'Now the information hiding facilities of Visual C++ are Classes (compromised by Friends) and #include, whereas Turbo Pascal has Units (not compromised by Friends). So actually, object orientation probably means *worse* modularity, abstraction and encapsulation.' You're confusing OOP with C++ (a portable macro assembler in evening gown, to quote a poster on the Fortran newsgroup). The horribly clunky header file mechanism does fly in the face of any concept of encapsulation or data hiding but that's not the fault of OOP -- it's the fault of C, the amazingly primitive non-OOP language on which C++ is based. Likewise, the 'friends' keyword is a C++ specialty that is not mandated by any OOP principles and which does not exist in C#, for example.
Sat 21 Feb | son of parnas | What is your alternative? You sound like a person who thinks any code you did not write is crap because you don't understand it immediately. Complex things are complex. They can be made more complex or less clear through bad programming. But that is true in any paradigm. Inheritance is a way to specify interface and get an implementation for cheap. How would you do it? There's nothing hidden. It's all there in the text. If it's too much effort for you to understand then pretty much anything will be too much effort, because you'll need to do something equivalent to solve a problem. How inheritance fits in with hierarchy is someone mystifying. Inheritance is a way to structure code. That's it. Anything deeper metaphysically is your own baggage. It looks like spaghetti because there is indirection. If you don't use indirection how can you reuse stuff you have already built? How can you call different stuff at runtime? How can you build anything general? You don't like encapsulation, modularity, polymorphism, but what is your alternative? And you prove you don't understand by not understanding what friends means. Friends recognizes that packages of classes of work together, that a class is not standalone, so you need a way to have access like all the classes are the same thing, which they are, but provide different interfaces for clarity.
Sat 21 Feb | The real Entrepreneur | Most people misunderstand the true benefit of OOP. It's not that you can reuse the OBJECT. It's that by building a program around an object, you can change the object and reuse the PROGRAM. I mean, really, maybe 2% of my programs have been Object(s) code. Reusing that 2% gives me a 2% productivity boost. Not worth the trouble. But reusing the other 98%? Priceless. EXAMPLE I wrote an educational software program. I then wanted to sell a SIMILAR program that differed slightly. (instead of multiple choice answers, this new one did fill in the blank or click and drag). I just modified the part of the code (5% maybe) that deal with the 'select an answer' part. Voila... a new program for 5% of the effort. In my new programs, that 'answer selection' will be an object. Just slip in a new object and... new program. Then cash the check. ANALOGY An object is (IMHO) a program for programs. The benefit of software is that you have this generic device, a computer, which you can put in different software( or in the old days: punchcards) and REUSE the whole computer for somethign different. Objects let you do the same thing with the program.
Sat 21 Feb | veal | Wow, I thought *my* posts are long winded. So you hoped to elaborate upon your syllogism: Premise: OO languages have inheritance Premise: Inheritance leads to tangled dependencies Conclusion: OO leads to tangled dependencies Still easy to address: your second premise is wrong, and therefore does not support your conclusion. Carelessness or stupidity cause tangled dependencies, not so inheritance. But you admit that momentarily too. And your solution is to wish everyone would work in handcuffs so your own idiots can do a bit less harm. Tell us how that works out for you Quixote. In the meantime the bulk of us will continue to embrace the best tools we know, and many of us will create excellent software with those fine tools. (Incidentally, insinuating that top programmers must be autistic and that expert OO programmers constitute a malignant cabal who don't live in the real world might help assuage the pain of that 800 GRE, but it didn't help your argument. Ironic that your budding manifesto to stomp out your own least favorite avenue of complexity swims in a complex swamp of superfluous crap.)
Sat 21 Feb | MR | I don't like OO because it promotes mixing of data and code which manipulates it.
Sat 21 Feb | Kyralessa | 'It's not that you can reuse the OBJECT. It's that by building a program around an object, you can change the object and reuse the PROGRAM.' Is this a benefit of OOP as a whole, or just a benefit of encapsulation?
Sat 21 Feb | Dennis Atkins | A, I thought abut what you said in the other threads and decided I agree with you completely. Inheritence leads to class spaghetti and is bad. The only reason it is included is to allow for a sort of polymorphism using C struct syntax and polymorphism is very good. A desire for it in C brought bad inheritance and even much worse bad multiple inheritance to C++. Neither of these things are present in Smalltalk or ObjC, which also have polymorphism. Tey solve it with messages. They do it right. C++ does it wrong.
Sat 21 Feb | Dennis Atkins | Actually I guess I don't agree with you, but your comments got me thinking about the class spaghetti issue and I realized that polymorphism was not implemented right in C++ or its friends, which has led to the spaghetti problem.
Sat 21 Feb | Dennis Atkins | Actually I am not sure if I agree with you or not. Maybe you could tell me if you agree with me. That would be easier.
Sat 21 Feb | A+ | I hate object reuse, because I LOVE to rewriting everthing!
Sat 21 Feb | Chris Tavares | Hoo boy. Apparently, you think C++ is the be all and end all of OO. A common, but incorrect, assumption. Inheritance does NOT equal polymorphism. Have you ever used Python, Smalltalk or Javascript? In those languages, you can call obj.SomeMethod( ) on any object. If the object supports the method, it gets called, independent of inheritance hierary. Inheritance is just a reuse mechanism in those languages. As far as the 'reusing the rest of the program' is concerned, this is what polymorphism is all about. Procedural programs let you re-use functions that you call. Polymorphism and OO lets you re-use the functions that do the calling. Yeah, there's a lot of crap code out there, and OO is a lot harder than the original hype made it out to be. But heck, that was ten years ago! Get over it man! :-)
Sat 21 Feb | a | Simple experiment. Go to any job site, whether it be Monster, Geekfinder or whatever, and do a search for development jobs, or even object oriented development jobs. Now, count out the number of C++ and Java jobs, against the number of jobs using SmallTalk, Python, Simula67, CLOS, ObjectiveC, Fortran95, OCaML, object -oriented assember, object-oriented Perl, and anything else that I have missed. You will see that, in practice, object-oriented programming IS C++ and Java. C++ has no encapsulation, modularity or encapsulation, and neither have the kind of polymorphism that you can get in 1 line of Miranda without inheritance. So please, let's stop the pretense that objects mean anything other than inheritance.
Sat 21 Feb | a | I have nothing against polymorphism and know that it can be useful, though I have rarely found it useful personally. I am strongly in favour of modularity, encapsulation and abstraction, and have been attempting to write programs with these properties since high school and since before I ever heard of objects, so hearing these as being the benefits of OOP sounds to me like complete dishonesty. You can get these properties from SQL, for goodness sake!
Sat 21 Feb | a | Sorry for the multiple postings, someone complained about the long post so I am breaking this up. son of parnas, I thought the *aim* was to write code so that someone with a proper background could understand it immediately. I wouldn't mind if I had *ever* seen a company where there is any useful documentation about the code or its designs. I expect to see that sometime after I see a company where the developers actually test their work before checking it in. Maybe there, inheritance would work.
Sat 21 Feb | no name | My own take is that this is the 'spaghetti principle', a variance of the 'peter principle' for complex systems. A process will allow something to grow to its level of absurdity and general spaghettiness. In the beginning, there were relatively simple languages like FORTRAN, which scaled up to a certain level, beyond which they became spaghetti. After that, came more procedural languages with fancier types like C, which had a higher spaghetti level. After this came C++, which took spaghettiness to another level of complexity. Now, we have various new critters (C#, Java, Python, etc) which allow even more abstraction of complexity, and which grow to yet more exalted levels of spaghettiness. Since I'm no fan of spaghetti, I ran away from OO languages a long time ago, for the calm world of embedded systems and OS internals. We have our own religious fights here as well, but weird meta-arguments of the OO variety are chiefly consigned to those who are writing the 1,000,000,000th iteration of 'get data from db, display on screen'.
Sat 21 Feb | veal | Versus, say, get value from sensor, multiply and present on display? Or get bytes from device buffer, pass to caller? Nice dismissal of most of the programming that occurs on the planet, but you can reduce almost anything that way.
Sat 21 Feb | no name | Not that I don't respect those who manage to make the horror-show that is much modern programming work (since they are often my customers), but that game is not for me. After a 'decision point' about six years ago, I decided to abandon this 98% of programming, since I saw that it was becoming over-standardized, over routinized, and over-managed, and that any hope that elegance and simplicity would make business sense was to be abandoned - for completely excellent and rational reasons. So I chose to go into an area where the business model favors what I think of as simplicity and elegance, and whose best organizational model is small teams, usually in small companies, over megalithic organizations whose bureaucratic tendencies end up being reflected in the code they produce.
Sat 21 Feb | Vince | Veal, very wells said. I agree with all your posts. A, i've never had a problem with OO programming. I've worked on some pretty big systems. I think the majority of people here haven't had the issues your talking about either. Maybe your just not cut out to be a developer...
Sat 21 Feb | veal | A... first a couple points on your side rant justifying your use C++ as a straw man... First point. C++ and Java have almost nothing in common but some syntax traits, so to say that OO == (C++ or Java) cannot be reduced to OO == C++. Second point. It's flat wrong to even say OO == (C++ or Java). I know of plenty of Python, Ruby, Perl, C#, Eiffel and Objective C work going on, even if you don't. Only a minority of the good jobs ever make it to a job listing board, since personal references fill the bulk of good jobs. Monster is the career equivalent of a dating service -- you need it only if you have trouble getting dates. And even if by some freak of probability there wasn't a single *open* job in Objective C on the entire planet at this moment, that says nothing certain about whether there are 9000 Objective C programmers working happily. Problems with only C++ imply nothing relevant to OO in general. If you want to battle OO, you need to talk about OO. You'll make no progress against OO by pointing at problems with a particular language that you happen to have been forced to work with unhappily, or that exhibits some particular unwholesome quality that is not an inherent quality of OO. Repeating again... OO *does* imply inheritance. Absolutely. What is this pretense you claim? Nobody who knows OO well would deny that inheritance is one of the defining mechanisms. Delegation is now favored for many things that could be shoe-horned into an inheritance relationship, but inheritance is still good and powerful in the hands of people who deserve to be employed as programmers. Like all features, it should be used when it's the best choice. Hell, I created about 4 inheritance hierarchies today alone between dips into this thread. You haven't managed to show anything bad about inheritance, except that it's yet another thing that dimwits have difficulty with and that careless people use badly. [Hey Joel! Think we should eliminate pointers from C for the same reason?] You keep waving vague references to the superior polymorphism functional languages support, as if this is evidence that OO got it so wrong that inheritance should be utterly banished. It's not. C has polymorphism too. Doubt that? What's the perhaps the most common use for a function pointer? Shit, that's not nearly as powerful as the polymorphism of Haskell. We better dump function pointers from C. [See Joel!] And again you're reduced to pleading that you can get modularity, etc. without OO. That's great. We all wrote good modular code before OO. We can travel by land without machines too, but if you have a great distance to travel in a short time, that's probably not a good idea.
Sat 21 Feb | Dennis Forbes | Egads...you dare to question the holy cow of object oriented programming? You, sir, are one crazy individual.
Sat 21 Feb | you go boyee | Bravo!
Sat 21 Feb | David Roper | 'I don't like OO because it promotes mixing of data and code which manipulates it.' No it doesn't. OO more completely, more effectively and more rigorously separates the data and the code that manipulates it than any other style of programming I have come across. OO puts the code, in the form of methods (operations) into classes along side a description of the structure of the data that these operations act on. It puts the data into objects constructed according to the description in the class. Finally, it constrains the operations permissible on the objects to those specified in the object's class.
Sat 21 Feb | a | It could well be the Peter Principle, or even the Dilbert Principle, of software. Let me use the example of an application that I once maintained, that did a particular computation of a matrix to produce a vector. A desktop proof-of-concept of this application would have taken a day to write, but the production code was somewhat harder because the matrix could be gigabytes in size. It was written by an army of PhDs, who could not make it work without leaking memory, producing the wrong numbers and regularly crashing. To step through this code was impossible because of the stunts these guys would pull, including method pointers, templates, and multiple inheritance with wild abandon. These would mean that the code that actually did anything was miles away and fifteen nesting levels deep to where it was actually used, and you often couldn't see the state that you needed because of the way the code was put together. The thing is, what I was maintaining was 99% code structure, and only 1% actually solving the problem. There is nothing polymorphic about a matrix. There is nothing hierarchical about a matrix. A matrix is *simple*, an array. The 'A Players' in this company were preventing 'C Players' like me from doing our jobs simply because they were using these features. Meanwhile *my* code would not leak, crash or produce bad data, and I tried my damndest to make sure that you could understand any line just by looking at the rest of that 1 page of code - not because I am a genius, but because you *shouldn't* have to be a genius to maintain a damned matrix. But no, in the software business you have to deal with whatever pointless garbage is dropped on you purely arbitrarily, or else you'll get called anything including 'C Player', 'Technically light', 'Clueless out of College' and 'H1 Bozo' (the jackpot!). So I hope I will be forgiven for kicking back with 'idiot', 'cretin' and 'autistic'. My first post was offensive and I apologize. Maybe I should just drop this all for marketing or consulting. It seems to be easier, better paid, more secure and more glamourous work, with prospects for advancement, '2 chicks at the same time', and being labelled 'high flying' by the Economist.
Sat 21 Feb | no name | Another point on the 'spaghetti principle' - several pundits point out that OO may have run its course, and that the next programming methodology revolution may be around the corner. Like all other methodologies in the past have done, it'll incorporate the good ideas of existing methodologies like OO, and will have its own new stuff. And like them all, it will expand to its own 'spaghetti level'. The nasty part is that there'll likely be a dozen languages between here and there - yet more nastiness on the 'skilz treadmill'. MSFT will make $$$ selling tools for all of these, and acolytes will wrangle about their minutae. And, naturally, HR types will be posting job ads demanding five years experience in them the instant they pop up...
Sat 21 Feb | a | veal, If you want to pick the *best* object languages for purposes of comparison, then I get to pick things like Modula, non-object Lisp, standard ML and Datalog. *All* of these will trump or be equivalent to *any* object language you can name, in terms of features for information hiding, ease of programming with, polymorphism, provable correctness of the code, and performance of the binaries produced. By your analogy I have already been travelling by orbital space plane long before you object people even thought of using a car rather than walking. Your points about the job market are similarly dismissed. Inheritance is the *only* defining property of OO. If you start talking about the other properties, you are implying that procedural and declarative languages *do not* have modularity, abstraction or encapsulation, which is very wrong and like assuming anything that is not object oriented is written in Fortran77. This is a far worse straw man than assuming OO = C++. (And also, if I recall correctly Java does have inheritance in common with C++, so I don't understand your point about that.) So, what I am saying is that OO *is equivalent to* inheritance, and I think you've basically won my argument for me by admitting that inheritance is something that will be used carelessly and dim -wittedly. That's the same as the argument used against Goto, after all. Remember Goto? I am sure that smart people like you can use Goto's appropriately and improve the maintainability of code that would otherwise be an extremely unpleasant mess of nested if's, while's, calls, returns and exceptions. But Goto was sent to the electric chair nevertheless, because these other constructs were safer, and better in *most (not all)* places you would use Goto, and available in all these places. So let's go through the exercise of finding things you should model with hierarchies of behaviour, against things you can more efficiently model with something else. I can come up with simulations, CAD queries, windowing systems, a few OS mechanisms and the parser data structure for a compiler. Anything even vaguely mathematical is best represented as operators on values, anything to do with data is best represented relationally, anything to do with artificial intelligence is best represented declaratively, and anything low level is best represented as assembly. So in your language you would endanger all of business data processing, scientific computing and artificial intelligence, plus most of system programming, to make it easier to write simulators and a few other things. And remember, the damage that is caused can cause breaks all along the object hierarchy, when the classes must all be bug-compatible with the base class which you decide to fix. This is havoc far worse than the minor problems that a Goto can cause. So I think that inheritance causes time bombs in your code, and that people use it a lot mostly not because it's actually that helpful, but for bad reasons e.g. they are taught to do things (or shamed into doing things) that way by the object advocates, or out of simple force of habit, the same way people used to use Gotos prolifically before.
Sat 21 Feb | son of parnas | >son of parnas, I thought the *aim* was to write code >so that someone with a proper background could >understand it immediately. If something is complex how will you understand it immediately? DNA sucks because i can't grok it in the time it takes me to take a dump. If it would take me 30 minutes to explain it to you then you probably won't understand it immediately. I should glance at MS word and understand it immediately? We break down complexity with abstraction. Abstraction at once makes things easier and harder to understand. You can build more functionality into the infrastructure, like SQL or prolog, but you'll find things not to like there too. You have not said what your alternative is. You like relational databases, then i guess you love the simplicity that is SQL and the zillions of lines of code written around it. You like declaritive languages but i'd like to see MS word in such a language. You have operators on values, which is pretty vague. In short, you have no idea how to build programs, only what you don't like. That you can't find stuff not to like in the other approaches is a joke, because there is stuff not to like. Inheritance makes life easier and harder at the same time. If you can't see the pros and the cons then you aren't trying. What are the other ways you get the same effect as inheritance? Evaluate the pros and cons. Inheritance has a lot of pros, some of the cons can be addressed with a better IDE.
Sat 21 Feb | son of parnas | >And remember, the damage that is caused can >cause breaks all along the object hierarchy, when >the classes must all be bug-compatible with the >base class which you decide to fix. This is havoc >far worse than the minor problems that a Goto >can cause. Reuse sets up a depenency in any approach. I don't usually write my own strcpy or OS, but maybe you do. What is your strategy for not suffering from broken code you use? Plus, i would use interfaces so you don't have to use an implemenation if you don't want. >So I think that inheritance causes time bombs in >your code, and that people use it a lot mostly not >because it's actually that helpful, but for bad reasons >e.g. they are taught to do things (or shamed into >doing things) that way by the object advocates, or >out of simple force of habit, the same way people >used to use Gotos prolifically before. What a pot of piss. I would like to respond, but there's nothing concrete enough to respond to. But i am curious how in other paradigms people somehow are purged of the urge to do things for bad reasons or habit?
Sat 21 Feb | veal | A says 'Inheritance is the *only* defining property of OO. If you start talking about the other properties, you are implying that procedural and declarative languages *do not* have modularity, abstraction or encapsulation' Hmmmm... I might see the problem now. If you have this much trouble with characterization and typing, I can understand your disdain for inheritance. So if I define mammals as having hair, warm blood, and feeding their young with milk, that means I'm implying that birds *do not' have warm blood. Maybe I better be safe by just saying that the *only* defining property of a mammal is having hair. But now I suppose I've just categorized a peach as a mammal. The argument against Goto was that it is simply too primative a construct, and you can achieve all the good uses of Goto with higher level language structures, like conditional clauses and repetition clauses. Further, the charge against Goto would have fallen flat had important uses been lost by replacing goto with a suite of better primatives. If anything, your argument, being retrograde, is more analogous to one that would remove conditional clauses because the same thing can be achieved with Goto. Perhaps you've noticed (if you know something about machine instructions) that Goto didn't actually go anywhere. We all still use it extensively, every day. It's still right there, but now it's *below* the language level in the implementation of that conditional clause. Perhaps if you looked more earnestly at OO, you'd find all your pre-OO Pascal tricks for modularity, abstraction and encapsulation smiling up from below the language level, albeit more crisply defined. Having very successfully applied OO to more than half the categories in your litany, I'll happily dismiss your unsupported assertions about which problem spaces benefit from OO. This admittedly goes only an inch farther than your unexplained dismissal of my points about the job market, and how it's only your poor read of the professional landscape that makes you think OO == C++. Your observation that a change within in the hierarchy propogates along the hierarchy is a very good one. Of course you didn't mention that this fact cuts both ways, and that one of the great qualities about inheritance is that a change propogates down the hierarchy, so you need only apply it in one place and all the similar types below will benefit. You see, that's a great purpose of inheritance: you decide what's different and what's alike, and locate the like behaviors up the hierachy. As some in the functional programming world like to say: once and only once.
Sat 21 Feb | Tayssir John Gabbour | Possibly useful links: http://venus.va.com.au/suggestion/sapir.html http://www.dreamsongs.com/Essays.html pro/con debate under the heading 'Resolved: Objects Have Failed'. http://mumble.net/jar/articles/oo.html fnord I think it's important to know what use the language is put to. A researcher might want a purer language to gain focussed data. My type of general programmer would usually want the opposite, a language that has lots of resources but doesn't get in the way.
Sat 21 Feb | a | veal, If I have a bird and you tell me I should trade whatever I have for a mammal because it has warm blood, your argument is laughable. It is your error for not noticing that I have the bird already, and assuming that I have a peach. Let me educate you on my 'tricks': There is a keyword 'module' that defines a set of functions and data in non-object languages. These are not accessible from outside unless they are modified by a keyword 'export'. Data that is exported as an opaque type; the intention being that these are changed only by exported functions. These are called 'accessors'. In your design you are supposed to put together the data with the functions that modify it in the same module. This is known as 'structured' or 'procedural' programming. What I get from object oriented programming is the chance to rename: module => class or component export => public accessor => method Object programming gives me no better modularity encapsulation or abstraction features (MAE) than procedural programming. I could also get polymorphism using something called a 'variant'. So we see that in language features, the only difference between procedural programming and object oriented programming is inheritance. What has happened is that the Object Lobby have said 'use objects, not procedural because you get MAEP'. That is like saying 'Have a mammal, not a bird, because a mammal is warm blooded'. There are people on other threads being made to feel guilty for doing procedural programming, and that is as ludicrous as the pro-object propaganda.
Sat 21 Feb | a | veal, You may also wish to consider the case of a conditional expression nested 7 levels deep crossing over 10 pages. This thing has so many brackets around it that you can't even see them all on the screen, so you have no hope of fixing them correctly. You can greatly aid the maintainability of such a piece of c... ode by removing the nesting, for example by use of Gotos. (I have had to deal with many of these). If you wish for a more vigorous defense of Gotos I suggest you email the Linux Kernel Mailing List, where you may be flamed by Mr Torvalds himself about where you SHOULD use Goto, as happened to someone recently. I only picked Goto because, contrary to the propaganda, there are a FEW places where it is correct to use, and where the alternatives DO NOT work as well. That is my position on inheritance also. I also suggest that you modify your condescending tone, I have been trying to watch my language, but you seem to be getting nastier.
Sat 21 Feb | a | veal, I dismissed your points about the job market because you insisted somehow that we do not consider the bulk of object programming being done, because they are not 'good' jobs, and that we dismiss the bulk of the programmers as well, because they 'don't deserve' to be. Since in any case, my selection of non-practical non-object languages bested any selection of non-practical object languages that you could make, I didn't need to argue the point anyway, and do not like being called an enemployable dateless straw man who is poor at reading etc etc. Putting your nasty phrasing aside, could you please tell me which half of my categories you have applied OO to? Does this mean, say, that I ought to use SmallTalk rather than ProLog for my next expert system? Should I use Simula rather than SQL for my next database? Should I use Eiffel rather than MatLab for my next signal processor? Or are you claiming that you will guarantee that there will be no problems in the inheritance hierarchies that I will ever have to maintain? To make this guarantee stick will you personally re-write for me the object oriented code written originally by someone less stellar than you? Or is my mis-reading of the professional landscape so grave that I can't see that everybody else is absolutely infallible? Just because you make inheritance work, it doesn't mean that Joe Programmer does. I have never seen a need for inheritance or objects outside the classroom, but I sure have seen Joe's masterpiece SpaghettiHierarchyNightmare.cpp, and I have had to maintain it.
Sat 21 Feb | Asbestos sucks | A: You are a blathering idiot. You dismiss every argument posed to you with a wave of the hand saying 'not relevant'. Well, they are relevant. Deal with it. You have said nothing of substance, and your assertions are meaningless. Go back to the COBOL days and get stoned on salad cream, let us real programmers be. Yeah, it's a flame. Whoopty fucking do. Take the bait, I dare you!
Sat 21 Feb | a | son of parnas, I didn't say that the other paradigms are infallible, just that objects are the worst. How about this for suggestions: 90% of CPUs in use are for microcontrollers. Program these in low level fashion using assembly. 1% of CPUs in use are for high performance numerics. Program these in structured fashion using a specialized mathematical language. Of the remaining 9%, 60% of that work is business data processing. Do this in SQL. Relational. Of the remaining 4%, 60% is GUI programming. Do this in VB. Count that as Object Oriented. Of the remaining non-GUI programming, only the bits that actually need a behaviour hierarchy, such as CAD, need objects and inheritance. Other things, such as accounting programs, gain nothing from OO so do those procedurally, say in Modula, or declaratively, say ML. And what makes you think a Word processor would be harder to write in ML than in C++?
Sat 21 Feb | S. Tanna | I'm mostly not going to pick on the big stuff, as I expect others will Let me pick on the small stuff 1. A variable that is UNIT level (confined to one implementation module) in TP, is *more* global and *more* spaghetti-like than one that is confined to one class in C++. For non-TP think of a static outside a function in C for an equivalent. The UNIT level variable can be seen by many functions (all the functions in the UNIT) The private/protected-type class member can only be seen by functions in the same class [or derived classes] Assuming 1 module is usually >= 1 class, the class member is normally narrower scope. 2. I can not remember the last time I used friend, although I have used it occassionally. friend is necessary because there are certain cases where you can have 2 classes working together with a chicken and egg type problem It might very occassionally be appropriate as a quick fix But I agree it's much over-used 3. Do programming problems naturally decompose into objects/classes Actually I think they often do. The problem is many people take a way too simplistic approach or go a little object crazy A spreadsheet as a whole might not be hiearchical (your example), but certain aspects are Consider just the first step of reading the spreadsheet into memory from a file. (i) There are lots of different file formats you might support, you could handle these with different classes of 'File Parsing objects' (ii) Some of the formats have sub-variants, e.g. you might need a more specialized 'File Parsing Object' for a particular sub-variant of a format (iii) All the 'File Parsing Objects' have a common set of capabilities. This suggests they all derive ultimately from some common (abstract) base class (iv) The hierarchy of inheritance here of classes, enforces rule (iii). Whereas if you have separate modules for parsing/reading each format, there is no enforcement of this type of rule. And the enforcement is a GOOD THING(tm). Some of (many other) problems in spreadsheets which are hiearchical - Different types of cells - Different types of graphs (e.g. pie chart vs line chart vs bar chart) - And so on
Sat 21 Feb | Asbestos sucks | And fix your damned word wrap.
Sat 21 Feb | a | S. Tanna, 1. I wouldn't use it that way. 2. Skip this one. 3. I disagree, but your example is good. Go ahead. I would avoid inheritance myself, or I'd end up with something like the Java IO libraries. It's just a file. But I'm just giving up on this thread now. In my experience OO is a failure because it gets used by normal programmers to make code less maintainable not more, and I'm not having OO shoved down my throat because of dogma. Apparently this heresy angers people. Well, goodnight to you.
Sun 22 Feb | Tayssir John Gabbour | If you just mentioned 'software crisis' and '1968', everyone'd be in agreement. http://en.wikipedia.org/wiki/Software_crisis I believe the software crisis is in effect and we just don't notice it because uncomplicated apps are so useful, but I could be wrong. Don't worry though. XML replaced OOP as the reigning monster. Brace for the crimes committed in the name of data-driven design.
Sun 22 Feb | son of parnas | >I'm not having OO shoved down my >throat because of dogma. Apparently this heresy >angers people. Well, goodnight to you. Nobody cares about heresy. Nobody is shoving anything down your throat. The problem is you show a lack of perspective and technial skill that doesn't match your positions. So you retreat to the persecution card. Sweet dreams.
Sun 22 Feb | no name | http://en.wikipedia.org/wiki/Software_crisis
Sun 22 Feb | Walter Rumsby | Forgive me, I haven't read all the replies in this post, but I had gone through enough to be amazed, disgusted and dismayed that no one had said: 'FAVOUR COMPOSITION OVER INHERITANCE' http://c2.com/cgi/wiki?CompositionInsteadOfInheritance The assertion that OO is inheritance is just plain wrong.
Sun 22 Feb | Rameses | How about 'Favor Common Sense Over Dogma' There are situations where inheritance is exactly what is called for by certain design problems. In those situations, use it. There are other situations where inheritance is entirely uncalled for. Of course, a prerequisite is being able to identify and distinguish these situations. Instead of spouting, why not actually go study the problem? As far as the misuse of inheritance (or any other tool in the toolbox), eliminating it doesn't eliminate the problem, it just shifts it to some other place. The only effective strategy against this is to educate your fellows and yourself, and to evaluate each others' work honestly.
Sun 22 Feb | Walter Rumsby | Ramses, I don't disagree that there are times where inheritance is warranted, however: * the original poster stated that OO is inheritance which is plainly incorrect * the principle 'favour composition over inheritance' grew out of the observation that designs based on composition tend to be more flexible than ones based on inheritance. A synopsis of the GoF book I read said that in a way it is a guidebook for replacing inheritance with composition. I found it pretty bizarre that few people seemed to be objecting to the idea that OO is inheritance: OO is more than inheritance, inheritance should only be used where appropriate, inheritance is (probably) used too often and composition provides greater reusability and flexibility. I have found this to be true in my own programming, and gee shucks, it seems to agree with the principles outlined by many authors, mentors, trainers, etc.
definition of reflection | Sat 21 Feb | Roose
I keep hearing people talk about reflection and .NET.  I am a C/C++ guy, so this term is foreign to me.  From what I gather it just means obtaining what is typically compile-time info in C/C++ at runtime in other languages.  Like inheritance hierarchies, variable names, source code for functions, etc.  Is this the correct definition?
Sat 21 Feb | Li-fan Chen | Yes.
Sat 21 Feb | Brian | Not just obtaining that information, but usually you can use it in an IDispatch sort of way. E.g. in Java, you can get a list of an object's methods, search them by name, and then invoke one (passing it the required args). Sort of a clumsy 'eval'. It's one of those things that you rarely need, but when you do need it you REALLY need it.
Sat 21 Feb | Chris Tavares | It's also REALLY useful when building "plumbing" - automatically building proxies, serialization code, etc.
Sat 21 Feb | Katie Lucas | Actually most of it can be done in C++. It's certainly possible to build automatic serialisers and similar code, and yes it's within the language definition. It's probably possible to examine the inheritance tree of an object. It's not SIMPLE, I emphasise, but then it wouldn't be in Java or C# if you didn't have the infrastructure already built for you. The main problem with these techniques in C++ is that 'int' and 'char' and so on are not first-class objects.
Sun 22 Feb | fool for python | Reflection should be a language feature, not an API.
Google (1) vs. Yahoo (1) | Sat 21 Feb | Jesse Savage
Its interesting to note, given Joels comment "I was going to write about how the search for autotrephination on Google only has one result, which is surprising", that Yahoos newly launched search service only returns one result as well! Interestingly, they both point to different web pages. Clearly, both search engines could use some work, and there may still be a use for services that aggregate search engine results.
Sat 21 Feb | Bathmophobic skier | You mean like these? http://www.dogpile.com/ http://metasearch.com/
Sat 21 Feb | Ed the Millwright | > autotrephination Before I search I just want to take a wild guess that this refers to punching holes in one's own head in order to let the bad spirits out. I hope it's not a new grunge trend like spliting the tongue in two. Darn kids these days. In my day, they never punched holes into their own skulls. Remarkable, I used trepining in a sentence only yesterday.
Sat 21 Feb | Ed the Millwright | ...I'm back. Well I got it right. Didn't know there was a movie about the subject. Problem is, i've seen Pi twice, including on opening night, and I don't recall anything at all about autotrephination. I recall it had to do with the Kabbalah and the Hassidic Mafia.
Sat 21 Feb | Roose | You apparently left before the end?
Sat 21 Feb | Matthew Lock | I think everyone must have short memories regarding Yahoo. Can you remember the X11 pop-under ads Yahoo served for years? The difficulty it took to get a site added to their directory? The awful 'Your connection is too slow' dialog banner ads etc. Google have always respected their users more than Yahoo.
Sun 22 Feb | VP | Mathew, Yeah Google did a good job of keeping usability and respect for the user in mind. A clean, simple, fast loading main page. They express human warmth through their 'Google' title art. Simple, elegant, totally effective. I find it ironic that Yahoo tried hard to be a web portal, while Google stuck to purely being a good search engine, and ended up being a better web portal than Yahoo (IMO). I wonder how many people have Google as their default webpage.
dreaming of products | Sat 21 Feb | entell
This might be a little off topic, but perhaps a good way to take your minds off of work for a little while. I want to ask a very open-ended question. What types of product dreams do you have? Any particular thing youd like to be able buy from BestBuy, Amazon.com, or your local RadioShack that unfortunately doesnt exist? Anything that could potentially make you a more productive, better, happier person? Anything lacking in your life or perhaps needing augmentation? Anything annoying you to death that needs fixed? There are great things that lurk around us everyday. Some of them we could see coming, some we never saw until they hit us. Some of them got shoved down our throats until we eventually accepted them. I always wonder how these ideas formed in the first place... Lots of brainstorming? Luck? Dreams? Alignment of the planets? :) I thought I would ask for some (random) ideas that you might have heard from others or you might perhaps have yourselves. We all have different circles of friends, different backgrounds and different lives basically. I thought it would make sense to see what you all might be experiencing in your own lives. If you dont think it is a very silly topic, please respond with anything. I am open to any silly, weird, crazy, goofy ideas. Thanks in advance!
Sat 21 Feb | Tom H | I'm still waiting for an affordable virtual reality helmet I can put on and watch movies. And I want it to be good enough that I need a barf bag.
Sat 21 Feb | Dan Brown | girl robots?
Sat 21 Feb | snotnose | Radio Tivo.  Even better is a way to record internet radio, but I'd spend $100 for an audio Tivo that just grabbed FM.
Sat 21 Feb | no name | why do use ask, how much money do you have to create a new product from our ideas? :)
Sat 21 Feb | Philo | I want Verizon to offer a smartphone with bluetooth built-in. Philo
Sat 21 Feb | Sam Livingston-Gray | I want a decently fast wearable computer with goggles that don't make me look like a deep-sea diver, for a price under $3000 and a weight under 5lbs.  Think you can do that for me?  ;>
Sat 21 Feb | pbcanuck | this may not be totally whiz-bang - but something i'd actually use. i want a vcr that you can program to tape radio shows. there's a couple of weekly npr-type shows up north here that i want to see, and miss. yeah - i know there are ways to patch together a system to do this, and my linux box does it in kind of a crummy way. i just want a simple out of the box system to take care of it - or have somebody add the 50 cents worth of circuitry to every new vcr today to include this.
Sat 21 Feb | The real Entrepreneur | pbcanuk, A lot of radio shows (including most of NPR) have web archives. I listen to What 'da 'ya know and all those weekend shows via streaming archived audio.
Sat 21 Feb | entell | Interesting ideas! Why do I ask? Well, as I said, just curious... How much money do I have? Probably not enough for the girl robot! Sorry Dan Brown. :) I had a few ideas of my own, but they were mostly shot down by friends and colleagues. Oh well... Philo, The cellphone you mentioned with the bluetooth built-in. What good is bluetooth in a cellphone? You can connect a mouse and a keyboard to it? :) Seriously.. Does it allow cellphones to talk to each other somehow when they are close by or something? I thought bluetooth was pretty much dead before it even took off.
Sat 21 Feb | JWA | You can connect bluetooth enabled headsets, or connect your laptop to your phone over bluetooth for web access. --Josh
Sat 21 Feb | r1ch | Entell, I'm in the UK where loads of cellphones have bluetooth. There are a few main uses for it, mainly: Laptops can use the phone as a modem (or GPRS device on some) without cables Wireless Hands free systems (especially good for cars - just get in the car and it just works) Syncing of address books / calender with PC or other cellphones
Sat 21 Feb | Philo | JWA nailed it. While I'm waiting, I just bought a plantronics headset (like the ones in Minority Report, except with a wire) - my god, how did I live without this thing? Anyone who spends any time on cell phones should really try it. Regarding Bluetooth - there are also cars now with bluetooth receivers that will hook into your cell phone. I also think Garmin just released a bluetooth GPS unit (tablet PC on the seat of your car, GPS unit on the dashboard, no wires necessary). Philo
Sat 21 Feb | dreaming reader | an ebook reader, in the form-factor of a paperback, with flexible screen "pages" and all of the worlds printed matter available for download. storage of ~100 OEDs would be nice.
Sat 21 Feb | Stephen Jones | Cellphones have really made bluetooth take off. People in the UK use it to send messages to friends and strangers nearby, as well as transferring picturesa and a load of other things.
Sat 21 Feb | veal | Like WiFi, Bluetooth is a nifty enabling technology for lots of little things beyond the common uses mentioned. I can right now send and read SMS from my Apple PowerBook through my bluetooth phone, while the phone sits in the bag at my feet (also saving my thumbs and some sanity.) If someone were to call me right now, a window would pop up telling me who is calling so I can either scramble to answer it, or press a button on the popup window to send that call straight to voicemail and stop disturbing other people in the coffeeshop. My colleague can snap a photo with his Bluetooth camera phone of the pretty girl across the shop that Fred has a crush on, and quickly transmit it to my notebook so I photoshop Fred's head onto the guy next to her, and email it to Fred to entice him to come work with us. Meet a new business prospect at the coffeeshop? Exchanging vCards between computers and/or phones via Bluetooth is easy peasy. The infrastructure is also in place to do much more, but some of the software isn't there yet. For example, since my Mac has a decent microphone and speakers, if the software were fully in place, the Mac could present the Bluetooth headset profile to the phone, and I could use the Mac as a speakerphone calling through the phone still in my bag. Basic technologies like Bluetooth create unexpected opportunities. We may see lots of neat-o things happen over Bluetooth over next year or two.
Sat 21 Feb | Alex.ro | A wonderful thread. #1 Something like FIDO for the Web. Like a Usenet reader, but with modern options: - decent quoting (not the antiquated 'quote-body-in-full') - quick 'agree/LOL/RTFM/etc.' buttons - Send/Receive instead of wading through online forums, getting email notifications - ASKING QUESTIONS: would work like a bug report; asker posts question, answers come in, people chip in, agree/disagree/give their thoughts, and the question DOESN'T GO AWAY until the asker is satisfied. #2 An iPod-like thingy with a QWERTY keyboard, a color screen, 40GB hard drive and a nice operating system, with a decent game joystick. It would sell like crazy to teenage geeks.
Sat 21 Feb | entell | Alex.ro, Your #2 already exists. Check out the following link if you are interested: http://www.tiqit.com/specs.shtml I think the price is a little steep, but it has what you want and more! As for bluetooth enabled cellphones, how easy is it to write software for cellphones? I never dug into phone companies' websites like Nokia's to see if they have any decent appnotes, datasheets, etc. I wrote software for PDAs a few times, but never dealt with cellphones. Anyone with any experience programming cellphones? Your comments would be appreciated.
Sat 21 Feb | entell | Philo, It looks like your prayers are being answered as we speak as well! Check this out: http://www.phonescoop.com/news/item.php?n=787
Sat 21 Feb | Robert Jacobson | The Tiqit looks interesting, but could it be vaporware? It was apparently first announced in early 2002 and hasn't yet been released. Interesting line from the FAQ: '1. When will Tiqit be available? We *will* shortly be in preproduction in Q1 2003, with commercial availability in Q2 2004.' Emphasis added -- apparently the FAQ hasn't been updated since 2002. If I were an investor I'd be getting very nervous.
Sat 21 Feb | Not going to disclose it on this one... | It also looks like the girl robot is sort of available (if that is what the person that posted it is looking for).  www.realdoll.com
Sat 21 Feb | entell | I saw a demo of it on TechTV a little while ago. It seemed to be a *real* device, but I am not sure...
Sat 21 Feb | entell | I saw the demo of Tiqit not the girl robot!  :)
Sat 21 Feb | Roose | To the people who asked for radio tivo: http://gizmodo.net/archives/001915.php #1 if you search for 'radio tivo'! I know it exists, I think even some of those more geeky hard disk MP3 players have it. I know many can record from FM radio directly, since they have an FM tuner. Some of them have various Tivo-like features too, but maybe not all of them.
Sat 21 Feb | Alex.ro | I've heard about the Tiqit. Two turn-offs: - it weighs half a kilo (WHAT?) - it runs Windows XP - not the best OS to hack around. I'm intimidated by Windows. Psychologically it doesn't give you the comfort of a 'sturdy' device. I'd rather have the equivalent of a 386 with DOS Extender and multitasking. That's hackable. Just my dream product, as per the topic.
Sat 21 Feb | EAW | electronic paper. It should look and feel like real ink-on-paper, but with the option to backlight and the functionality of a tablet PC monitor. Plug it into any computer like a monitor (or more likely, connect by bluetooth, etc).
Sat 21 Feb | EAW | addendum: the technology is nearly available. I just can't wait. http://www.nature.com/nsu/030922/030922-10.html
Sat 21 Feb | entell | How about any ideas like Roomba or Segway? I keep thinking of ideas that end up being extensions to already existing products and they end up being very boring. It seems like my dronenification through endless commercials and mindless TV shows has been completed! I once had an idea for a street-cleaning robot, but I can just picture the poor thing getting abused! I guess our society is not ready for such novelties yet. :)
Sat 21 Feb | Philo | ah, but the Motorola phone isn't a Smartphone (though it's a damn nice phone). BTW, note that Motorola unveiled the phone originally in the summer of 2002 - that's how slow Verizon is in deploying new phones. :( This is what I *really* want (if it has bluetooth): http://www.coolsmartphone.com/index.php?option=news&task=viewarticle&sid=642 But I think I'll settle for the Motorola v710 and a new PDA. Philo
Sat 21 Feb | Philo | Oh. Best guesses are summer 2004 if we're lucky. [sigh] Philo
Sat 21 Feb | David Roper | Cheap broadband access in a rural area. Rule out ADSL as I'm too far from the local exchange and, anyway, there aren't enough subscribers to justify the upgrade cost. Rule out satellite because it's too expensive. Rule out a wireless link to the local telephone exchange because it's line-of-site and I'd need to erect a mast. You wanted a challenge, didn't you?
Sat 21 Feb | r1ch | David, here's a possible solution, using blimps or other autonomous aircraft, but I admit that I've only heard of it because it was one of the research projects at my university and a few of my old lecturers are involved in it. I'm sure that I heard a while ago that they're planning to enter trials soon. The project website is at http://www.capanina.org/
Sat 21 Feb | VPC | A combination of cell phone/GPS that can be hidden somewhere in the car and it would send over Internet it's position two times a day. If I notice my car has been stolen, I can send email/SMS and it would start sending its position every 15 minutes ors so. After a while, with some practice and skills, they could start making them so small that you could put one into your bike or notebook or with babies or...
Sat 21 Feb |   | I would like some sort of soft drink where I can drink a redbull sized can and become immediately legally sober, without any side effects. I would also like a similar soft drink where I can drink a can of it and it immediately makes me fall asleep for exactly five hours. When I awake I am totally energized. And no side effects.
Sat 21 Feb | Tim Sullivan | A reasonably priced flying car. It's the 21st century. Where's my flying car?
Sat 21 Feb | no name | for GPS to track stolen cars, it won't really work. at least here where i live (central europe) most of the thieves have gps blocking devices which costs around $10. so they just attach it to any car (they hide it as well), and that's it,
Sat 21 Feb | Jan Derk | A cheap malaria vaccine.
Sat 21 Feb | Dan Maas | In 1998 I did some 3D graphics for an info-mercial for the 'Satellite Recovery Network' which was a system to recover stolen cars via GPS. Guess it never caught on... I would like a better way to authenticate myself to the websites I visit frequently (forums, online banking, etc) than typing in a gazillion usernames and passwords. (done by a company with no 'privacy baggage' so it wouldn't flounder like Passport).
Sat 21 Feb |   | don't most midlevel to high end ($15,000 on up) new cars released in the united states already have a "theft recovery" option?
Sat 21 Feb | snotnose | Re: how hard to program a cellphone. If the phone runs BREW then you write your code in either C or C++. They have macros like STRCPY that do pretty much what you think they do. Everything is unicode, so things like 'this would be a stringy type thing' don't work as expected. Limited RAM/ROM. Slow CPU. No floating point. No stdlib. Other than that, you just write your code and go. The hardest thing to work with is the screen, new ones are only 120x100. Trying to work in that kind of space makes the UI extremely difficult to get right. Oh yeah. Unless you pay bookoo bux to get certified ($1500 I think), then you can't get your app anywhere that the typical cellphone user can get at it. You get the app onto your phone either via over the air transfers, or a cable that isn't easy to come by. You can get the SDK and a simulator for free at http://www.qualcomm.com/brew.
Sun 22 Feb | Aussie Chick | >i want a vcr that you can program to tape radio shows Isn't this just called a tape recorder? Or am I missing some special element (why do we want to tape audio on an audio visual device?). Speaking of all this, anyone know of any good mp3 archives containing non-music content. something akin to Microsoft's MSDN TV. I am really wanting to find something intelligent to listen to on long trips when travelling out of radio range...
Sun 22 Feb | entell | Aussie Chick, I usually use books on tape or books on CD when I go on long trips alone. Your local library should have a decent collection. Most bookstores have a good collection too.
Sun 22 Feb | Nick | There was a thread like this a while back, and I also wanted a 'radio tivo' like device. Yes, it would just be a tape recorder, but programmable. I've looked and couldn't find one. My new idea of the day is an electronic picture frame. You'd be able to load a .bmp, jpeg, etc. into the picture frame. It would come in wall mount or table top mount versions (aka, 'form-factors' if you prefer annoying tech-marketing-speak). I know something like this already exists, having read that Gates' house was filled with electronic art displays similar to this. But I'm sure he paid plenty for it. Something small scale and priced for the masses would be good.
Sun 22 Feb | anon | I want the Treo 600 for Sprint PCS for around $100 :)
Sun 22 Feb | www.marktaw.com | vcr + radio = can set it to record at different times. Can't change the channel mid tape, but you can set the time. There are also radio tuners for the computer, they may come with software that does this.
Sun 22 Feb |   | there are many consumer digital picture frames. just google for "digital picture frame."  the reason why they haven't taken off comercially is because when an LCD screen is combined with a CPU , graphics card, memory card reader, and/or networking the frame vendor will be hard pressed to make a profit selling the device at less than $500.  the least expensive frames are about $300. for $300 you can have 50 4x6 photos printed and put into $5 frames from target, and most people don't have 50 photos worth viewing, anyway.
Sun 22 Feb | Rich | Adding to the audio comments, I want a decent, cheap alarm clock that plays MP3s (and radio).  The vast majority of those clock radio alarm clocks I see have a horrible UI, and even the better ones aren't great.  Thinking about it, the UI challenges are really interested.  I almost think that so many people have used the same clock radios that it's probably hard to use anything else, no matter how "easy."
Sun 22 Feb | Aussie Chick | >You'd be able to load a .bmp, jpeg, etc. into the picture frame. It would come in wall mount or table top mount versions. I will second this one
Sun 22 Feb | Andrew Lighten | I want every clock in my home (all clock radios, wall clocks, TV clock, VCR clock, microwave, car, etc) to stay synchronised via NTP. One NTP server that keeps itself in sync with the outside world, and then everything stays synchronised with it. When I park my car(s) in my garage they should sync themselves via a wireless link to the NTP server. The wall clock in my office should stay in sync. My clock radio, the clock in my heartrate monitor, everything. I hate having 17 clocks in the house all showing slightly different times.
Sun 22 Feb | ajs | 'digital picture frame.' - just bolt an old laptop to your wall. People do make picture frames from old laptops, the downside is getting one without a broken screen, then they all have custom video drivers, so no two models are alike. Not cheap however you look at it.
Sun 22 Feb | Guillermo | I dream to have an iPod + RDS FM Radio tuner. if Apple can add Cell Phone and PDA features...
Sun 22 Feb | Philo | 'I want every clock in my home (all clock radios, wall clocks, TV clock, VCR clock, microwave, car, etc) to stay synchronised via NTP.' There was a plan around '97 or '98 to put timecode information into the interstitial gaps in a television data stream. Then VCR's could read the timecodes and set their own clocks. I don't know what ever happened to the plan. Philo
Sun 22 Feb | veal | I've wanted my computer to be able to record and time-shift radio for quite a long time too, and it's finally on the way. http://www.griffintechnology.com/products/radioshark/ The hardware's been ready for a while but apparantly the software took a lot longer than they expected. They must have farmed out the software work.
Sun 22 Feb | Peter Ibbotson | I'd have thought the XDA II would work philo but you'll have to get GSM network (I think Verizon are CDMA?). http://www.xda-2.co.uk/under_the_bonnet.html has more details Bluetooth + Windows mobile etc I don't know about availabilty in the US yet. I suspect it'll be available in around six months. (Last time I think o2 got a six month exlusive, then I think the original XDA got rebadged as a Qtek 1010) I nearly bought one last time but the lack of triband GSM meant I bought a grey import P800. www.expansys.com are saying they'll do it unlocked, at a gobsmacking £500 ($934) plus whatever the US govt wants in import duty. I think the XDA II will be out as a Qtek 2020 but that shows a price of €800 so it's a very similar price. Perhaps someone in MS can get you one cheap?
Sun 22 Feb | Keith Moore | 1. I want a secure display for my laptop so that other people in the plane/library/cafe/whatever cannot see what I'm doing. I've tried those 'tiny monitors built into glasses' products. They're OK for watching TV, but the resolution is too low for computer work. 2. I want free high-speed wireless Internet access *everywhere*.
Sun 22 Feb | r1ch | Here's a website full of ideas http://www.lazyweb.org/
Sun 22 Feb | mb | many of these exist... sounds like the real thing people need is a way to read what's out there. google is a great start, don't know if it can get much better. most VCR clocks set themselves now. you can buy other clocks which set themselves (e.g. http://www.onlinewatchcenter.com/Atomic-Wall-Clocks.html though I don't know if it would work outside of the US). but people just don't seem to want to pay for this feature; my gym has huge digitial clocks, but they all say something different; i don't see how hard it would be to have a midnight or hourly reset connection between them. digitial picture frames exist. the target isn't people who have 50 specific photos, but rather to send a daily/weekly picture to grandma. cars have lojack and immobilizer and GPS units. all hackable, and all frankly scary from a privacy perspective. secure screens exist. do laptop LCDs still require polarizers? if so, you remove the polarizer from the LCD and wear sunglasses.
Sun 22 Feb | Ron Porter | Re: high-speed internet in rural areas: Define rural. In Saskatchewan, Canada, it's almost easier to find a town with ADSL than without. Aberdeen (population well under 1000) recently got such service. Granted, I still can't get it at my cabin and my aunt can't get it at her farm, but I do know someone on an acreage getting wireless high-speed from a local provider. At least around here, it's just a matter of time. Note: When you have an area larger than Texas with only 1 million people, there aren't really any options. No matter who you are, if you don't provide rural service then you don't really get to provide any service. To get back on topic, I want an MP3 player with a memory-card slot with a form factor suitable for use with my home stereo. Remote control, reasonably large LCD display, and maybe a video-out that lets me show better menus on my TV. There's really no reason why something this big shouldn't have on-board radio and CD player with 'record-to-memory card' functions. There's also no reason I shouldn't be able to walk into a 'record' store and pick up music on a memory card. And I'm almost positive that someone will tell me that this is already here :), but I haven't come across it yet.
Sun 22 Feb | Robert Jacobson | Personal rapid transit. It's transportation network that uses personal-sized, automated electrical cars that run on elevated rails. You can simply 'hail' a car at any station and program your destination, and it wisks you there directly -- no waiting for a bus. The technology has been 'right around the corner' for decades, although it looks like there are actual prototype systems in development. http://faculty.washington.edu/~jbs/itrans/prtquick.htm http://www.skywebexpress.com/
Sun 22 Feb | Josh No-Spam Jones | I want apple (or somebody) to make an "iAlbum" ("iBlum?").. they could make it interface with their iPhoto just how iPods go with iTunes, and it'd be a coffee table photo album form factor that had an ipod sized harddrive in it but was just for looking at pictures. Maybe it'd be nicely leather bound or something. It could have a huge-ass battery in it because it's not for carrying around, just for replacing all the zillions of photo albums people like my mom have in the shelves. I'm not sure if it'd have one screen or two, and what the interface would be like, I'm sure apple could do a good job with that. The thing shouldn't need to cost more than an ipod hopefully.. the only expensive part would be the screen I guess. I know the iPhoto thing's already got this probably never used feature to order a real photo album in the mail from your photos. Rather than that, they'd just have an option to "publish" it to your iBlum.
Sun 22 Feb | entell | Let me steer the topic to a different aspect of dreaming new products. I have been seeing lots of so called innovative ideas on TV that are going to be coming into our lives soon. Here are some of them: * I have seen many claims that at some near future, many appliances in our houses will be able to talk to each other wirelessly. I am not entirely sure what the promise is, but I think it has to do with the fridge knowing you are about to run out of milk, eggs, etc... and calling the local grocery store, or at least letting you know about it. I can't think of why I would want my appliances to chit-chat. * Drive by wire. I am personally scared of this one! I like the mechanical link between my feet, my hands and the tires, the engine, etc. Besides, how much is it going to cost to fix something when it breaks? It already costs an arm and a leg and then some to replace the electronic parts of current cars. Are we going to also invent the concept of disposable cars? :) I can only think of these 2 things right now. I know there are a few others. Can anyone think of any other? Do you guys really think any of this would catch on? Can you see yourself buying into this stuff? This is a great audience to ask this question since I consider most of you to be innovators and early adopters (Gorilla Game anyone?) Please let me know what you think. BTW, many thanks to all of you who responded to this thread! It has been great!
Sun 22 Feb | Josh No-Spam Jones | Also, in general, people should make more products that require you to have a wireless network in your house with dhcp running! Why aren't there cheap little alarm clocks that assume you've got that, and keep their time updated via ntp? And also show the current weather for your zip code? You'd control these devices through a web interface just like you would your router (they'd just have a little lcd display saying the IP they were assigned via dhcp). Besides an alarm clock, I'm not sure what else you'd want though. Maybe household appliances? And if they all had easy APIs to all their functions (maybe SOAP enabled) you could have them all interact happily. You could write your own little scripts that say 'when my alarm clock goes off, turn on my stero to this mp3 if the weather is sunny, and if I have a meeting with Tom that morning, send him an email saying I'm going to be late'. Or maybe your alarm clock could connect to a traffic web site and adjust your alarm time according to your estimated morning commute.
Sun 22 Feb | Josh No-Spam Jones | Finally, When is there going to be TV over IP? Enough with the Voice over IP, I want TV! I think 1mps should be fast enough, and with comcast wanting $47/month for just basic cable, it seems like now is the time for it to be done over the Internet! Here's how it'd work. You sign up for TVIP.com's service, pay $30/month for cable or whatever, and get a username and password. Then there's software for windows,macs, unices, palmos, tivo, xbox to stream tv to you. You'd only be allowed one (or maybe two) concurrent streams at a time, but it'd work anywhere in the world you had a fast enough internet connection. Plus, they'd archive EVERY show, so it'd be like the one true infinite tivo in the sky! Maybe you could also stream movies and music from them anytime (So long netflix and itunes), and maybe if you chose to 'buy' a song or movie you would have infinite rights to stream it over and over again, EVEN if you cancelled your subscription in the future. So long dvds! I already pay $40/month for my dsl from earthlink, why would I need to pay another $47/month for cable from comcast, when if I'm watching TV I'm usually not using my dsl, and vice-versa? I guess we'll see it in a couple of years as bandwidth gets even cheaper..
Merchant Accounts | Fri 20 Feb | JT
Ive been looking into moving away from "payment processing services" like ShareIt and PayPal, and getting a merchant account that would allow me more flexibility in how I accept payments from internet customers.  So far, Ive read several difference merchant service companies policies, and havent been able to make heads or tails of it.  Has anyone ever done this, and can you explain the good, bad, and ugly in a nutshell?
Fri 20 Feb | Michael H. Pryor | We did it. It's ugly. Basically, it's difficult to find someone that will give you a merchant account that you can hook into YOUR own store. Your best bet is to call your bank, Chase, CitiBank, whatever and tell them you want a merchant account and you want to do authorizations via your electronic store which you've written yourself (I'm assuming). If not, no worries because they will have partnered with someone who will give you 'shopping-cart' software. But my advice is to pick a bank and then go through the merchant account services of the bank to find your payment processor. You can' t go the other way around.
Fri 20 Feb | Cubist | We had a merchant account with Cardservices International. They kind of specialize in mail-order and small shops that normally can't get merchant accounts through their local bank (our bank wouldn't give merchant accounts for mail order or internet). The good is, it's pretty straightforward, the money goes straight into your bank account, and the fees are only around 3% (compared to 25 or 30% you pay for online stores). The bad is, you have to sign up to a minimum term (like 4 years at $60 a month service fees), and buy special software or a credit card terminal from them (around $800-$1K). Also you are responsible for customer chargebacks. We didn't get very many, but certain people would buy the product then claim they didn't, or they'd buy with a stolen credit card and the bank would deduct the money out of your account, plus $15 or $20 service fee, and there was nothing you could really do to protest. But that was less than 1% of the sales in our case. They probably also have an automated system or scripts you can put on your site, but we didn't use that, just the special software that let us take either phone or internet orders (some people still aren't comfortable with internet, so it's nice to have the option to take orders over the phone).
Fri 20 Feb | Mark Hoffman | Specifically, what things are you wanting to do that PayPal or ShareIT don't allow? My first merchant account was a nightmare because I wasn't aware that I was signing my life away. Even though I was selling software online, I paid a huge fee for a processing machine that I didn't need. But hey, that was really my fault for being naive. I'm a bit wiser today, and I still have a merchant account but it's more for my consulting clients than software sales. For software sales, things like PayPal and ShareIT seem to cover the bases fairly well.
Fri 20 Feb | JT | My biggest complaint with PayPal and ShareIt is inflexibility. For example, I recently bought some software from a company that sends you a discount code after you download the demo. It's good for only 48 hours, and then it expires. Something like this could be done with paypal, although it would be somewhat difficult to make it work with IPN (though not impossible). With ShareIt, to make it work you would have to go into their web interface and create a new 'promotion' by hand, no way of automating it and doing it the moment the potential customer downloads the trial. My second biggest issue is just the unprofessionalness of it. You never visit a 'serious' software company and find them asking for paypal, they always have their online store built as a part of their own site. As my company becomes more and more 'serious' (It's been my full-time, only income for several months now), I begin to be concerned about not looking like an amateur. As for the pricing, I've been looking at some of the authorize.net resellers, and I've found some with pricing that seems reasonable (of course, who knows what's in the actual service contract). For example, one company offers only internet and 'virtual terminal' service. No hardware, and no up-front costs. Seems to cost about $25 a month with $0.25 + 2.2% per transaction. Compared to the $2.95 + 5% that ShareIt costs, it's a steal. Paypal is $0.30 + 2.9% (at worst), so if volume is reasonable, a merchant account is still cheaper. (http://www.freeauthnet.com/index.html anyone else is curious). That's the good. I can't find anything on the web site about a length of service agreement, but of course that doesn't mean it's not in the fine print. Still looking for the bad and the ugly...
Sat 21 Feb | no name | http://www.echo-inc.com/echonline_rates.html With many integration options listed at http://www.openecho.com/
Sat 21 Feb | Tony Edgecombe | It seems to me you are setting your self up for a lot of extra work to implement this and you probably still won't have a lot of the facilities your existing providers have (fraud protection or phone orders for instance.) Wouldn't it make more sense to spend this time marketing and enhancing your product?
Sat 21 Feb | JT | 'Wouldn't it make more sense to spend this time marketing and enhancing your product?' Yes, but appearances and flexibility for customers*IS* marketing. The first response to this thread was from one of Michael of Fog Creek. Perhaps he would tell us what Fog Creek's rationale was for setting up a merchant account rather than using paypal or something else, and whether it has payed off as expected (or unexpected). Michael?
Sat 21 Feb | Philo | A friend of mine ran an online store for over a year. At first he only took Paypal, until he did some web log analysis. He found that a lot of people would browse the store, put things in their shopping cart, go to check out, hit the Paypal page, ...and leave. When he added credit card processing, his sales increased immediately. Philo
Sat 21 Feb | The real Entrepreneur | I'd echo the sentiment that Paypal looks unprofessional. Also, you're much less protected (as a customer) when paying via paypal. If I authorize a payment via visa and then the merchant screws me over (as has happened once or twice) I could write a letter to visa reversing the charge. To my knowledge you can't do that with paypal. So... as a customer I avoid anyone who accepts only papal. As a merchant, we process through NOVA, which we get through our Costco membership. No monthly charges and about 2% charge per transaction. I recommend talking to your shopping cart vendor/service provider for suggestions of a cc vendor. We use http://www.coolcart.com I know that they have gateways built to some of the major cc processors. Bruce @ Coolcart might be able to help you out. And his cart is pretty cheap ($10 a month).
Sun 22 Feb | Doug | A customer can absolutely make a credit card chargeback as a result of a problem with a transaction processed through paypal.  A common complaint from sellers (typically eBay) who use paypal is they have little defense in these cases.
.Net linker redux | Fri 20 Feb | Almost Anonymous
A comment in Jason Zanders WebLog got me thinking about another solution to this problem. What about a piece-meal runtime installation of .NET? Joel says that he thinks he could link his application with the .NET framework and the total installer size would only be 5-6MB. This is because hes not using the entire 22MB of framework in his application. Wouldnt it be nice then if he could bundle a 5-6MB version of the .NET runtime with this application. If the runtime is already installed then nothing special is done. If the a partial runtime is installed (say by another application in this scheme) then the installer fills in the blanks. .NET has the ability to force and application to a specific assembly version and to have multiple versions of the same assemby installed. If you have an application that absolutely needs to tied to a version 1.0 assembly then youd need that entire version of the framework installed even if you have 1.1. In this scheme, you could just distribute the version 1.0 assembly with your application. Its probably much too late in the game for anything like this to happen -- I imagine this capability would have to built into .NET from the ground up. Thoughts?
Fri 20 Feb | Brad Wilson | And where would you draw the line? I guarantee it's nowhere as easy as you think it easy, even if you think it's really really hard.
Fri 20 Feb | Yo | http://www.remotesoft.com/linker/
Fri 20 Feb | Benji Smith | I can imagine lots of cases where it would probably be possible to use the remotesoft linker. It seems like the linker would make it difficult to use features like runtime class reflection and dynamic classloading in your own projects. More to the point, it would make it impossible to use 3rd-party libraries which used those features. And it seems doubtful that the linker would be able to catch all of those tricky instances, so you'd be left to find them at runtime. Very tricky business.
Fri 20 Feb | Philo | http://www.joelonsoftware.com/articles/fog0000000020.html Now you *do* have the .Net compact framework, designed for PocketPC: http://msdn.microsoft.com/mobility/prodtechinfo/devtools/netcf/ But if you tried to go a la carte, then you're right back in dll hell. We all know for a fact there are software developers that would intentionally write against various versions of the packages ('Well, I prefer the implementation of GDI 1.7 to 2.3, but I think the 2.1 DataSet is a bit faster than the 1.6...') The .Net runtime is, quite simply, a mixed blessing. It completely and absolutely solves the dependency problem - your user either has it or they don't; it also solves a lot of security and maintenance issues. Now it's a delivery problem. Didn't Joel write an article about tradeoffs? [grin] Philo
Fri 20 Feb | Almost Anonymous | 'But if you tried to go a la carte, then you're right back in dll hell. We all know for a fact there are software developers that would intentionally write against various versions of the packages ('Well, I prefer the implementation of GDI 1.7 to 2.3, but I think the 2.1 DataSet is a bit faster than the 1.6...')' But can't you already do that with manifests in .NET? Can't I link to a particular version/build of an assembly as it stands now? As such, the problem you describe already exists and my suggestion certainly doesn't make it any worse.
Fri 20 Feb | Robert Jacobson | Well, here's my little pet peeve.... IIRC the Framework is listed only as an 'recommended' update on the Windows Page, which means that a typical user has to choose to download it and then wait while his modem grind away. Distribution would be much easier if Microsoft instead distributed the Framework through the Windows XP automatic update feature. Since the downloading happens in the background, using only a portion of the user's available bandwidth, this would be a particularly convenient mechanism for distributing the Framework to users with 56K modems. Of course, this wouldn't be a perfect solution -- it won't work for computers running earlier versions of Windows, or for computers with automatic updates disabled. However, this simple step would definitely increase the CLR installed base, probably to 'critical mass' status.
Fri 20 Feb | Nigel | I don't have a professional opinion on this matter. I honestly don't fully understand the ramifications of linking, and I've never developed in Anything.NET. I do understand that a 20mb download is a lot for some people, and that there could be versioning issues between 1.0, 1.1, and the future .NET 2009 Ultra Longhorn XP version. For the last two weeks though, I've been in unspeakable DLL Hell, and I would kill to have a common runtime environment. Either that, or have all Win98 users upgrade tonight ;-)
Fri 20 Feb | Richard P | Maybe the next Trojan/Worm should download and install the .NET runtime on every computer it infects. Boy would Microsoft be in a PR pickle there. Just thinking of it makes me grin.
Fri 20 Feb | Herbert Sitz | FoxPro beat dBase because FoxPro had a linker? That doesn't sound right to me, but maybe I don't understand things well enough. Here's my understanding: The big triad of desktop databases in late 1980's was dBase, FoxPro, and Clipper. dBase was always fully interpreted. FoxPro was interpreted, but could 'compile' the source to 'tokens'. This wasn't compiling to machine language level, just some sort of tokenization of the source so the interpreter could run faster. Clipper was always a true compiler. Could compile the source and link into a native executable. (Quicksilver was another native compiler that was sort of a weak sibling of the other three.) FoxPro beat out both dBase and Clipper, but it wasn't because FoxPro was compiled. It was because FoxPro was blazing fast and was priced right (and also because Clipper lacked any sort of end-user development environment). The team of 5 people that were responsible for FoxPro also developed the 'Rushmore' technology that's still used to optimize queries in current FoxPro and Jet, I believe.
Fri 20 Feb | Herbert Sitz | Whoops, thought this thread was about little piece Joel just posted.  If it's not, then consider my post above to have been placed in that thread, wherever it is.  Sorry. . . .
Fri 20 Feb | Fred | Nigel >> For the last two weeks though, I've been in unspeakable DLL Hell, and I would kill to have a common runtime environment. Tell, tell :-)
Fri 20 Feb | Brad Wilson | 'Distribution would be much easier if Microsoft instead distributed the Framework through the Windows XP automatic update feature.' As I understand it, the .NET Framework 1.1 is a non-optional part of Windows XP Service Pack 2.
Fri 20 Feb | The real Entrepreneur | Brad, What do you base that on? I was using Window XP for quite some time, dutifully doing Automatic Updates and it never installed the .net runtime.
Fri 20 Feb | Chris Tavares | XP SP2 isn't out yet. Of course it's not on Windows update!
Fri 20 Feb | Tom | The interesting thing to me is that .NET runtime distribution issues are essentially the same issues that Java has always had. Thus, look at how Java has dealt with it. In the 1.1/1.2/MS Java days, you had no excuse but to distribute the runtime with your code because you had no hope at all of the user having the right thing installed. On Windows, it is still likely that the user doesn't have the runtime, but you're seeing more and more apps that just link to the Sun java.com website to have the user get the installation. However, the only place it works really well is on the Mac where the Java system is already in place. Thus, although it sucks, we're pretty much faced with causing users to do the installation of the runtime until such time as XP sp 2 becomes the standard. Although, 'Runtime version hell' is going to continue for the next several years until the runtime settles down enough - just like happened with Java.
Fri 20 Feb | Robert Jacobson | Brad, I hope you're right, but one article suggests otherwise: 'The service pack will also deliver the 1.1 version of the .NET Framework as an optional download.' http://www.entmag.com/news/article.asp?EditorialsID=6066 I'm not clear how the service pack could make it an 'optional download,' since it's already an optional download through Windows Update, but oh well. This article is from December 2003, so maybe the situation has changed or will change before SP2 is actually released.
Fri 20 Feb | dir at badblue dot com | Herbert, I think your recollection is generally spot-on. At the time I worked for the other vendor (the 'easy to use' one, Alpha Software which made Alpha Four and Alpha Five - end-user databases). Fox kicked butt because of rushmore -- bitmapped query optimization and their new cdx file format, which was also compressed. it saved a lot of spaces over mdx's, which were dbase's new technology (multiple indexes in one file, but no compression). I don't recall anything about fox's linker winning the day. i do remember everyone freaking out about the ability to search millions of records in milliseconds with rushmore - on a 33 MHz PC (is that right?).
Sat 21 Feb | Chris Ormerod | Herbert and Dir are pretty much spot on in regards to FoxPro. BUT, *Visual* FoxPro has had a runtime since its inception and last I checked it weighed in at 19.3MB, and we have been writing VFP apps since it came out without any trouble in redistribution. And for this reason we see no problem with the fact we are starting to develop in .Net. We have people downloading our current installer which weighs in at 80MB by the time we included the ChartFX, Crystal Reports and VC++ libraries. In fact for our CD distribution the CD is 560MB because our app actually requires 2000SP3, XPSP1, IE6 etc. anyway. My take on it is that the whole 'dotnet is too big to download' issue is a storm in a teacup and when people wake up to themselves and realise it doesn't really differ from what they currently do it will blow over. NB: It should also be noted that since Visual FoxPro came out its market share took a nosedive. Has that got anything to do with the runtime size?
Sat 21 Feb | Chris Altmann | If this doesn't install the .NET runtime: http://www.microsoft.com/security/protect/cd/order.asp then someone at MS needs to be slapped upside the head.
Sat 21 Feb | The real Entrepreneur | 'The interesting thing to me is that .NET runtime distribution issues are essentially the same issues that Java has always had.' Yep. That's why we never considered java. I was (momentarily) concerned when a very very well funded international company created a competing product. As it turns out it was Java based. And it sucked. Had a customer call the other day after trying the competing java product. They asked me stuff like 'How long does it take to install? Will I need to change my screen resolution? ,e tc.' I was baffled until they said 'oh, the other program took forever to install, made them MANUALLY change screen resolution'. All these gee-whiz technologies are great... i theory. I work in the real world.
Sat 21 Feb | Chris Nahr | I'm not aware that anything about Java requires manually changing the screen resolution. You can write crap programs in any language, you know.
Sun 22 Feb | GuyIncognito | I you'd better believe I do...
Sun 22 Feb | David Times | I suspect if Joel's article came out in a few years time we wouldn't even be having this debate. With broadband, the download for 20MB runtime is comparable to the install time from a CD-ROM. Either way, it just enough time to have a quick coffee, or take a nature break - the choice is yours, give or take a minute. Ok, the phrase 'a few years' may be optimistic for mass take-up of broadband. And the 20MB runtime will probably have doubled by then, but you get my general point (I hope!).
Explorer.exe | Fri 20 Feb | mike hindman
i know you can restart your explore shell using the taskmgr to get start menu and things to restart. I need to do this while rclient in.. the User logged in is bob the user im rclient as is bob but if i kill explorer.exe and start it via the rclient cmd window it goes away but never comes back?
Fri 20 Feb | MacSqueeb | Not sure if this is what you're asking, but whenever I have to kill explorer and restart it via taskMgr, I click the 'New Task' button on the 'Applications' tab, which essentially gives you a run prompt. HTH
Fri 20 Feb | mike hindman | yeah only i need to do it behind the scenes... no taskmgr
Sun 22 Feb | Inidan Developer in India | Its possible. Some old code, while I was getting used to VB, is available at http://vbforums.com/showthread.php?s=4abf46a73851456438496d603dcb9f8c&threadid=155985&highlight=explorer.exe Regards KayJay
Personal Cell & Work | Fri 20 Feb | Steve
Company asks for your cell phone # in use for only emergencies . . . do you give it? My mindset is if my position includes emergency availability, they need to pay. What do you think and whats the professional way to turn this down without insult/injury.
Fri 20 Feb | Kyralessa | 'What constitutes an emergency?' would be my first question. Your cell phone does have caller ID, right?
Fri 20 Feb | Steve | We all know how the mediums of emergency can quickly turn into the definition of convenience. But, rou're right, a solution could include 'sure, here it is' and just ignore calls . . . but I think that's an 'injury' solution (ignoring or, selectively, solving problems w/ the Voice Mail filter).
Fri 20 Feb | Philo | Personal cell? No way. If they want out of office access, the very least they can do is give you a company phone (not pager, phone). And then I agree - 24/7 access means 24/7 pay. If this is a new requirement, then that means you're currently getting 8x5 pay and there needs to be some renegotiating. :) The latter may not happen, since you may not be comfortable with it, but I'd seriously put my foot down on the former. Philo
Fri 20 Feb | Dan Brown | Only if they are going to let you expense your bill.  Otherwise let them buy you a pager.
Fri 20 Feb | NathanJ | CallerID is ok if you know all the numbers from work. But you might get called from somebody else's cellphone, home phone, etc... As a developer I've never had anyone call my cell-phone except during my day-off for trivial/quick items. In a good working environment I don't mind spending 5 minutes to answer a quick question. In a system administrator role I might be worried more that I'd get called in to do something. To dissuade the companymake them reimburse your cell-phone bill. Beware this could backfire! -- 'We pay for your phone, why can't we call you at 2am?' As a non-professional option - give them the wrong number and hope there isn't a REAL emergency.
Fri 20 Feb | no name | didn't you have to give them your phone number when you started working there? do people still have land lines???
Fri 20 Feb | apw | HELL NO
Fri 20 Feb | mb | what's an emergency? some places have rules like 'if you check in code and it breaks stuff, we need to call you'. that's fair if you ask me--check stuff in in the morning and you can use your office phone; check stuff in on the way out the door and you should give them your cell phone, since you've just broken other people's work and run away.
Fri 20 Feb | the artist formerly known as prince | the caller ID trick doesn't work, as my manager used to call me from his blocked ID.
Fri 20 Feb | Nathan | I refuse to answer calls where the caller ID is blocked.
Fri 20 Feb | Elephant | ... I'll add that I won't answer them if it's not a phone number in my phone book in the phone.  Everyone that I care to talk to is in that list, and if you're not in it, I didn't really want to talk to you anyways.  If you want to talk to me bad enough, maybe you'll get through to me eventually on my land line (which has no answering machine).
Fri 20 Feb | pdq | Only if they pick up the tab and don't abuse it. If you can trust them not to abuse it. I have a company paid for phone and welcome any of my co-workers calling me at any time if it's an emergency. I leave the phone in the living room when i go to sleep so if someone did call i wouldn't hear it anyway. If some ass abused it, I would stop answer their calls. Either using caller id, or never answering unless the leave a message at which time I'd call back. One thing that does bug me is people with personall cell phones in the office so their kids can call. They ring all the freaking time and drive me nuts. If the person's in a meeting, the phone rings several times before shutting up. And, they typically have the most obnoxious ring tones. I am tempted to put their phones in the trash can...
Fri 20 Feb | Russell Thackston | I had to give a coworker cell phone access to me (so I could leave early) one day. Instead of giving them my number, though, I set up a disposable email address that forwarded the message to my phone. The next day I deleted the e-mail address. They knew the address was good only for that day or so. The funny thing is, I still have people coming up to me to ask why that email address doesn't work.
Fri 20 Feb | M | 'One thing that does bug me is people with personall cell phones in the office so their kids can call. They ring all the freaking time and drive me nuts. If the person's in a meeting, the phone rings several times before shutting up. And, they typically have the most obnoxious ring tones. I am tempted to put their phones in the trash can... ' Sounds like you are just annoyed by the ringing, not the kids. Most phones have a vibrate mode. If people don't use it in meetings, you need to publicly embarrass them!
Fri 20 Feb | Nigel | What's the big deal? I don't hear where they're looking for 24/7 access, they just want to increase the chances of getting a hold of you in emergencies. Maybe I've just been working in small companies too long.
Fri 20 Feb | Philo | You've just been incredibly lucky as to which companies you work for, Nigel. I've gotten 10pm Saturday night calls for 'I was playing with the stylesheet and it's not working - can you help me?' (It was soon after that that he got distinctive ring and an oppotunity to know my voice mail *really* well) How 'in an emergency' is perceived by management is all about their personality and nothing more. Philo
Fri 20 Feb | www.marktaw.com | 1. If your manager has one, he won't understand your objections to having one (or pretend not to). 2. If there's enough of you, take an example from the services industries and have someone who is 'on call' for a period of time (one night a week, for example), and is paid not necessarily for the on-call time, but at least for the time you actually work. 3. Make telecommuting during these hours as easy as possible.
Fri 20 Feb | Norrick | If you feel strongly about it, put your foot down. Otherwise, give them the number. My take: I do not save lives for a living. Therefore, I am never on call.
Sat 21 Feb | Katie Lucas | My take on this is the same. I write software. There's no emergency that needs me to be on call. In the Wiki at the last place people were putting all their home contact numbers and stuff. Knowing the way the place worked, and the habit of demanding more than being willing to pay for, my entry read 'There are five people who have permission to wake me up during the night. The first three of them already have my mobile number. I sleep next to the fourth and the last member of the list is God.'
Sat 21 Feb | no name | They can have your number but you can always pick up and say that "i'm out of the city, let's discuss when i'll be in the office".
Sat 21 Feb | M | Repeat after me: 'Sure, you can have my cell phone, it is [your number here] and you can call me anytime. Oh, I don't have coverage in my neighborhood, but I do check voicemail when I can. Grumble, grumble [your cell carrier here] is no good!'
Sun 22 Feb | braid_ged | I get asked for my mobile number quite a lot. I don't have one. People's facial expressions are pretty funny. It's like I have a third nipple. The most shocked people of course are those who work in a similar position to I and who think they are pretty damn important. They think they _need_ a mobile. They dont. Ring tones, plans, pre-paid, carriers, cases. Mobile phones are the pc hardware of today. Do you remember when you heard a guy talking about video cards on the bus and he used all the jargon and knew all the product names but the more he talked the more sure you were he was a consumer not a techie. I feel like that about phones, the people who need them never talk about them and those that talk about them almost always never actually need one, it's either functional like a shoe or part of your self expression like the Trapper Keeper / folder you carried in Junior high school.
Job hunting *success* story | Fri 20 Feb | John Wilson
So, on Monday I was unemployed, going through the JOS forums, and I was mostly reading all of these stories of horrible working conditions, Machiavellian managers, and THE DOOM OF OUTSOURCING and how no one in the US will ever get another job again, ever, no matter what they do for a living. I managed to work myself up into a real depressive funk, at which point I said to myself, In a mood like this, I might as well check the job postings on Monster.com! My mood is a reflection of the hopelessness of my actions! Of course, it was the usual round of postings needing impossible qualifications, or experience in extremely obscure languages, or Java, which I have no experience with. I made a decision to start learning C# and .NET about six months ago, and every time I saw a job posting for a java developer I kicked myself for it. Oh, but what is this? Entry level developer position, some knowledge of C# and .NET preferred, immediate opening. Its a very long commute... but Company Confidential means I dont have to write a cover letter! Its only a mouse click to apply and Ive got plenty to spare. *Click* At 4:30 I got a call from the founder of the company. Brief pre-phone interview screening call. We hit it off okay, and she said shed get the technical guy to call me. He calls me at 6:00, and that call went pretty good too. Tuesday, got a call saying to come in for an interview, Wednesday I came in for the interview. I got the job offer Thursday. I start Tuesday. Im still in shock. Tiny software company (Im employee number four, and theres only one other programmer), business casual environment, working on a C# business app for a niche market. Exactly the job I was looking for. I had heard people say that there are tons and tons of unexplored niche markets, and while I wanted to believe them, I never really did. Now I think that while larger companies are moving big projects to India, there is a largely unrecognized market for small-niche custom software applications. Ive got some ideas about how to go about finding those niche markets; but thats the subject of another post. So, dont lose heart all you job seekers out there! Take Philos advice, get up early in the morning and check monster and dice.com and all of those other job search sites. Small companies do advertise on there, and from the impression I got, they want to fill their positions fast. So they post the job, and start calling qualified people as the resumes come in. Some of the larger organizations I applied to would wait for two months to collect all of the resumes and then start sifting them and so on. If thats the kind of place you want to work at, then by all means, only check monster.com once every few days. But if you want to work for a smaller company, then you need to be checking more frequently than that. Good luck!
Fri 20 Feb | Dan Brown | Congrats.  After working for small software companies, I don't every want to work in a big company or IT dept. again.  I hope you enjoy it.
Fri 20 Feb | The Original Anonymous Coward | Congrats John! God/Jehovah/Allah/deity-of-your-choice be praised!
Fri 20 Feb | no name | Mate, one story doesn't prove anything.
Fri 20 Feb | Greg Hurlman | True, but one story does *disprove* something: that it's simply impossible to find a decent tech job anymore.
Fri 20 Feb | Greg Hurlman | Oh yeah, nearly forgot... congrats!
Fri 20 Feb | M | I had luck with Monster too! I don't understand what is so hard about filtering the serious adds. If the add has a company listed (i.e. send resume to hr@somecompany.nul), then look up http : / / somecompany . nul and see if the job is posted there. If so, then apply and see what happens. Ignore the other adds from recruiters and who knows what. I got three interviews, two offers and my current job this way.
Fri 20 Feb | pdq | finding a job is kind of like dating. You only have to be sucessful once. The odds don't matter.
Fri 20 Feb | Cletus | John are you an employee of monster.com (just kidding)? Congrats on your're new position.
Fri 20 Feb | Mark Hoffman | Grats. At the risk of sounding like a Tony Robbins drone, I've never paid my heed to the naysayers and doom glooms. It's one thing to be realistic about the market; it's quite another to sit around and convince yourself that the sky is falling. It's tough. But it ain't as bad as many people are saying. It's just easier to sit around and moan and convince yourself the situation is worse than it really is.
Sat 21 Feb | GuyIncognito | I bet you he (or the company) lasts a month, tops...
Sat 21 Feb | Cletus | 'I bet you he (or the company) lasts a month, tops...' Let the naysaying begin.... Guy, Sounds like a bit of the green-eyed monster developing in you.
Sat 21 Feb | John Wilson | Cletus: Haha, no, I'm not a monster.com employee. I don't even think that online job hunting is the best way to find a job if you're looking. That would be good old fashioned networking. I even got a few job offers from networking but they all would require me to move, and for various reasons that's not an option right now. GuyIncognito: If you send me an e-mail I promise to let you know how it's going a month from now.
Sun 22 Feb | braid_ged | PDQ : > finding a job is kind of like dating. You only have to be > sucessful once. The odds don't matter. WHAT ? It's all about the numbers baby..... :)
Point of View | Fri 20 Feb | Richard Sunarto
Well, I am still a final year student in a uni (you american call it senior). Having read JoelOnSoftware for quite some time and analyzed market condition in Singapore, I get the conclusion that market is in the very bad shape. It is true, especially for new graduates who wishes to enter the glamorous IT professional world. My academic grade is not Fantastic at all, My ECA (Exta Curricular Activities) is almost to none (except for my first year), therefore I need to get a strong point and differentiate myself. I am not eyeing for BIG MNC like IBM, Accenture, etc. I just only want to enter the world. It is kind a bit frustating when I see the statistics displayed in the online job application like www.jobstreet.com.sg. They will mention the statistics like how many applicants apply for the job, how many are under consideration, and even how many times my resume has been read. I do not want to blantantly apply for 300-500 vacancies, however I do not want to be sided. So far, I have applied for 20 vacancies, and guess! Only 4 resumes has been read by the HR/recruiter/etc. The rest do not even read my resume, since the statistics say clearly that there are 500 resumes for that vacancy. OK, thats enough for the Sorry feeling. I tried to be positive and constructive. Now I am trying to get a feel and networking to the professional world. I have been attending to the networking event and activities conducted by software developer body (in Singapore, it is www.scs.org.sg) Uuh, When I attended that two weeks ago, I felt a bit of akward. I was the only students there, the rest are developers from various companies. A moment of embarrasment occured when the exchanging of business card happened. I had not made my business card at that time (now I have). :-) Well, actually it was a nice event, and I enjoyed it vey much. Today I attend the lecture for the CITPM (a certification lecture for the Project Manager, similar to PMI). The lecturer asked us to introduce ourselves, and during my turn, he said Ooh, you are a student, the youngest right? I hope we dont bully you. Hes nice, a middle-age man, a senior developer. So, guys, what is your point of view if you are the professional developer? Any advice for my career? Any comments are appreciated. I have followed this board for about one year.
Sat 21 Feb | Richard Sunarto | Ooh, no one has responded to my view. So sad :-( Never mind
Sat 21 Feb | Li-fan Chen | You are blabbering, break your paragraph into 4 clear and distinct open-ended questions. Loading it all into a paragraph is making the questions a loaded one.
Sat 21 Feb | Christopher Wells | You stated your points of view, but you might have had more responses if you had asked some more specific question. > Any advice for my career? Write a resume and apply for jobs. Get to know other people (fellow students, and professionals) in the profession ... called 'networking'. Talk with your career counsellor while you're still at school. Learn marketable skills: language, operating system, and problem domain. Talk with employment agencies too. Specifically, I'd guess you should perhaps be looking for Singapore-specific resources.
Sun 22 Feb | Brad Wilson | 'the glamorous IT professional world' Bwahahahahahaha! Warning, brick wall approaching at high speed...
Software for developers: With source code? | Fri 20 Feb | Ron
We are developing some components for Macromedia Flash which other developers will use to create applications in Flash. The price will be quite low (around 100 Dollars). We have to ship one crucial part of the component as source code due to the nature of Flash so nothing can stop one customer from giving away the component to his friends or to everyone on the Internet. Have you been in this situation? What would you do? Just live with it? Have an extra rigid contract with every customer? (I’d like to avoid that) (I know that you can distribute compiled components for Flash MX 2004 but we target Flash MX.)
Fri 20 Feb | i like i | Although more difficult for humans to comprehend, disassembly is 1:1 mapping of the sourcecode anyway. The only useful thing that the sourcecode might add is comments - what the programmer intended to do (rather than, often, what they did ;-) ). http://slashdot.org/developers/02/03/01/0344227.shtml etc
Fri 20 Feb | Li-fan Chen | That particular component should not be distributed in source. You should create a web form that your customers can log in, and submit the custom values/source they require, once that value is submitted, the web form will compile the relevent component using the information provided and allow that compiled component to be download. You may not have accounted for this, making this distribution method difficult, but it is possible for some projects. We'd have to know exactly why you must distribute the source, tell us more.
Fri 20 Feb | Ron | Not sure if you unterstand the nature of Macromedia Flash. You have to distribute components in source code it doesn't work any other way (except for Flash MX 2004). I guess we just have to put up with that and trust our clients.
Fri 20 Feb | Li-fan Chen | I am not sure what you mean by that... I mean yes most Flash designers prefer examples with all the sources and images in fla's, but it is not impossible to include a swf. In fact, you can create an includable swf where you can provide parameters to customize it. What is concerning though is that the majority of people do provide in source version--maybe trying to make a name for themselves--and that doesn't leave a lot of room for shareware developers in the flash space. But if you do something like what I was descripting, you could derive some profit while protecting your IP.
Fri 20 Feb | Mr. Fancypants | I always roll my eyes when the FS/OSS people talk about how you can make all this money off of GPLed code like Linux or Apache, but I do have to say in *this* situation, I don't really see what the problem is. Distribute the source, charge for the software, and rely on copyright. It is not uncommon for developer tools / libraries to include source, and some people have made substantial amounts of money selling such. Sure, a few isolated people will use your code in violation of the copyright, but that would happen no matter what, even if it was binary-only.
Fri 20 Feb | Li-fan Chen | Yes you can include source, in fact the original poster is right, anything before Flash 2004 there's no source protection of any kind. From simple activescripts to widgets to SWCs.. no support whatsoever for the compilation of code. There's limited support in MX: http://www.macromedia.com/devnet/mx/flash/articles/buildtest_comp.html I suppose that's why there's not a single true vendor of flash reusable components as of now.
Fri 20 Feb | Li-fan Chen | > Distribute the source, charge for the software, and rely on copyright. Part of what Pants say is correct, if people are lazy and copy your code verbatim, a web crawler that scans flash applets on the net can find snippets of binaries that can only exist if they use your soource. There are some famous cases where this is discovered for proprietary software (and free software) and lawsuits and/or payments and negotiations were arranged.
Sun 22 Feb | S. Tanna | I have to give out some source code for a PHP app I do this 1. Insert customer's details in the code 2. Run it thru an obfuscator, removing comments, meaningful variable names, etc. 3. Generate source using eval to generate the obfuscated code from a bunch of coded strings Sure they can undo each of these layers, but it (a) makes clear they aren't supposed to (b) makes it hard for the casual thief to help themselves. (c) Given they have to do some thinking to get past all this, hopefully at least part of the time they will be thinking that they shouldn't be.
Sun 22 Feb | Li-fan Chen | S Tanna, yeah you can do that with PHP, unfortunately what the original poster is talking about is reusable widgets and routines for integration into customer's flash projects. With PHP you can definitely do this, in fact you can build shareware dynamic flash generators using PHP.. and then obfuscate just as Tanna described, and distribute the "flash factory". But these flash items will be stand-alone, I don't know to what extent you can integrate them into custom flash projects.
Stupid XCode question | Fri 20 Feb | Sam Livingston-Gray
Being mostly used to Visual Studio, Im having some difficulty adapting to Apples latest and greatest. Yes, this is for homework, but Im hoping someone will help me anyway. ;> Were writing simple command-line apps in an intro C++ class. Im starting my project as a C++ tool and I cant for the life of me figure out how to use the debugging environment. I can interact with the program fine if I run (without debugging), but when I hit build and debug, the debugger just sits there at the first call to cin. So... where the heck am I supposed to type my input while debugging? (Told you this was a stupid question.)
Fri 20 Feb | Mike Swieton | This may not be helpful, but if you are familiar with gdb at all, you should be bale to debug with that on OSX, from a command prompt. I think, anyway; the mac box at work has the gnu tools on it, and I was under the impression that they were standard on OSX.
Fri 20 Feb | C Rose | Use the Debug -> Show Stdio menu item. This will allow you to interact with the program via stdio. Otherwise, your code gets to cin and then waits for input -- it doesn't automatically know to show the Stdio window. I guess this is because stdio may not necessarily map to the keyboard and screen.
Fri 20 Feb | Sam Livingston-Gray | I'd found the gdb drawer, which was particularly confusing in that it seemed to be showing stdout, but not knowing the first thing about gdb, I had no idea how to proceed. But the stdio window was what I was looking for. Thanks!
Sun 22 Feb | Brent Gulanowski | Read the documentation? Or, put a breakpoint somewhere and use the nice big buttons for go, step into, step over, step out of, and enjoy the nice local variable displays. BTW the debugger in XCode *is* gdb. And you don't need to use the stdio very much from within XCode.
Life is good | Fri 20 Feb | HappyDudeinLA
We have a boss whos sensible, makes good decision and doesnt mess with our heads. Our team is producing good code, we are right on schedule and will ship right on time. QA people are happy with our turnaround. We have private offices, Starbucks is nearby and we have mp3 server. I am listening to Are you gonna go my way by Lenny Kravits without having to have headphone on. Did I mention we have pool table too? Lifes good, what else is out there?
Fri 20 Feb | Joel Spolsky | Happy dev teams are all alike; every unhappy dev team is unhappy in its own way. Corrolary 1. Happy dev teams are boring.
Fri 20 Feb | Nick | Anna Karenina was a coder?
Fri 20 Feb | magoo | We see things not as they are, but as we are. (more fun, of course, to blame or credit outside sources)
Fri 20 Feb | Nigel | Funny thing about that, they had private rooms and music on the Titanic as well. ;-)
Fri 20 Feb | Stephen Jones | Actually Joel, if the comments on this forum are anything to go by, then its rather the opposite. All of the complainers are complaining about the same things - brain dead managers, unreasonable deadlines, too long hours, too noisy offices and a lack of understanding of their work. But then again, perhaps they really are happy at bieng able to moan all the time, so Tolstoy is right after all :)
Fri 20 Feb | no name | My contract was just abruptly terminated. This would normally stress me out, but in this case it just means I get to leave on my round-the-world trip in April instead of October. YEAH!!!
Fri 20 Feb | MacSqueeb | Congrats on finding the good life. Life is good in our shop too, but not nearly as glamourous. Our boss trusts us and lets us do what we need to do. The team gels, and we think we're producing good code. We fall short on the other criteria though: software is not our company's line of business, so there's no justification for spending money on creature comforts for us above and beyond what everyone else gets. No pool table, no door to close, and the cartilage in my ears gets sore every day around 1800 from wearing headphones. We're also behind schedule. And we don't have QA people. Still, I think we're happy because the first three make the biggest difference, and I can understand why the other perks wouldn't be feasible here.
Fri 20 Feb | Cosmo Kramer | 'Corrolary 1. Happy dev teams are boring. ' What the hell that's supposed to mean? Joel having bad day?
Fri 20 Feb | Ricardo Antunes da Costa |   It means that a thread about "happy dev teams" has 15 replies in one day, when threads about "unhappy|miserable dev teams" get at least 50. :-)
Fri 20 Feb | Cletus | 'Our boss trusts us and lets us do what we need to do.... so there's no justification for spending money on creature comforts for us above and beyond what everyone else gets. ' Consider yourself ahead of the game. The rest of the 'creature comforts' are icing on the cake. Having a good boss and good dev. team are the key to meaningful and interesting work like BTW, I am very fortunate also to be able to work in the same kind of situation: good boss & good dev. team. From my past work experiences and readings on the JOS Board, these two combinations are very rare to come by.
Sun 22 Feb | VP | Ricardo, Yup. That's why the nightly news usually leads off with the latest tradgedy or other negative story. We just love to bitch. My former boss used to say, 'You know things are going well when it gets boring.' Things have gotten quite...exciting, in the years after he left the company. I do disagree with the use of 'boring' though. I agree a good work environment is free of heroics and isn't in a constant crisis mode, but a great environement isn't boring because people are enthusiastically communicating with each other, sharing ideas, and constantly thinking about how to work smarter. 3M and Google come to mind.
Sun 22 Feb | Stephen Jones | One of the worst curses the Chinese have is: 'May you live in interesting times!' There's a lot to be said for an inordinate affection for cuckoo clocks!
Offshoring of "mind-numbing code-writing" | Thu 19 Feb | David
I dont have any major beefs with the general point of this article - http://www.economist.com/agenda/displayStory.cfm?story_id=2454530 . Basically the author says that the free market economy will win out in the end. Lower cost of goods and all that. I have no problem with that - hell, I dont have near enough economic knowledge to argue. But, there is one quote in there that really chapped my butt - the bulk of these exports will not be the high-flying jobs of IT consultants, but the mind-numbing functions of code-writing. What? Mind-numbing code-writing? Does this guy have any idea what hes talking about? Since when is writing code easy or worse, mind-numbing? And on top of that, high-flying IT consultants? Maybe Im thinking of the wrong people, but IT consultants sounds to me like the big consulting firms, Arthur Anderson, et al, who hire recent grads from any degree program, put them in a 6 week training course and then send them out to clients as programmers. Those are the good jobs and the others are mind-numbing? Wow. Talk about your uninformed author. Or maybe I just misunderstood his terms.
Thu 19 Feb | Gwyn | Code writing is usually mind-numbing. I'd agree with that. How may times do you write unique code that you've never written before in a slightly different way; all you're doing is repeating what you've done before with a twist to it. That's mind numbing. Ever written a COBOL program from a proper specification? That's pretty mind-numbing too. Software architecture is design and generally is the interesting bit. Implementing yet-another-bloody-context menu and all the crap associated with it is boring. Period. Designing an exception handling strategy for an application is interesting. Putting the snippets of code in a zillion places isn't. Designing database schema is interesting. Coding all the SQL is boring. Designing the flow of an application is interesting. Coding the flow and the validation of information (if x < 1 or x > 100 then error unless y is set and z contains spaces) is thoroughly utterly and completely boring. Once I've designed a system the actual implementation bores the crap out of me.
Thu 19 Feb | David | Well, maybe there are places where people code without thinking, but I've never done it. To me, mind-numbing means stuff like data entry, proofreading, cashiering, etc.
Thu 19 Feb | Bored Bystander | Managements and business people like to divide personnel into 'Morlocks' and 'Eloi'. The Morlocks of society do dirty, tedious, mindless work; are crude and uneducated, but cunning in an animalistic way; and have and deserve little dignity. The Eloi think great thoughts, do not soil their fingers with mere execution of labor, and feel that their job is to rule the Morlocks. (all other 'Time Machine' parallels of cannibalism, divergent evolutionary paths, etc will be sustained... ;-) ) There is a mindset in business (maybe even in the popular culture) that someone who works hard and who applies specific technical information is professionally lower than someone else who is a generalist and is removed from implementation details. I think this faux-elitism has crept up on us in the last 40 years. Horatio Alger type stories are passe'. You're either great, have it all, and pay no dues, or you're one of the underclasses who scavenge and scrape by. Maybe the rap entertainer/pro sports cultures feed this. The point is, the Economist author is playing up to the egos of the readers. 'After all, 'you' aren't so stupid as to do HARD work that is tedious and mind numbing, are you...' And I think the ego attraction factor (that the outsourced work and workers are unworthy somehow) is one reason why the rhetoric has taken so long to hit the streets. Thomas Edison (who would probably be outsourced today: 'Genius is 1% inspiration, 99% perspiration.'
Thu 19 Feb | B.A. Political Science (Really) | ''IT consultants' sounds to me like the big consulting firms, Arthur Anderson, et al, who hire recent grads from any degree program, put them in a 6 week training course and then send them out to clients as programmers.' Sounds good to me.
Thu 19 Feb | Outsourcing Giant | The Economist is correct. Oracle, Siemens, even Microsoft are in the process of outsourcing all of their core development to black box offshore companies to do that awful grudge work using low cost proggers, techies and codiehoos. This wisely frees up the economic potential inherent in their former coders to repurpose themselves in high level conceptual jobs such as strategerizing and methodology innovation. Success in the global economy is then assured.
Thu 19 Feb | Elephant | The thing that scares me is companies like Microsoft. They used to have (I don't know anymore) a policy where employees could not work from home (this was during the .com era) as they felt that better products were developed when employees had to come into the office and had the ability to bounce ideas off of one another and collaborate with each other. Even if you assume that the same communication would be possible through remote means such as teleconferencing, netmeetings, etc., a small problem of time zones exists that still prevents this from working when your developers are on the other side of the world. Seeing someone (MS in this case) that used to have such strong beliefs perform an about face scares me. Either a) they were wrong, and developers communicating with each other has no net benefit for the product, or b) there are alterior motives that fly in the face of a better product. This leads me to believe that cost is more important than quality in their eyes. I personally perfer quality over cost. If what came out of Redmond before was 'quality' I wonder what the future of outsourcing will bring to the table.
Thu 19 Feb | christopher baus (www.baus.net) | I think the only way to survive is to move into a situation where quality really matters.  It looks like most fortune 500 companies have gotten away with low quality work...
Thu 19 Feb | anon | So maybe the safest/safer jobs opportunities are with small- to mid-size companies?
Thu 19 Feb | Dennis Forbes | Microsoft isn't a big offshorer (and isn't really an outsourcer...unless you consider their outsourcing that they occasionally buy up other companies after a product was created), however like they do in most countries, they do have offices and development in India. Oracle, to a much larger degree, also has Oracle offices and employees in India. Given that these aren't really `remote' workers like someone in a dev group at Microsoft with someone working from home -- they probably have their own management hierarchy, and self contained development groups, and are probably assigned whole or wholly independent development tasks. This sort of offshoring is logical and makes sense -- if there are people there (which there are) that are intelligent, training and educated, and innovative, then of course they should be leveraged. As the Indian economy grows (which it is) these companies will probably be better equipped to take advantage of it. The kind of offshoring that's virtually guaranteed to be a disaster is the same sorts of disasters from outsourcing, just magnified -- insurance companies, banks, big manufacturing firms, etc, that think that they can write a wish list of software needs, throw it over the fence (or around the world) and they'll get successful solutions as a result. This sort of activity has been a stunning failure (and this isn't baseless xenophobia -- it's often a disaster when done with 'native' companies like SAP or Anderson Consulting, etc -- almost all projects go grossly overbudget/time).
Thu 19 Feb | David | Back to the issue of those who DO the work seen as lessers while those who do the planning are seen as superior - I read some good stuff about that in the book The New New Thing. He talked about how that came about, where the engineering profession grew out of the trades and always kept that blue collar association, even though engineers were usually superior intellects. As most of you have seen, it's a bias still seen very clearly in salaries, where sales and marketing types make much more money selling software than the programmers/engineers who make it. Even though I know this bias exists, it still pisses me off to see it supported in articles like this. 'IT Consultants,' who often couldn't cary the jock of regular programmers, are held up as some sort of elite who couldn't possibly be outsourced, while regular code-jockeys, those lowlifes who got 750 or higher on their Math SATs, are seen as completely expendable. Ah hell, maybe I'm just grumpy.
Thu 19 Feb | no name | Gwyn, you miss the point. The Economist author is not saying that the boring parts of your job will be offshored, he's saying that you are part of a low-skill profession and YOU will be offshored. The reason for the widespread misconception that programming is tedious 'low level' work is that most of the people who write such stories and reports are not programmers. To them, what they do is high level. Stuff they can't understand is low level. Unfortunately there aren't many programmers who correct them on this.
Thu 19 Feb | Ricardo Antunes da Costa |   Coding is boring ?  Sorry, I don't think so.  Well, maybe you could get upset when doing something for the 100th time, but hey, why not try to automate that mundade task ?
Thu 19 Feb | fw | I just went to throw my idea in the well here. While this area might not have been the focus of the article, more like not thought about at all, it does depend on the size of a company. Very often in a smaller company the best person, the person who knows the area best, maybe they never did it in the company, but lets say they're one of those people who are sys admins/consultants/network engineer/programmer all in one. Design system: It has to do $x and $y. We need this yesterday. Codes: I'm doing this right, I designed it, no hacks here chief, but I need to pull some late nights this week. Tests: To be fair once the docs are done, other people do this. Next week: At the clients site with a suit on, after catching up on sleep and puts his BOFH tshirts away. OK, usually it's not quite so fast, and sometimes you skip sections, but this is why I like working at a small place, you feel good when it's in, until you get a call about how to fix some server back at HQ while getting on the plane.
Fri 20 Feb | a2800276 | Am I the only one here whose ever had to write code that extracts 500 named attributes out of some data-structure, check the content for plausibility (10 character long, left padded with EBCDIC spaces) and pack them into another data-structure where the names of the attributes are ever-so-slighlty different (logid->log_id) and the values need to undergo some completly arbitray transformation that isn't documented anywhere (Fri Feb 20 11:55:42 CET 2004 -> 04-20-02-11.55.42.000000)? Of course that's ming-numbing. A lot of programming is completely idiotic busy work. -tim
Fri 20 Feb | Bathmophobic skier | I had an assignment at a mostly mainframe shop early in my career where I was handed my assignment completely designed by a systems analyst. He had defined all the functions that needed to be written, they're inputs, outputs and logic. All I had to do was convert it to FORTRAN (early-1980s) and make it compile. He even had the test cases for it. Additionally, the work was on an ancient General Automation mini-computer off in a back room all by itself and it also added the aspect of social isolation. *That* was mind-numbing. The supervisor came in every hour or so to see how I was doing. I hated that job and when they cancelled the project and sent us contracter programmers home (the rest of them were working on an RSX-11M system as a group - I was soooo jealous), I couldn't have been happier. When I read 'mind numbing,' that's the kind of experience I think of, although the back room is probably now a cube farm with at least a little social interaction.
Fri 20 Feb | Fernanda Stickpot | The idea of the prestige gap is more than 40 years old and is based on an aristocratic view of education. This remains the paradigm in Britain, which has never had a revolution. The idea being that the less practical value your education had, the cleverer you were. Broadly speaking (and leaving aside the question of the practical value of an arts-based education) a classicist would be considered more of an egghead than a chemist. Chemistry smacks of practical value, which smacks of real work, which smacks of not having an independent income, which smacks of being just plain 'Mr' or 'Ms'. The shame! The reverse is true in France, where people with a scientific education are considered much cleverer than liberal arts types. The idea being that you spend your day in the lab and then come home and read Villon in your spare time. Since everyone naturally has a taste for these things as a general part of life, the thinking goes, what's gone wrong when someone needs to devote themselves full-time to the study of them? I often genuinely wonder whether my mistake, in pursuing a livelihood, was to focus on building up my hard skills.
Sat 21 Feb | Dennis Atkins | a2800276 makes an interesting post. Such a conversion function could be put together in an hour or two using lex and yacc for anyone well versed in teh art of compiler writing. And doing so would be far from mind numbing. Instead the usual response is to spend several days working on the task by doing brute force coding and by bored by it all, while posting on jos about how wankers with college degrees ain't all taht. Of course the wankers with college degrees all know how to write compilers, which is what you do most times you are presented with a boring conversion task. i think a CS degree is UNDER rated. So much time and effort is spent by western programmers nowadays resolving the simplest problems taht were solved decades ago and there are now automated tools for dealing with it. In India, 100% of their programmers have degrees. They don't waste time doing mind numbing coding. They use proven techniques to generate results, proven technijues that are known to all CS graduates. The best thing western companies could do to improve the quality of their code, incraese the speed at which it is developed, reduce the bugs in the code, and improve its maintainability is to fire all their programmers who do not have degrees and/or who did not graduate with at least a 3.5GPA. Then at least the firms would be able to compete with the overseas programmers who are at least this minimally competant.
Sat 21 Feb | . | Errr, as a matter of practicality outsourced/offshored code is 'mind numbing' code -- I guarantee you that that vast majority of code that is offshored to India is rote, eye glazing business code (the kind that a CS is almost a waste for -- literally this stuff could be farmed out to temps). This implication that the amazing talent in India is doing brilliantly unique code is ridiculous. And what in the world does having a degree have to do with anything? I know non-degreed coders who could code circles around most coders because they have an excellent knowledge of Perl, Python, and other languages, and I know proud degree holders who do have a 'enough to be dangerous' knowledge of how to write a compiler, but who's primary skill is 'OO in Java'. Bah, you're an idiot.
Sat 21 Feb | no name | Dennis, as a matter of interest, do you believe than any degree qualifies someone as a programmer, or must it be a CS degree? If we implemented your suggestion, we would be sacking the top 70 percent of our workforce. Sorry pal. You have to do better than this. Also, Indian staff have poor cultural and communication skills. We haven't traditionally valued this for software development, but it's becoming increasingly obvious how important it is.
Sat 21 Feb | Dennis Atkins | >do you believe than any degree qualifies someone as a programmer No. > or must it be a CS degree? No, it doesn't have to be a CS degree. My flame is regarding the particular case of mind numbing code to translate something into something else instead of doing the right thing, which is to write a compiler to do it if the amount to be translated is more than a tiny bit. You don't have to be a CS student to take a compilers course, its required or optional for lots of other degrees as well. Can find EE, Cog Sci, and Maths students as well in there. Dudes with ITT/DeVry degrees and no degrees don't consider compiler writing to be a everyday basic thing they do. Thus, they attack problems with brute force methods which are inefficient, error prone and take too much time to repeat. Regardless of other thoughts about Indians, they do cover compiler design and implementation in their univ. They are very practical. What you want in a programmer is someone who is lazy. Very lazy. So lazy they would never attack a problem with brute force, but save time by using a time-honored method rather than indulge in the 'innovation' of brute force methods. save the innovation for where it gets you some levrage is what I advocate instead. > If we implemented your suggestion, we would be sacking the top 70 percent of our workforce. Well we've already done that in development but it hasn't done much good because they've sacked the wrong people. But yeah, at least 70% of the people working in development don't belong there.
Sun 22 Feb |   | dennis, I usually enjoy your postings but this time you are beyond incorrect. The whole point of the indian subcontinent is that population density makes compilers unnecessary. You don't need any clever lex and yacc assistance when you have 1000 indian typists banging away for the same price as one compiler expert. Regarding college CS education, you can get up through a master's in EECS at the exalted MIT without ever taking a compiler course. In fact your notion that the only useful programmers are those with college degrees and GPAs above 3.5 is doubly incorrect because any compiler course worth its salt is bound to ruin the GPA of 80% of the students taking the course. These days a strong GPA from a school like MIT signals that the student is very adept at tailoring her courseload to maximize GPA and look good to parents,peers and prospective employers. This is a trait that will take one very far in the corporate world but I'm afraid doesn't improve programming ability one whit.
tips for microsoft interviews? | Wed 18 Feb | Riley Lark
Hi - sorry for the crosspost for those of you who read gamedev.net ~ someone there told me to post here Ive got an interview with MS for an internship this summer. Theyre flying me to Seattle for it, etc etc. Anyone have any tips? I was thinking of bringing a demo of my game so far, but its visually quite unimpressive ( http://boredomprevails.lacking.net/ballchat ). Its got a lot of neat code behind it, though. I would love a professionals opinion about whether or not showing that would help or hurt me (it also connects to a server, which lets you roll around with other people). The game really has no point, except to roll around a lot.. Other tips would be appreciated too. Id really love to get this internship and I hear its really competetive. Thanks!
Wed 18 Feb | nothing | some instruction on how it works would be nice. I see 'A' and 'S' will move it somehow.
Wed 18 Feb | Mike Treit | Read Joel's article on interviewing: http://www.joelonsoftware.com/articles/fog0000000073.html It's very similar to the approach used by many interviewers at Microsoft. If there is a single piece of advice I would give, it's this: be (genuninely) enthusiastic about the stuff that interests you. You can be extremely strong technically, but if you aren't passionate, or just don't seem to care, you're not going to fit in at a place like Microsoft. Be yourself, be upbeat, and don't try to fake what you don't know, and you'll do fine. Good luck.
Wed 18 Feb | C Rose | I would take a few CDs with your game on it. Make sure that, when they plop the CD in the computer, they get a nice menu system to explore the CD (a simple HTML interface will do fine). Let the interface launch the game, and allow them to browse the source code. Make sure there is documentation. Include an overview of what the game is for, functional and UI specs, a user manual, a high level description of the code, a list of known bugs and features to be implemented, the results of any unit tests, and if possible, automatically-generated code documentation (see the Doxygen project). I once got a job on the strength of a similar CD. Most importantly, make sure the code is readable and well-written! Having said this, don't put all your eggs in one basket -- this CD won't win you the job -- but it may help you stand out from the crowd if the interviewers have time to look at the CD. Brush up on your interview technique (get someone to give you a mock interview -- it doesn't need to be technical, just a regular interview will be good). Try to understand what your job will be -- read whatever you can find. Make sure you turn up dressed correctly and on time. Make sure you are prepared for things they haven't told you about, like maths, programming or English tests (take some pens and a calculator etc.). If there's a technical book you rely on ('C++ for Numbskulls in 17.5 hours', for example), take it with you. Prepare questions to ask -- but not just 'what's the pay?' or 'do I get free Cola?'. Be confident -- if you can get the interview, you can get the job. At the end of the interview, say something like 'It was great to meet you today. I've enjoyed talking to you and am still very interested in the job'. This is one of the most important pieces of advice I've been given -- tell them you want the job! Finally, be aware that there is psychological research indicating that hire/no-hire decisions get made subconsciously within about 15 seconds of the start of the interview, so make a good first impression.
Wed 18 Feb | Sathyaish Chakravarthy | No, I didn't go to Google. Over a period, I've bookmarked virutally hundreds of web page links about various aspects of Microsoft, how it is working there, interview questions, jokes, news about Microsoft, bloggers who write about the company et al. Here are a very few of the links, a taaaiiiny fraction of my favourites, filtered for your purpose, so you might find them useful. Some of them may not be point blank relevant, but if you're interested, you can read them to be better a informed candidate. http://www.microsoft.com/careers/faqs/ http://www.4guysfromrolla.com/misc/100798-1.shtml http://www.4guysfromrolla.com/misc/082599-1.shtml http://www.sellsbrothers.com/fun/msiview/default.aspx?content=tips.htm http://www.itworld.com/Career/1826/ITW0314weinstein/ http://www.sellsbrothers.com/spout/#myFirstVpMeeting http://www.c2.com/cgi/wiki?TipsForWardAtMicrosoft http://owt.typepad.com/blog/2003/12/tips_for_workin.html http://research.microsoft.com/news/monthlyfeature/intern.aspx http://www.brandonbray.com/more/archive.html Of course, I am not saying you read this book in order to prepare for the interview, but rather if you're Micro-sick interested in Microsoft, like I am. http://www.kickstartnews.com/reviews/books/ms_in_the_mirror.html http://www.sellsbrothers.com/fun/msiview/ http://www.adequacy.org/public/stories/2002.4.22.221427.313.html Here's a load of Microspeak you'll be getting used to in the parlour. http://www.cinepad.com/mslex.htm And if you're like me, you'll also enjoy reading some Microsoft Jokes. http://www.jokeindex.com/cat.asp?Cat=50 http://www.mslatam.com/latam/jobs/testimonials.asp I don't know how true this is, but a glimpse into the history of Windows is here http://www.neowin.net/articles.php?action=more&id=53 and a part 2 is here http://www.neowin.net/articles.php http://blogs.gotdotnet.com/LauraJ/PermaLink.aspx/031051fe-5929-4cdf-b461-08301ff08514 http://weblogs.asp.net/rwlodarc/archive/2003/04/13/5543.aspx http://www.themicrosoftexperience.com/default.htm http://radio.weblogs.com/0001011/2003/09/20.html http://radio.weblogs.com/0001011/2003/04/15.html http://www.wininsider.com/news/comments.aspx?mid=62 These are posts on a blog from the Working at Microsoft category, not all of them are relevant, but you'll find some tips: http://blogs.gotdotnet.com/i-markj/categoryview.aspx/Working%20at%20Microsoft And Uncle Philo's the Aunt Agony for the microsoft experience: http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=96782&ixReplies=11 And this book, is written by the grand-daddy of one of our posters on this forum. http://www.fool.com/portfolios/rulemaker/1999/rulemaker991220.htm More jokes on Microsoft. Read after your interview, please! http://www.twoguys.org/~gregh/ms/ If you want to read about Bill, then http://membres.lycos.fr/patrickgelinas/bio_e.html http://inventors.about.com/library/inventors/blbillgates.htm?once=true& http://ei.cs.vt.edu/~history/Gates.Mirick.html http://web.quuxuum.org/~evan/bgnw.html http://www.microsoft.com/billgates/default.asp http://www.microsoft.com/billgates/speeches/04-13mit.asp will be useful. How they commemorated 25 years of existence: http://www.microsoft.com/presspass/press/2000/sept00/celebrate25yearspr.asp http://www.microsoft.com/presspass/features/2000/sept00/09-0525book75.asp http://www.microsoft.com/presspass/features/2000/sept00/09-0525bookfs.asp Microsoft Groups: http://uk.groups.yahoo.com/group/microsoftefans/ Voyuer at some executive mail doing rounds in the company: http://www.microsoft.com/mscorp/execmail/ http://www.microsoft.com/college/diversity/keith.asp Here's some basic inside information on the company: http://www.microsoft.com/museum/musStudent.mspx A rant or two: http://www.zefhemel.com/366.php http://archive.salon.com/sept97/21st/apple970925.html http://archive.salon.com/sept97/21st/gates970925.html Some news stories: http://www.salon.com/tech/special/microsoft/ Here's a profile of a Microsoftee along with a few words he has to say http://www.sfu.ca/~nickb/docs/coop_reports/MSreport.html You'll find a few articles of interest in these pages: http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=97866 http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=20567 And I forgot, a hearty congratulations. Don't forget to recommend me when you're on board.
Wed 18 Feb | Froggy | Sathyaish, you look really interested in working for Microsoft. May I ask, what is it about the company that attracts you to it?
Wed 18 Feb | Sathyaish Chakravarthy | Let me draw an anology: When I was young, my granny put me to bed telling me about how Robin Hood redeemed the poor from their misery. I slept every night with the seed of thought dreaming the boon of fulfilment, and my admiration for the hero grew by leaps and bounds. At the age of 8, I was reading comics on the character. In school, I told stories of Robin Hood I had heard from granny to my chums. When I was in grade 12, I went to see Robin Hood, the Prince of Thieves and I was bowled over by nostalgia. By the time I graduated, I wanted to do study Robin Hood and join theatre doing Robin Hood plays. At the age of 28, I set out to Hollywood with a script in my hand seeking a director for my next sequel to Robin Hood, the Prince of Thieves. What's not amazingly fascinating about Microsoft? All that I want; great tools to work on, I've been stuck to the VB camp, not because I am a dullard who's scared of adventure. I just didn't have the funds and the exposure. I couldn't afford a computer at home for years. Today, when I can, I won't buy it because I have other pressing obligations. So, in a way, I still can't afford it. I enjoyed Unix one time, was an expert with vi creating C++ programs, but then one day, I had to quit the lab and plunge into public for the battle of bread. Microsoft has it all, the technology, the brightest of people, flexible working hours, great sops for the nerdy types, booking movie theatres on weekdays to pamper you if you perform, they leave you alone to your work, they don't mind if you don't have a life, they are ***really*** really*** good at creating software and they **truly** know how to take care of the geek-head. Oh! what's the word limit here? And I am not that fast at typing. I think hell for leather.
Wed 18 Feb | Sathyaish Chakravarthy | 'What's not amazingly fascinating about Microsoft? All that I want; great tools to work on, I've been stuck to the VB camp, not because I am a dullard who's scared of adventure' You can see the hiatus, I just brain farted there, racing against thoughts. I have a million more words to add to that, but no patience. And then blame it all on Joel too. He filled my ears and now I can't help it. I've led myself to a point of no returning reading a load of pages.
Wed 18 Feb | Riley Lark | Wow, thanks a lot for all the info!  Went to sleep for 8 hours and everything I could want to know is here ;)
Wed 18 Feb | B | You dont wanna be an STE.
Wed 18 Feb | Sathyaish Chakravarthy | :You don wannabe an STE Expand! Saint (French) Secure Telephone Equipment Secure Terminal Equipment Secure Transmission Equipment Senior Technical Editor Shift Test Engineer Shipboard Test Equipment Simplified Test Equipment Societe (French: Society) Software Test Engineer Software Test Environment Software Test and Evaluation Solar Thermal Electric Spanning Tree Explorer Special Test Equipment Stability & Equilibrium Data Staff-years of Technical Effort Standard Test Equipment Star Trek: Enterprise Suite (US Postal Service) Super Transmittance Eyepiece Support & Test Equipment Suprathermal Electron Telescope Surface Terminal Equipment Synthetic Task Environment Synthetic Training Environment Syrian Telecommunications Establishment System Test and Evaluation
Wed 18 Feb | Clutch Cargo | Taking the game along can't hurt, but I doubt you'll get to show it to anyone. Microsoft employees have those stupid little interview questions they like to ask. They think it's smart, but it's really dumb.
Wed 18 Feb | Elephant | Software Test Engineer
Wed 18 Feb | Laurel | Make them sign a EULA to read your resume.  Make them sign a NDA for your interview.  They'll hire you for sure cause you got the attitude.
Wed 18 Feb | Pavel Levin | If you are interviewing for an SDE prepare to write code on paper (i.e., coding questions - implement a function) and logic riddles. If you are interviewing for a PM prepare to do customer/PM role playing, solve logic riddles. MS says that when it comes to internships, they have a certain level that you must satisfy. If you are above it, the internship is yours, irrespective of proficiency with particular technologies. Also, THINK ALOUD. It's very important. MS interviewers stress that it is more important for them to her you think, than just get the right answer. Good luck.
Wed 18 Feb | Riley Lark | I'm going for the SDE position, although I don't know with what group yet.  I'll let you guys know how it goes :)
Wed 18 Feb | Froggy | Sathyaish, That's a noble aspiration indeed. The comparision with Robin Hood is most interesting ;-) Perhaps with the passion that you have, you may get what you want one day. B, I've got to ask: Why not an STE?
Thu 19 Feb | Eric Lippert | > Make them sign a EULA to read your resume. > Make them sign a NDA for your interview. > They'll hire you for sure cause you got > the attitude. I'm assuming that was a joke. If not, lemme just take this opportunity to say that there's absolutely no way that an interviewer will sign an NDA or EULA for anything without getting the legal department involved. That would be an immediate 'no hire' if someone tried to pull that on me. To actually answer the question: when I interview interns I care about the same things I care about with full time interviews. * smart * gets stuff done * can write code which are of course the same things that Joel talks about in his article. But with interns, there are two main differences. First, I am much more interested in long term potential due to raw intellectual horsepower than specific knowledge. Second, I am much more inclined to take risks when hiring interns because, after all, its only for four months. If it doesn't work out, it doesn't work out. If you do get an internship, keep three things in mind: 1) Intern mentors LOVE 'self starters'. My last intern was a dream come true. We'd give him some vague ideas and he'd consult with the other interns, bounce ideas around, write a spec, write the code, test it, everything. I'd just stick my head in the door a couple times a week to make sure he was still on track. He ended up getting a job offer when he graduated. 2) The internship is a four month long job interview. But don't forget that you are interviewing the company as much as we are interviewing you. Lots of interns find out that they'd rather work at a small company, etc. 3) Have fun! I was an intern three times and I had an absolute blast every time. Good luck!
Thu 19 Feb | Eric Lippert | > Microsoft employees have those stupid little > interview questions they like to ask. They > think it's smart, but it's really dumb. Why's that, Clutch?
Fri 20 Feb | WildTiger | I would not recommend trying to show your project yourself. If the link was in your resume one will ask you about it so you have chance to tell how fun it was to write one. Don't even try to show source... And if you write all 7 programs from Joel's article just say so when you get one of this. Ask someone to read Joel's article and then interview you...
Sun 22 Feb | Riley Lark | 'I would not recommend trying to show your project yourself. If the link was in your resume one will ask you about it so you have chance to tell how fun it was to write one. Don't even try to show source...' Do other people agree with this? I was planning on bringing 2 different versions of my resume - one with a CD stapled to it, and one without, and saying, 'I brought along a CD with some of the work I've been doing recently on it - can I give you a copy?' I figured that was low-pressure if they really didn't want to spend the time on looking at it, but on the chance they DID want to look at it it would be there. Interview in 5 days.. getting excited :)
Webby Awards - vote for JoS | Fri 20 Feb | Prakash S
If you think JoS is a cool community vote for it on Joi Itos site: http://joi.ito.com/archives/2004/02/21/help_me_find_sites_for_the_webby_awards_community_category.html Personally I have learnt a lot from Joels articles as well as the smart people who hang out here. Cheers,
Sat 21 Feb | Li-fan Chen | JoS doesn't deserve the Webby Awards, if you know anything about the Webby awards.
Sat 21 Feb | Prakash S | I was under the impression that webby recognizes Good stuff on the web. From your post I concur that it is exactly the opposite. Oops:-) But then there is no such thing as bad publicity!
Sat 21 Feb | Mark Hoffman | Well, it's not too hard to see what the Webby Awards are for: http://www.webbyawards.com/main/ It's not a bad thing to win one, but I'm not sure of JoS is the type of site that they are looking for.
Sat 21 Feb | Philo | Good lord - it's an award by graphics ad geeks for graphics ad geeks. It's like the anti-Joel awards (form uber function) The miniusa.com site that won their Business award is AWFUL. Yeah, it's pretty, but the home page is flash, it's got sound everywhere (including an annoying cheering noise on the actual homepage) it uses a fixed-size popup... I'd have to say it may in fact violate just about every business usability rule there is... Philo
What customer asks for != what customer wants | Fri 20 Feb | Alyosha`
... and a good example of that is Joels recent complaints about not having a linker in VS.Net. Actually what Joel is complaining about is that .Net apps are harder to install and hes worried about DLL version incompatabilities. Joels thinking, Ive always solved this problem by linking everything into a monolithic binary! I dont care that it takes hours to download over a 56K modem. Everyone has broadband anyways and they cant be bothered with a 20 meg download. I dont care that my app eats megabytes of RAM. I dont care that its not easily bugfixed or security patched. All I care about is that its easy to install and that it works right out of the box, doshgarnit! Microsofts over here trying to convince Joel ... hey, just distribute the CLR on the same CD as your app, or download it from the web. One click installation, no problem! Response? A linker! why cant I have my LINKER?!?! Sorry, Joel, Microsoft cant satisfy everybody especially when they have a preconcieved solution to a problem ...
Fri 20 Feb | son of parnas | How is the problem of drop dead simple install being solved? That's the requirement, not a preconceived solution.
Fri 20 Feb | Alyosha` | You're missing the point. Joel is arguing that a linker is a requirement. But it's not. It's a solution. The requirement is drop-dead easy installation. Now, granted that MSFT could make it a lot easier to bundle the CLR with an app ... but that's not a problem related to not having a linker ...
Fri 20 Feb | Robert Jacobson | I think Joel's chief 'requirement' is a smaller download package, not a linker itself. Unfortunately, the 25MB size of the Framework Redistributable will make it a PITA for users with 56K modems to download. I think .Net is great, but it does have its tradeoffs. If 'easy distribution over 56K modems' is high on your list of priorities, then .Net probably isn't the best choice for now. That will become less of a problem over time as the installed base of the CLR increase.
Fri 20 Feb | Dan Brown | I work for a co. that sells apps to non-developer end users. There's a TON of people out there running 56K modems and Pentium 300s.
Fri 20 Feb | son of parnas | I didn't miss the point. Has there been another suggestion other than a linker that fits the requirements? If not then we can talk about just the linker without loss of clarity.
Fri 20 Feb | pdq | SoP, your right, but so is Joel in his most recent post. THe microsoftie tried to persuade him why a linker is a bad idea rather than what they are doing to get the CLR out to everyone. I believe the answer is/was to put the CLR out with XP and Office. I'd feel more comfortable writing apps on dotnet (esp VB.net) if MS would release an application that used it for something. I'm not asking for Word to be rewritten, but add some feature that requires the runtime and it will be everywhere sooner.
Fri 20 Feb | pdq | Oh, and you better be right when don't listen to the customer and give them something that really is better than what they've asked for. Unjustified arrogance tends to be punished by the market eventually.
Fri 20 Feb | Alyosha` | Quoth the Joel ... 'What I need is probably five or six MB, at most'. So a 25 MB download may lengthen the process a bit, but not by an order of magnitude. And they were going to need the runtime at some point anyways ... So Joel doesn't like manifests. Says he, they are 'manifestly complicated'. Well, linkers are pretty complicated (UNRESOLVED SYMBOL!? WHAT UNRESOLVED SYMBOL?! OH, AND THIS IS A DLL IMPORT LIB? YOU MEAN I'M NOT ACTUALLY LINKING ANYTHING?) but given that I've worked with them for a decade I've lost most of my fear of them. So I say, buck up and learn something for a change. Please sir, can I have an easy-to-use configurable downloader/updater of the .Net components I use?
Fri 20 Feb | The real Entrepreneur | Once again, I'm drooling over Delphi (and RealBasic) 's ability to create a stanadlone EXE.  Easy to install. No versioning issues (in most cases). Small download size. (Fairly small in RB's case , at 1.5 MB+, tiny in Delhi's case:  40K and up)
Fri 20 Feb | The real Entrepreneur | Microsoft's answer to the dll hell problem is .net. Bill G talked about how he wanted 'zero impact installs' so that people could try software and undo the install if they didn't like it, without impacting the o/s. But it's like saying 'oh, you want a 2'x2'x2' hole in your backyard, to plant a small tree?'. I can do that in 30 seconds. But, you'll have to install BackHoe 2.0 in your backyard first. Everybody's going to have a Backhoe in thier backyard soon, so just go ahead and install one now. I read a great thread on some backup software (the Partition Magic folks' new backup prog). Someone was screaming about the software and then realized that it was DOT NET that was the problem. He installed it and it screwed up his computer (or so he thinks, anway). Bottom line is that b/c the prog was developed in .net he may never use that program. AND he's giving it a bad rap on the net. Users don't care about the technology...unless it screws up thier computer.
Fri 20 Feb | Mark Hoffman | 'He installed it and it screwed up his computer (or so he thinks, anway). Bottom line is that b/c the prog was developed in .net he may never use that program. AND he's giving it a bad rap on the net.' Well, that doesn't really mean much. There are 4 bazillion post a day that blame all kinds of software, patches and operating systems for their woes. This is just one of a million.
Sat 21 Feb | Chris Nahr | Besides, it's just the same crap that all the old DOS gurus kept throwing at Windows for the first 10 years of its existence. 'GUIs are evil! Windows is bloated! Nobody needs multitasking! Why can't I have a simple DOS program that fits on a single floppy? Have you seen how big Hello World is in Windows? OMFG!' This is just another big technology transition, and such things take time -- they always have. You may not want to jump on the train right now depending on your customer base, but you can't expect the train to wait for you. Does anyone still mourn over lost customers who wouldn't upgrade to Windows back in the 90s?
Sat 21 Feb | no name | look, you do not need to publicise your download executable size only after they used their credit card.
Sat 21 Feb | The real Entrepreneur | Not if 50% of your sales come from trials that converted to sales. Also, some people will still still balk, even after they have paid. I had a customer who's son *thought* our CD had a virus on it. They refused to use it. (I double checked and there was no virus on it). My point is that you have to make things as EASY for the customer as possible. That's what customers (including me!) want and need. That's what they'll pay for.
Sat 21 Feb | Christina | What a customer wants What a customer needs Whatever makes me happy and sets you free And I'm thanking you for knowin' exactly What a customer wants What a customer needs Whatever keeps me in your arms And I'm thanking you for giving it to me What I want is whatcha got And whatcha got is what I want
Text-editor as Application-Scripting-Framework | Fri 20 Feb | Benji Smith
Im not personally crazy about the emacs text editor. I use it periodically, and its my default choice of text editors whenever Im working on a *nix machine. But I feel much more at home in an editor like TextPad (here: http://textpad.com ). Everyone has their own favorites. Horses for courses. [NOTE: please do not let this thread turn into a best-text-editor-ever flamewar ] But, what I _really_ like about the concept of emacs (and what I want to discuss in this thread) is that, deep in its heart, emacs isnt really a text editor: its a lisp interpreter, on which text-editing tools have been built. So, if youre a lisp programmer, you can build fantastic things on top of emacs. You can build _exactly_ the kind of text editor that most suits your needs. Unfortunately, Im not a lisp programmer. And Im not interested in learning lisp. Not at all. But I like the concept of using a general interpreter framework as the core of a text editor (or as the core of a whatever-editor). What Id like even more would be if the scripting framework was abstracted away from the text-editor layer. Id like to be able to swap out a lisp interpreter for a Python or Perl or JavaScript or php interpreter. In an ideal, magical world, Id like to be able to write a page or two of code in Python or Perl, to turn TextPad into a specialized XML editor. Or maybe I’d like to add a WSDL wizard. Or a spreadsheet editor (much like ses is a spreadsheet editor for emacs; see it here: http://mywebpages.comcast.net/jyavner/ses/ ) Frankly, it surprises me that something like this hasnt been developed yet. Emacs was originally written in 1976, and by 1978 it was re-implemented in MacLisp, making it easy for users to extend the application by writing their own lisp routines. So the concept of text-editor-as-application-scripting-framework has been around for over 25 years, but I dont think anyone else has done much since then to advance the concept to newer and more developer-accessible (read: non-lisp) applications. Thoughts?
Fri 20 Feb | Benji Smith | To clarify... There are lots of text-editors that have scripting-languages grafted onto them after-the-fact, allowing users to write some of their own custom functions. But that's not really what I'm talking about here. Other than emacs, I know of no other tool that makes its _entire_ object model accessible to user-scripts, so that plugin-authors can drastically modify the core behavior of the application, without having to touch the original source code of the core engine. That's what I'd like to see. But I'd like to see it in something other than lisp.
Fri 20 Feb | K | Interesting that you bring this up ... I have a common library that I use for many projects, which includes a Lisp interpreter that I've written. In addition to the Lisp interpreter, I've written a parser generator that takes arbitrary context free grammars as input. Then I put the two together, so you can define arbitrary CF grammars in Lisp and do your programming in whatever language you like (which essentially gets translated into Lisp code). It's a very common pattern, I'm sure that other people make frequent use of it too.
Fri 20 Feb | Roose | Slickedit is pretty much built like that. It is all written in Slick-C, even much of the GUI elements. However the bad part is I don't like this specialized language, it would have been nicer if it was an existing language. And the code is very procedural and cryptic. But, I have to say, the editor is VERY fast, though almost all of it was written in this interpreted language.
Fri 20 Feb | C Rose | Check out jEdit at http://www.jedit.org It's not as customisable as Emacs, but it's a very good text editor. As it's Java, you can get it for a wide range of OSes, and it's the same one each.
Fri 20 Feb | surfer | What you do is build a framework for editing, indepenent of editor.  And a program (in any language) could be written to convert them into LISP for emacs.
Fri 20 Feb | Phillip J. Eby | Actually, I think jEdit is almost as customizable as Emacs is. And you can use either Jython or BeanShell to script its *complete* object model, since all the objects are written in Java. jEdit plugins have to be written in Java, but those plugins are also scriptable from Jython and BeanShell.
Sat 21 Feb | Matthew Lock | How about customising MS Word! Almost its entire object model is exposed in VBA.
Sat 21 Feb | has | 'What I'd like even more would be if the scripting framework was abstracted away from the text-editor layer. I'd like to be able to swap out a lisp interpreter for a Python or Perl or JavaScript or php interpreter.' You might want to read up on Apple's Open Scripting Architecture. (Wrong platform, I know, but it may give you some ideas.) One of their more misunderstood, misrepresented and often neglected technologies (not helped by frequently lousy documentation and various design/implementation flaws that were never thrashed out; probably not helped by Apple mgt killing the dev team shortly after the initial release). Some terrific ideas behind it though, and can be wonderful when it works right. Here's a good introduction/overview: http://www.cs.utexas.edu/users/wcook/papers/AppleScript/AppleScript95.pdf Basically, the Apple Event Manager provides a high-level inter-/intra-application RPC mechanism. AEM defines a bunch of basic data types, plus a query-based mechanism for representing application object models. Any language that can talk to the AEM can control any application that provides an Apple event-based scripting interface. The OSA component is used to componentise scripting languages (see also the Mac OS Component Manager, which appeared in System 7) and provide a standard API for applications to load/execute/store scripts written in any OSA-compatible language, send events to them, etc. -- One of my favourite examples of the OSA's [largely unrealised] potential is the Smile application. http://www.satimage-software.com/ Nominally marketed as an AppleScript editor, it's really a platform for building custom applications (the company that develops it, Satimage Software, use it in CAM systems). Based around a relatively small C/C++ core with a fairly large and flexible scripting interface, much of the Smile application itself is implemented as script and GUI objects attached to this. Somewhat eccentric in appearance and design, but surprisingly deep and powerful - and its OSA support means you can hook it up to any other OSA-compatible applications and/or languages as you like. If you can blag a Mac sometime, it'd be worth a poke around its innards for a rough feel of how it's put together [1]. Or d/l the developer docs and have a browse through those for your interest. -- BTW, you'll often see the whole OSA architecture misleadingly referred to as 'AppleScript', btw. In fact, AppleScript is merely one of a number of scripting languages that has AEM and OSA support; it just happens to be the de-facto standard language for doing Mac IAC, having shipped with the OS as standard since 7.5. The AppleScript language is also heavily bug-ridden and severely underpowered (not really surprising given years of neglect), with a wide range of design flaws from minor to severe [1], but don't let this put you off OSA itself; it's much better than this unfortunate historical mal-association suggests. Besides, positive developments are starting to happen on the third-party front: Perl's Mac::Glue is starting to get some attention (see the recent perl.com article on it for starters); and various folk are quietly working on nicer frontends to AEM and the OSA component. (e.g. I'm working on a Python-AEM bridge myself - see http://freespace.virgin.net/hamish.sanderson/appscript.html - plus a generic spec for developing AEM bridges for other languages.) -- [1] The scripting's all done in slightly eccentric and poorly commented AppleScript code that takes some effort to read in detail, but a quick overview's all you need. [2] Including - but by no means limited to - clever-clever compiler trickery that frequently backfires on users, far-too-premature name binding, muddy semantics, atrocious whack-a-mole namespace pollution, scads of syntactic synonyms and homonyms, no native module mechanism. (Admittely, there are some nice ideas behind it, but the actual implementation is a right old lemon.)
Don't be funny | Fri 20 Feb | John Fisher
Joel advises to make your specs fun to read. In the consultancy jobs I did (big companies) I never found one document that was funny. I found that humour in documents is not accepted. When you want the system to work for you, I would advice you *NOT* to be funny. With regards to humour and behaviour I went to the following process: I always tried to work as hard as I could to contribute to the developing process. Always doing the extra mile. When I discussed my own work with others I never bragged about it. No matter how hard I worked, I always tended to make a joke about my work. Laugh at my own shortcomings. In discussing problems with managerial types, I just bluntly told what I thought. I meetings with management I sometimes made remarks which caused seconds of silence. Everybody thought the same but me, Mr. Blunt throw it out. Most people like me and lot of them feel completely free to tell me whatever they want. Nice stories, but also complains, gossip, conflicts with management. After a while I heard too many negative stories. And I got fed up with it. I also got fed up with myself being the nice guy, always in for a joke. The first one to go to when you do have a problem but you dont have a budget. Mr. Nice will help you. Also the last when it comes to delegating responsibilities. Handing over budget to a clown? I wanted to shut my mouth for a while. I knew I could make people laugh and work my ass off, but what was in it for me? I just talked too much. Then after a while I changed my behaviour to my colleagues a bit. I kept my mouth shut for two days. I heard well-known topics from others: Their salary is too low, the manager does not know what he is talking about, Mr. X is an overpaid blah, etc. etc. As kind of an experiment I just started to make positive remarks about my company when I heard somebody complain about how stupid management was acting. No, I do not agree with you that the salaries are too low. I did agree but I just could not hear the talk anymore. I made some other artificial changes in my behaviour but it felt like a relief. So when you want to make progress in a (big) company, this worked for me: 1) Never make a joke about work you did. Be bloody serious, when you talk about work 2) Dont talk negative about management with colleagues. Nothing changes and you will just get sick of the complaining. 3) Dont talk negative about one of your team members. Kick one out, but dont talk about it. 4) Speak slowly and low. (I experimented with it, it really works) 5) Try to avoid rants about politics as much as you can. 6) When you hear something negative about a person bring up some good news. 7) Dont write funny documents, only produce humourless unreadable papers. 8) When somebody is reporting to you about work status, just try this cheap trick: Dont say a word. What happens: after 10 seconds the person in front of you will start to make excuses why he/she did not get any further. 9) Did you made a big mess of your project? Ignore it. On many projects it is not clear who is exactly responsible for what. Who is going to take the hard knocks? Just the one that looks guilty and nervous and works late. 10)On most jobs nobody measures contributions from team members. Just go to bed early. Let it burn. Are you going too feel plastic after a while? It feels a bit unreal but you wont miss anything. When I did this my salary more then doubled, suddenly I had leading capacities, my colleagues stopped telling me negative stories and I feel a lot better. I can imagine lots of situations were it doesnt work My 2cts. kind regards John Fisher
Fri 20 Feb | Li-fan Chen | That's pretty cynical, but tell me more about the high wages.
Fri 20 Feb | Josh No-Spam Jones | Li-Fan, That is the funniest reply I could possibly imagine to that post!
Fri 20 Feb | John Fisher | Not that impressive, about 80 K dollars a year.
Fri 20 Feb | Patrik | >1) Never make a joke about work you did. > Be bloody serious, when you talk about work I did once. Its ok if you poke fun at yourself. I wrote both the program and the documentation, and I added some humor into the document. Got no reactions on it, either good or bad. So I guess people really does not read the documents you deliver anyway. It does not matter is my take on it. Shall I tell you about the high wages? ;-)
Fri 20 Feb | The Original Anonymous Coward | Yes, Patrik, do tell us about the high wages, the women, the power, etc. Our inquiring minds really want to know.
Fri 20 Feb | ajs | For some screenshots used in a manual I once put the Name / Company info as Jim Jones / Kool-Aid Ltd. Would have been declared as 'not funny' had anyone noticed. Anyway, who reads specs or manuals?
Fri 20 Feb | Nick | Joel's advice on adding humor to specs comes from a different perspective than most of ours. He runs his own company. Most of us don't. I used to work for a medical device manufacturer. The people who pay the most attention to the SRS's are the FDA auditors - the single most humorless group of people on the face of the planet. Unfortunately, as a formerly 'good-natured, humorous guy' I have to agree with the OP's 10 points above. My experiences echoed his -- especially once I made it into management.
Fri 20 Feb | Nick | Also, re 2) and 3): Dont' hang out with people who are known for being negative. It has a tendency to bring you down, and you get a reputation for hanging out with malcontents. I once had an excellent worker on my team. I gave him a good review and raise. My manager questioned it because he knew that the guy hung out with Malcontent #1 at the company. Against my arguments he knocked the guy's review and raise down a few notches.
Fri 20 Feb | hoser | Another goto guy.  Will wonders never cease?
Fri 20 Feb | Nick | 'Another goto guy' No. I got laid off from the management position. Had I followed the 10 points, I'm pretty sure I wouldn't have. I got pulled into a VP's office one day and told that they basically wanted me to be an asshole. The VP showed me a memo she had written to one of the teams. It it, she told the team that if they didn't accomplish a Herculean project in 2 months, they'd all be fired. I knew people on that team. Some of them were single parents. Yet to keep their jobs they needed to work 15 hours days, 7 days a week for 2 months. The VP didn't give a shit. She told me that writing memos like that were 'fun'. She got a 'charge' out of it. I knew that I could never and would never be like that. Six months later we had our 5th round of cuts, and I won the layoff lottery. Oh well, crappy place to work anyway. But one thing I did learn from that place was that trying to enliven the atmosphere with a little humor never got you anywhere. At some companies, even if you produced and your team produced, you just don't get taken seriously by upper management if you don't have a game face on 24/7. Thank God not all companies are like that, though.
Fri 20 Feb | trollbooth | Can I come to your office and remove the carriage return please?
Fri 20 Feb | Philo | Indeed. I'd like to welcome ee cummings cousin to the forum... Philo
Fri 20 Feb | ee | Whatup, 'cuz?
Fri 20 Feb | MacSqueeb | From one early on in his carreer: thank you for the good advice. Slightly off-topic, but does anyone let humour show in their code comments? I'm not talking about immature tactics that obfuscate the meaning of the code or the comment, but I tend to let unexpected ajectives/adverbs from my stream of conciousness creep in, or occasionally insert 3-13 lines of that same stream.
Fri 20 Feb | hoser | Sorry, not you - the original poster.
Fri 20 Feb | M | What mixed advice. Have fun at work. If others don't want to have fun, screw them, but I value a fun work environment over a chance to cow-tow to upper management and double my salary in three weeks. Fun does not mean being unprofessional! Keeping promises and working hard are not incongruent with having fun. I do agree with ignoring the negative nelly's. As Covey says, changing one's behavior does not lead to meaningful relationships. You must base your actions on principles. Of course if you don't value relationships with other humans, do as you will.
Fri 20 Feb | Richard P | Well, I nobody likes people who laugh at their own jokes.  The best way is to pull a Tyler Durden; slip humor/porn in almost subconsciously.  Think "plausible deniability".
Fri 20 Feb | Les C | i appreciated your comment philo even if no one else did
Sat 21 Feb | no name | maybe this 10-point game helped you to achive 2x salary, but maybe there is an opposite solution (be nice) that would make it 3x. which one would you choose?
my bizarre firing situation. comments? | Fri 20 Feb | nepotism rules!
Hi, here is what happened to me: 9 months ago I got hired as a contractor by a buddy of mine who is a VP at a local research branch of a huge megacorporation. The project I was working on, I had to work with a manager person, who hates my guts. I dont really like him, either. It is a typical nerd ego thing. This manager person is about 1 rung down on the org chart from my VP friend. Anyway, my VP friend went on vacation for two weeks. During those two weeks, the manager guy decides to fire me. His exact words were Im very happy with your work, but our working styles are incompatible. The manager guy had everything pre-arranged with accounting and IT so that I was completely vaporized within 2 days. I didnt really have much to say about this, as I sort of anticipated what was going to happen next... Im just farting about this past week, doing nothing, enjoying life, etc. My other friend at the company informs me that when my VP friend returned, shit hit the fan and there was a huge battle between VP friend and the manager who fired me. The manager who sacked me replaced me with some permatemp employee who apparently is known for playing yahoo games all day. In any case, there was zero wind-down time for me to show this guy how to do anything. He not only will have to learn what I did, he will have to learn how to use the toolkit I used, program in C#, learn SQL, figure out how to do a huge data migration, and so forth. Even if the guy knew what he was doing, I would anticipate it would still take a few months before he would feel comfortable and productive. Anyway, I just received some e-mail from my VP friend wanting me to come in, re-negotiate my contract, and start working again. My inclination is to politely tell my VP friend that Id rather not deal with this situation, and Im sorry that I cant help him out. I have about 2 years worth of living expenses saved up, and a family business I could go work at if I cant find another contract in 2 years. However I feel bad for my friend, and would like to help him out. I also feel somewhat uncomfortable abruptly stopping a project mid-stream. I just dont want to work with this manager person again, and to be honest would rather just go visit my sister who is living abroad than deal What would you do? Any humorous comments? Im just sitting around in an internet cafe, looking at plane fares...
Fri 20 Feb | Matt H. | I'd get something in writing about never having to deal with the manager dude, and a raise. At that point, the manager dude will have soooo much egg on his face he will either leave you alone completely, start quitely looking for another job, or try to make your life hell. If he tries to make your life hell, well, you've got a written contract and some documentation at this point. All he can do is to try to influence the -other- people that work with you to get -them- to be hard on you. Once they see through it, they won't play, and, besides that, he's building an HR case to get him fired. I may be alone on this one, but I would consider stepping into the lion's den, but my sense of justice is overblown, and I find it hard to live with things (like firings) that I did not deserve. YMMV ...
Fri 20 Feb | Bathmophobic skier | I'd go back provided I wasn't working for the same sh*thead.  Otherwise, why bother?
Fri 20 Feb | Fernanda Stickpot | Why not tell your friend you'll be visiting your sister for a few weeks and then you'll come back and help him out? Or vice versa. He helped you by giving you the job, and I'm sure he would rather not deal with the unpleasantness either, so one good turn deserves another. Not that you have to, of course. I'm just thinking it would be very nice of you if you did.
Fri 20 Feb | bpd | If your VP friend want to re-negotiate, what's the harm in listening to what he has to say? I certainly understand you not wanting to work for the manager guy anymore, and perhaps that will become part of what your friend addresses. You've nothing to loose by finding out - except, perhaps, a couple of hours of your time. In my opinion, if you like the work and, for the most part, the people (exception noted) then it's worth finding out.
Fri 20 Feb | nepotism rules! | Oh I'll meet up with them for sure. Just wondering what other people think of this situation, and how you would handle it.  The work is work. Not thrilling, but I've had far worse jobs. I don't *need* the money, but money is money, and it can't hurt to have more of it. 
Fri 20 Feb | T-90 | If I were really confident about my ability and the managers incompetence, I would politely decline the offer while assuring my friend that I'd be there whenever he needs me. Then wait and watch as the manager tries to keep up with the loss and starts screwing things up. *That* would be the best time to go back. By that time, either the manager would've quit, or he would be (hopefully) sensible enough not to mess around again. PS: Friendship should come above everything else.
Fri 20 Feb | apw | 'By that time, either the manager would've quit...' or be promotoed to VP :)
Fri 20 Feb | Dan Brown | You possess one of the greatest powers an employee can know: Not giving a f*ck because you don't need the job. I would definitely push for a raise out of this, and if you have to work with the manager again try to get your VP friend to give you some leverage points.
Fri 20 Feb | David Fischer | 'I don't *need* the money, but money is money, and it can't hurt to have more of it. ' It sounds like you have financial independence and great freedom right now. You have the opportunity to find not just 'a job' but your calling in life. How about pursuing a your passion, and not just a mediocre job for a few more bucks.
Fri 20 Feb | nepotism rules! | I have about 2 years of financial independence, living a reasonably simple life. I'm not living paycheck to paycheck but I'm certainly not rich, either. There are many things I'd like to do - travel the world, move to lake tahoe, learn chinese, '2 girls at one time,' etc. However I am relatively pragmatic after going through periods of total financial irresponsibility, and know that saving more money can't hurt. I do sort of view this abrupt firing as a window of opportunity to jump start a change in my life, but what exactly that change will be, I'm not sure! I missed my window of opportunity to become a professional skateboarder. Finding that secondary life's passion is more easily said than done! ;-)
Fri 20 Feb | Name withheld out of cowardice | Assuming your description of the situation is accurate here is what I would do. I would reneogiate the contract. I would ask for a 40% increase but settle for 25%. Above all, as a precondition, I would insist that the manager who fired me be terminated. Once again, assuming your description is accurate, this guy needs to learn a lesson and as many times as I have fantasized about teaching such, I have never had the opportunity to so do. Please....
Fri 20 Feb | Kyralessa | Don't insist the guy be fired. That lacks class. And your VP friend surely already _knows_ the guy needs to be fired, so I think you'll come out ahead in his and others' estimation if you don't pull your weight for something like that; there's nothing admirable about getting people fired, not matter how much they deserve it. I agree with those who said to go for the raise and the guarantee you won't have to deal with him anymore.
Fri 20 Feb | The real Entrepreneur | What would you need to *want* to work there? IMHO, your friendship to the VP just means you owe it to him to listen to his offer. As long as there are ill feelings between you and your old boss, I don't know if you can MAKE him behave in a way that will be comfortable for you (at least it wouldn't be comfortable for me). So, *I* might want to report to someone else. Could they transfer oversight on the project to another person?
Fri 20 Feb | Fernanda Stickpot | I second Kyralessa's emotion. It's really not your place to request that your friend fire one of his employees. If I were you, I would avoid discussing your conflict with this guy at all except in the most value-neutral and factual terms, and then only when you have to. This other guy has already demonstrated his jerkdom by behaving like a jerk. If you maintain a saintly refusal to bad-mouth him, imagine how fabulous you are going to look in comparison.
Fri 20 Feb | pds | Everyone loves options. One option no one else has mentioned is to offer to help the next guy continue your project. Explain your design decisions, get some time to document your code a little more, whatever else I can't think of. You can then get higher pay, you can still help your friend out by keeping the project alive, and you don't have to work there for longer than ... however long that would be. Less than a month, for sure, right? Anyway. Everyone loves options, so the more viable options, the better.
Fri 20 Feb | pds | Oh, and a little bonus: by coming back in to help the next developer, your VP friend can put a minimum dollar amount on exactly how much it cost to switch developers midstream: Additional cost = (calculated)[amount you billed extra] + (incalculable)[loss of productivity from new guy]
Fri 20 Feb | Bob | > '2 girls at one time,' kind of goes without saying, doesn't it?
Fri 20 Feb | id | 'I missed my window of opportunity to become a professional skateboarder' Why is that? I mean why can't you do it now?
Fri 20 Feb | Name withheld out of cowardice | Insisting someone be fired as a condition of your return lacks 'class'? I disagree and parenthetically (I am amused that anyone in America would be insulted these days being told they lack class. It strikes me as a lower class insult from the early half of the 20th century). Maybe I am wrong and 'lacking class' has nothing to do with lacking the characteristics of the 'upper classes'. My impression that 'having class' and being 'classy' have to do with the characteristsics the lower classes perceive the upper classes as posessing. I very much doubt that taking the high road in business rather than playing hard ball is one of them. Heck I am usually for taking the high road but this manager fired you. He didn't just annoy you. He fired you. There is nothinbg classless, petty or wrong about requesting that he be fired. Frankly I think this sort of attitude is why management types are able to keep you cubicle slaves writing code for so little money year after year.
Fri 20 Feb | Kyralessa | 'name withheld', the etymology of a word is not the same thing as its current meaning; to say something 'lacks class' includes, in this day and age, no inherent judgment about the behavior of people of various states of wealth. The point is that though I agree that he's perfectly justified in demanding the guy be fired, he'll come out looking better if he _doesn't_ demand it. Obviously his decision depends on which he values more: revenge or reputation.
Fri 20 Feb | Name withheld out of cowardice | You see that's where I disagree. He doesn't look any better by not insisting the guy be fired. If he doesn't make the request he comes off looking like a guy who can be crapped on at will. If he insists on the firing, his VP friend will see some self-respect and some spine. If it gets around the company his fellow cube-monkies will applaud his victory and other managers will respect him. And as for your interpretation of 'class' I find it surprising that a programmer would argue for inexactness of language. Just because a good word loses it's specific meaning over time due to ignorant misuse, is no reason for us to tolerate it. Why use the word 'class' if nothing in your intent is specific to 'class'. Why not just say it would be bad or something similarly vague. Reminds me of the near-insane overuse of the term 'cool'. When I was in college people used this term to mean just about anything positive. It was used all the time without respect to it's actual meaning and so lost almost all meaning. Eventually it became just a sound people like to make.
Fri 20 Feb | Exception guy | Pedantry about the word 'class' aside, I would suggest that you do this: Go talk to the VP, and say to him that you'd love to be rehired, since otherwise you'd just sit around for the next year (or two) living on your savings, but that 'obviously I couldn't do that if I would be working with manager X. Can you see to that?'. You aren't insisting that the manager be fired, only that the VP is *personally* on the hook for making sure you don't have to deal with the guy he doesn't like. (You of course wouldn't mind if the manager was just transferred to the Siberian branch office, rather than fired).
Fri 20 Feb | Name withheld out of cowardice | Pardon my pedantry but the poster implied that I lacked class and felt compelled to defend myself. As for your suggestion that the manager be transferred to Siberia, I fail to see how asking that the manager be trnasfered is signifigantly better than requesting he be fired. I don't see what the problem is. Why is everyone so broken up for the plight of this poor manager who clearly didn't give a rat's ass about what would happen to the original poster once he was jobless. Save your good treatment and understanding for your friends. People will respect you for it.
Fri 20 Feb | NathanJ | namewitheld, Are you saying that the manager should be fired because he didn't care what would happen to someone else getting fired? So now you don't care what happens to the manager? If you are at the zoo and monkeys start throwing shit at you do you drop your pants and return fire? Asking that the manager be moved to a different project is reasonable. Demaning his firing lacks class (and isn't cool either). Scorched-earth office politics will backfire if the manager has friends among the other VPs.
Fri 20 Feb | Mr. Fancypants | Personally I wouldn't try to get the manager fired. In fact, I'd want to work with the manager again, because he'd be completely powerless over you simply due to the past situation (what's he going to do, fire you again? not likely) and having to work with you in a manner in which he is powerless against you would remind him every day of his colossal failure. But that's just me.
Fri 20 Feb | Matt Conrad | Asking to have the other guy fired is a totally unreasonable request. It's got nothing to do with turning the other cheek or anything like that, it's just not going to be on the table. The VP cannot go around firing salaried employees because an ex-contractor doesn't like them. I can't help feeling that some posters here are trying to have some malicious fun at Our Hero's expense. Asking to not work with the other guy anymore is reasonable. That's what I'd ask for, along with a decent sized raise. Although Fancypants is right, Our Hero can pretty much check this guy as he pleases if he goes back, if he cares to.
Fri 20 Feb | veal | Forget about the whole 'class' sideshow going on in this thread. Taking abuse happily is slave mentality. Without a doubt, listen to your friend's offer. If you liked the work, other than the presence of the jerk-off manager, then go back. Don't focus on demanding more money than last time unless you were being underpayed. The main point you should be pressing hard is the elimination of the old problem. You don't need to demand a firing, but you should consent to return only if the jerk-off is not involved in your project. Let them decide how to do that, it's not your concern. Suggest that you will manage the project yourself, if you think you can focus and deliver what the business needs. One last point. If you go back, and their way of removing the manager from your project was to move him elsewhere, be wary of him. In the long run you really need to work well with him or crush him completely. The middle ground always leads to being crushed yourself.
Fri 20 Feb | Alyosha` | I wouldn't ask that he would be fired. But I would stipulate that if you were to return, you would not have to deal with ex-manager in any way, shape, or form. Leave it to the VP to decide that the easiest way to accomplish that is to fire ex-manager.
Fri 20 Feb | Name withheld out of cowardice | Actually I think I am the only one really arguing for firing the guy. I don't buy the monkeys hurling feces analogy. The monkeys are not hurling the feces to accomplish a specific business goal. The manager fired the original poster for one though. The VP most assuredly can fire the manager for this, assuming he has the ability to fire him otherwise. He doesn't say he is firing him because 'my contractor buddy doesn't like him'. He is firing him because he made such a disastrous decision for such a stupid reason. He fired someone good and brought in someone bad because he didn't like the first guy. That is he said 'fuck what is good for the company. I will pursue my personal agenda'. If we are to believe the OP then this is the case and that manager needs to be fired. I have been in positions in which a superior wwas prevented from firing me despite an intese hatred (or whatever it was). That manager found ways to make me more unhappy than I otherwise would have been. And yes, that manager didn't care about OP being unemployed therefore OP shouldn't care about the manager being unemployed. If he wants to be Christ or Ghandi or King or whoever, I suggest a career in some kind of charity or public service.
Fri 20 Feb | Name withheld out of cowardice | And yes, noe that I think about it if I were capable of crapping on command like that, and I thought I could get away with it and a monkey actually bean me with some feces, I think I would return fire.  YEs I would.
Fri 20 Feb | veal | Oh, I almost forgot. If you choose to go back, make sure you do good work, and everyone know's you're doing good work. This is of course normal behavior under most situations. But in this case the urgency may be greater because there's the chance that your friend has stuck his neck out on this issue. In that case, you'll want to help him keep his head by demonstrating that he made the right choice in siding with you. Working on your reputation there can also help you amass power and goodwill should another showdown occur with the jerk-off.
Fri 20 Feb | Name withheld out of cowardice | And Mister Fancypants- your thing might work just fine until the OP's VP friend decided to pursue other career opportunities.  Personally I wouldn't feel very comfortable knowing that I would be fired if one of my friends decided to leave.
Fri 20 Feb | no name | It's a terrific opportunity for you in every way. go back, but ask that you report directly to your friend, not to someone else. Become a special consultant to the board or something.
Fri 20 Feb | Kyralessa | '...[the manager] said 'f*** what is good for the company. I will pursue my personal agenda'. If we are to believe the OP then this is the case and that manager needs to be fired.' You're right, name withheld. But it's for this very reason that Mr. rules! shouldn't demand that the manager be fired; that would smack of arrogantly telling his friend the VP how to run his company. Surely you can follow this logic.
Fri 20 Feb | Dennis Atkins | You are SO in the catbird seat my friend. I can't think of a more ideal negotiating position: 1. They desperately need you. 2. You don't need them at all. 3. They screwed up and owe you BIG TIME. Listen to their offer and laugh at it. Demand that the other guy be transferred away from where you'll work. Settle for nothing less than twice your last salary plus a huge bonus for agreeing to come back at all. And feel free to turn them down even if you do get all of it.
Fri 20 Feb | flamebait sr. | It's better to make 'not having to deal with the manager' a condition of your return instead of just asking for your friend to fire the manager. The first implies a problem that you expect to be solved. The second one implies the problem and a suggested solution. There are potentially other ways to deal with the issue of the manager that are also workable. If the VP is your friend, you should at least give them a chance to negotiate with you. You can turn them down if the offer isn't acceptable, or if you really need some time to unwind. Or make a few months to unwind part of the agreement.
Fri 20 Feb | Mr. Fancypants | Relating this to another thread here (and to Office Space), why not ask for "two women" while you're at it?
Fri 20 Feb | The Original Anonymous Coward | Mr. Fancypants, I like the way you think.
Fri 20 Feb | Josh No-Spam Jones | I'd like to > learn chinese, 'two women at one time' too!
Sat 21 Feb | HeWhoMustBeConfused | name withheld out of cowardice: 'Class' in this sense relates to concepts of style and grace, not the different between upper and lower. And yes, your suggestion that he demand the manager be fired showed a great lack of both style and grace.
Sat 21 Feb | i like i | This story seems completely upside down. Usually, JoS thread stories start 'I have this hopeless developer, doesn't try to work in a way that works, but is sponsored by a VP. Nepotism! I had to wait until the VP was away before I fired him, but now the VP is back and wants him back! What do I do???'
Sat 21 Feb | Cowboy from FMJ | I'll come back and work for you.  But "first you have to eat the peanuts outta my shiiit.
Sat 21 Feb | Koz | Would it be possible for you to work a few days a week.  Do that 2-3 days and look for a better offer the other 2-3.
xml schemas anyone? | Fri 20 Feb | Steven
i need a schema for storing key/value pairs in xml. apple’s proterty lists come to mind: http://developer.apple.com/documentation/CoreFoundation/Conceptual/CFPropertyLists/index.html (i work on a mac but need it for web development) question: do you think it is necessary / good style / helpful to use an existing schema for storing stuff in xml contrary to creating something obscure on my own? can you recommend any schema? any link is welcome!
Fri 20 Feb | Matt H. | uh ... aren't key/value pairs pretty much the definition of XML? You can use the key as the tag and the value as the data? What am I missing here ...
Fri 20 Feb | apw | if you rely on someone elses schema to define your document and they change the schema, you'll have to change your document....just make your own schema
Fri 20 Feb | Chris Nahr | Apple's schema looks similar to the SOAP support in .NET. That's useful for fully automatic (de)serialization of arbitrary data, such as remoting exceptions. However, the resulting XML files are _extremely_ large and virtually unreadable by humans. Not recommended for big datasets or permanent storage! As for user-defined schemas, I don't see the point at all. The W3C Schema standard already defines basic data types such as integer or boolean, as well as sequences or choices of elements. Why reinvent the wheel? Defining a named instance of a custom type 'Array', rather than just a complexType holding a sequence, seems like a useless complication to me.
Fri 20 Feb | mb | if you have tools which can read an exsiting schema, it might be useful to use it. or if you have unknown 'stuff', it's useful to use a nameval style--but that's creating a database in a database. note that Apple's PList format is terrible--it's not really XML though it uses XML. (it looks sometihng like namevalname2val2)
Sat 21 Feb | Duncan Smart | ...
Basic C API Design Question | Fri 20 Feb | cprogrammer
Hi all. Im an aspiring C developer working on my first substantial C project: a network library. My question is a rather simple one about design. Some libraries Ive seen have functions that dynamically allocate memory for a struct, fill in the structs members, then return a pointer to the struct; others just create a temporary struct, fill in the structs members, then return the contents of struct. My question is, which one is generally better and which one do you prefer? I know its faster to pass around pointers instead of the actual objects they point to, but isnt any performance gained negated by the calls to malloc? Which is easier to use and more readable? Also, do you have any examples of *good* C APIs to emulate?
Fri 20 Feb | x | My bias is towards minimizing the number of public structs in a C API - structs should be kept internal to the API, and created/destroyed by creator and destroyer functions (I won't call them constructors and destructors as we aren't talking about C++). Remember that the structs themselves are part of the API, and the fewer API elements, the better for maintenance and improvement of the API without lots of backward compatibility issues. If you have a struct that you pass to several API functions, use opaque (void) pointers. Use a creator to init your struct, and a destroyer to destroy it. A well-designed API should _never_ have internal stuff that points at user data - if the user passes you strings, copy (strdup) them to your internal structs. Otherwise, the user may free the data or have it go out of scope (ie, a local variable) and you'll be toast.
Fri 20 Feb | Mike Swieton | This reply isn't meant to be offensive, so please don't take offense. You don't seem to have much programming experience, so I'd suggest getting a good learning book. You can look at a good API, but that won't tell you why things are done how they are. A book will often say 'use technique X when you want Y'. In response to your specific question, as I understand it: - You can use pointers without malloc(). Look up the unary & operator. This is very often (read: usually) a good idea to use when you're passing around structs. - Use dynamic allocation when you don't know how much of whatever you'll need. - Don't have an API keep references to the user's data, as he might free it without you're knowing. I apologize that I can't reccomend an API or book, but it's been quite a while since I've done C development, and I never got a book. Hopefully someone else can reccomend one here.
Fri 20 Feb | scruffie | x, there's no need to pass around void pointers for your struct. You can have this: mycode.h: typedef struct _MyStruct MyStruct; MyStruct* my_struct_new(); my_struct_destroy(MyStruct *s); and in the implementation file, mycode.c, define what a MyStruct is: struct _MyStruct { ... }; As long as you pass *pointers* to MyStruct around in your API, you don't have to worry about defining it; it's an opaque type. This lets you use C's type-checking.
Fri 20 Feb | Mike Swieton | To me, I think generic pointers (void*) indicate either: user data (i.e. for a callback), or a function pointer (i.e. for a callback). I don't like seeing void*s elsewhere in the code, it throws me off. I don't consider it idiomatic. Now, if the library writer wants to typedef a custom type to void*, that's fine, but I don't ever want to riddle my code with void*'s that are actually structs. I feel it's misleading.
Fri 20 Feb | droopycom | Example of not-so-good design i just saw: device_get_id(pBus, MEM_BASE, &id); device_init_reg(pBus, MEM_BASE, addr, data); device_start(pBus, MEM_BASE, 1); ... The bad thing here is you always write (pBus, MEM_BASE, ...). You should rather have a new pDev struct that include both the pBus and MEM_BASE parameters. I think its easier to say whats not good that whats good.
Fri 20 Feb | Roose | 'My question is a rather simple one about design. Some libraries I've seen have functions that dynamically allocate memory for a struct, fill in the struct's members, then return a pointer to the struct; others just create a temporary struct, fill in the struct's members, then return the contents of struct.' What do you mean by the second part exactly? It seems like you may be misunderstanding the code, or the code you are looking at has errors. What is creating a temporary struct if not dynamically allocating it? You can dynamically allocate (which you mentioned), statically allocate (which means the API is not really creating it), or allocate on the stack ('automatically'), but the latter does not create something suitable for returning to the caller. As for another style issue, I prefer to have the caller allocate when he is responsible for freeing. Returning pointers to malloc'd memory and asking the caller to free is more prone to create memory leaks. If you make the caller allocate themselves, they are more likely to remember to free it. Mallocing and freeing in the same scope is a nice thing to strive for. The downside of having the caller allocate is that you have to provide them with the struct definition so they know how much to allocate. Keeping structs opaque is very useful as someone mentioned.
Fri 20 Feb | Eric Lippert | A third option is to have the caller pass in an empty struct which your API fills in. This puts the burden of managing the struct's memory upon the caller. That has pros and cons depending on whether the struct contains pointers to other allocated memory, etc, etc, etc. We can name techniques all day here, but ultimately, the answer is going to be 'it depends'. Could you make your example more specific? State a problem and a couple of possible designs and we can critique them.
Fri 20 Feb | x | I tend to do lots of 'public' API's, and rarely want even the internal name of a struct to be public. I'll do something for readability like typedef void APIStruct1; APIStruct1 *APIStruct1Creator(...); bool APIDoSomething(APIStruct1 *handle, ...); but don't like unresolved, but named, structs. This enforces a rigorous separation of my private API stuff from the API user's code. After lots of experimenting with different ways of handling this sort of thing over the years, my bias is toward keeping the internals of the API as hidden as the language will let me. The more invisible the internals, the more unlikely the user will do something to cause a trouble call :)
Fri 20 Feb | x | Mike Swieton, A void * shouldn't be used for function pointers - it isn't portable, as I discovered to my annoyance on a recent project. The Moto HCS12 has 3 byte function pointers and 2 byte data pointers, and some code we were porting to it used void * as a generic 'unknown thing of data pointer size', including function pointers. We had to use generic function pointers for the things used for callbacks, etc to make the code work.
Fri 20 Feb | Rob Walker | One thing to watch out for in API design if you are returning pointers to structs that the library allocated is how the user is supposed to free them. Generally it is a bad idea to tell the user to simply call free() on a struct that you library has malloc()'d. The problem arises when the version of the C runtime your library is using is different to the one the user is using. This may happen if, for example, your library is in a dynamically linked library with a statically linked C runtime. The correct design is to always provide a FreeMyStruct(MyStruct*) API that the user should use. On Windows you can fudge these issues a little if you use (and tell the user to use) an OS level allocator API e.g. CoTaskMemAlloc / CoTaskMemFree.
Fri 20 Feb | MikeG | Do NOT pass a pointer (or reference) to the structure directly. Do NOT expose your actual structure to the user. Use a void pointer- but hide it as a handle- essentially what the Windows API does (i.e. HWND, HINSTANCE, etc). Do NOT leave memory allocation up to the user. Have a Create and Destroy function (or Open/Close) that returns the HANDLE and all of your API functions would take this HANDLE. For Example you would end up with the following protypes for your API. >>>> MyAPI.h typedef void* HMYAPI; // creates a handle and returns HRESULT MyApiCreate( int parm1, int parm2, HMYAPI &phMyApi); // destroys the handle HRESULT MyApiDestroy( HMYAPI hMyApi ); HRESULT MyApiDoSomething( HMYAPI hMyApi, ... ); HRESULT MyApiDoSomethingElse( HMYAPI hMyApi, ... ); >>> This has the following advantages: 1) You can use this in many different environments with relative ease (in VB and the like the handle is nothing more than long value). 2) You can change the structure in the future and it will not effect anyone using it. 3) You could also use a class instead of the structure and write a C++ interface (the handle would point to the class instead of a struct). You would then have a C++ interface to your library and a C/VB interface to your library thru the API. There are other more andvanced things that can benefit you by doing this depending on your aplication- since you can hide all kinds of extra data in your handle (user is none the wiser) like sharing resources, thread safety for shared components, etc... Mike
Fri 20 Feb | runtime | Some libraries allow the caller to pass a pointer to an uninitialized struct to their foobar_init() function. This allows the caller to embed the struct in a larger struct or allocate the struct using some special memory allocator. In some systems, especially embedded programming, the caller wants to use a different memory allocator than just malloc() and free(). For some good library design tips in C, check out David Hanson's book 'C Interfaces and Implementations : Techniques for Creating Reusable Software'.
Fri 20 Feb | cprogrammer | Thanks for all of the suggestions. For Roose, what I ment by the second part was something like this: thing_t thing = new_thing('one', 'two', 'three'); ... thing_t new_thing(char *param1, char *param2, char *param3) { thing_t thing; thing.param1 = param1; thing.param2 = param2; thing.param3 = param3; return thing; } Instead of this: thing_t *thing = new_thing('one', 'two', 'three'); ... thing_t *new_thing(char *param1, char *param2, char *param3) { thing_t *thing = (thing_t *) malloc(sizeof(thing_t)); if (thing == NULL) exception('Couldn't allocate memory.'); thing->param1 = param1; thing->param2 = param2; thing->param3 = param3; return thing; }
Fri 20 Feb | x | Your second and third examples will both result in dangerous situations. The second one is returning a pointer to what will be stack garbage and will fail hard. The third one is setting up pointers to user-provided data and is likely to result in hard-to-find and bizarre errors, since the user will often pass in their own stacks. You may want to check out a C book to see why this is bad... I'm assuming the first is COPYING the three arguments - if so, it may be ok, even though returning a visible structure is not a wise thing in an API.
Fri 20 Feb | S. Tanna | > I'm an aspiring C developer working on my first substantial C project: a network library I'm not trying to be funny or negative, but how appropriate is it that a novice C developer should be developing a library for their first substantial project? If you develop a library many other developers depend on it Assuming this is a business driven exercise, rather than a purely intellectual challenge, I would have thought it more appropriate the novice sets out by developing applications using other people's libraries If you don't know your way round C, how easy is it to judge whether you are providing the appropriate tools for others developers?
Fri 20 Feb | Roose | Right, that is what I thought... you should never do this: thing_t f() { thing_t thing; ... return thing; } This may happen to work in some cases where the caller uses it before calling any other functions. However you're returning technically garbage data, and any more complicated usage will result in thing getting trashed with random data. thing does not exist once you have exited the function. If you are seeing this, then you should fix it right away.
Fri 20 Feb | go | Roose, You might want to rething that.
Fri 20 Feb | x | OK - I didn't notice that the func is actually returning a struct, not a struct pointer. Returning a struct in this fashion is technically legal, but generally not good practice in an API (or anywhere else, IMO) since there's an implicit structure copy being done when you do the return - and since structure passing is not always done very well, compilers may not deal with this perfectly and can cause bugs. To have best predictability, known performance, as well as portability in environments where you may have limited stack space, structures should be passed between functions as pointers only (or as HANDLE's or other things which resolve to pointers). One of the nice things about C is that you have exact control over what's going on at all times, and things can't happen 'under the covers' in the fashion that they do in C++ or other OO languages. This is a good thing IMO in the environments where C is still widely used such as embedded systems and OS kernels or internals, where the benefits of abstraction tend to be less than the benefits of knowing exactly what the code is doing. (If you want abstraction, that's what API's are for :) For this reason, I don't like structure assignment and structures as parameters and returns - the mechanisms for them are too 'under the covers' for me to like.
Fri 20 Feb | VPC | Maybe then it would be practical to have a linked list of allocated structures and utility function to count them so at exit he could check if the list is empty or if he leaves the OS to free used space on exit, at least he can see if the counter is within expected range. On the other side, if there's going to be a huge number of these structures, he may forget the list (speed penalty) but then he could keep a counter and change it at every alloc/free (or use the list only in debug mode). Personally, I like doing malloc only at initial set-up or within some library because that way it's really hard to forget releasing something. After that, he needs to make clear if users of that library would access elements directly (s->elemX = 255) or through set/get functions (lib_setElemX (255)) and than stick to it forever.
Fri 20 Feb | Roose | Oh whoops am I wrong? I guess it does return by value. I never use that, and I never see it used, but I guess you are right. What's bad is returning a pointer to anything on the stack. But anyway, I would say it is not idiomatic C to return structs from functions, for efficiency I suppose, but efficiency isn't always the main concern.
Fri 20 Feb | go | Passing structures by value has some legitmate uses. A common use might be in an API for handling say 64-bit integers. For compilers that support 64-bit integers we might have typedef unsigned long long U64; and for compilers that don't have such support: typedef struct { unsigned long lo; unsigned long hi; } U64; The API would be the same regardless of the underlying implementation, for example: U64 Do64BitMath(U64 a, U64 b); However for larger or more complicated structures passing by value is not a good idea due to the overheads.
Sat 21 Feb | Sean Conner | What I do is construct an opaque type around a typedef and a struct: typedef struct foo { ... } *Foo; I then define functions to create and destroy the structures: int FooNew(Foo *pfoo, ... ); int FooFree(Foo *pfoo); All the rest of the API dealing with Foo dispense with the pointer designation: int FooFrob(Foo foo, int blah); int FooManipulate(Foo foo, char *frob); So the end user of the library does stuff like: { Foo myfoo; if (FooNew(&myfoo) == ERROR) { ... } FooFrob(myfoo,34); FooManipulate(myfoo,'Hello'); FooFree(&myfoo); } I've used this technique to implement an API with two different implementations. The first used a Foo that was a typedefed structure and was actually a pointer; another implementation of the same API the Foo was actually an integer (implementation detail-it was an index into an array of structures maintained by the library). None of the code calling the API had to change. Then there's the issue of what functions to include in an API. I tend to favor small functions that conceptually do *one* thing with as few paramters as possible. Makes testing easier and allows a more or less Lego-like approach to writing code (one library I wrote handled HTTP from the client side. I had one function that would establish the connection and obtain the document, but *not* follow redirects. Another function, using the first, would make a connection and follow any redirects. Most of the time I would call the second function, but there were cases where it was nice to have the lower level function available).
The Apprentice (spoilers) | Thu 19 Feb | Philo
ROFLMAO!!! Omarosa stays true to form - the manager I knew that was just like her also would have meetings for the sake of having meetings while people were actually trying to get work done. Katrina flipped out on a misunderstanding - she thought Troy only said he wanted to take the apt she wanted, whichever one it was; instead he knew which one he wanted, independently, and just told her the facts, flat out. More to the point - big lesson that alls fair. I liked it. :) Did anyone else notice the freaking monitor they had? Looked like about 25 flat panel... No real surprise on Tammys firing. Bill couldve done better (even I was shocked when he went a whopping $50 up in rent), and I dont think there was ever a chance of Katrina getting the axe - though Bills failure rolled up to her, overall she did an outstanding job with the renovations. Somewhat surprising that Omarosa suffered no fallout from her malingering - perhaps she will in the future. Philo
Thu 19 Feb | www.marktaw.com | Philo, the credit's haven't even rolled yet, I'm watching Tammy talk to the camera as I type this. Have you been sitting on this for the past 10 minutes, typing bits throughout the boardroom scene? The Katrina/Troy thing was clever editing. Here's how it went down. Katrina: I have a lot of experience in Real Estate. Troy: You go first, I'll say what I want 10 seonds after you. Katrina: Okay, to be fair, we'll write it down so neither one of us can be infuenced by the other's opinion. Troy: Okay.. I want what you want. Here's how the audience saw it. Troy: I overheard her say 3rd street, and that's what my team was telling me. Katrina: Let's write them down and then trade. Troy: I know what you want, and it's the same thing I want. To us he was just being clever. To Katrina he was being a jerk, and didn't know what he wanted. Standard disclaimers apply - We can't know what really happened.
Thu 19 Feb | J. Volk | I actually thought Bill did about as well as could be expected. I mean, I think they only had one person even look at the place, and I don't really think she was going to spend too much more than $1600. I'm so very happy that Tammy got canned. She *really* bothered me. Did she contribute one non-stupid thing during her entire time on the show?
Thu 19 Feb | Philo | 'Have you been sitting on this for the past 10 minutes, typing bits throughout the boardroom scene?' Last week I was in a hotel - laptop and TV. This week I'm home but happen to have the laptop in front of the TV tonight, so I was typing as I watched. :-) Philo
Thu 19 Feb | www.marktaw.com | Bill should've added $200 to the asking price and come down from there. Renting an apartment is an emotional situation and you typically don't rent for purely logical reasions. You want to be in a neighborhood, you want a good apartment. You either like it or you don't. You're gonna live there, you have to be comfortable with it on something other than a purely logical level. That woman could've seen 1 apartment all day (this one) and just told him she'd looked at dozens of others. She also could've told him she can't go above $1600, but had much more room to play. She's a better negotiater than Bill, though not that good - She could've gotten away with sticking to her $1600. From a business perspective, he was too sympathetic, and probably too afraid the place wouldn't get rented if he started with high numbers. Katrina should have negotiated, she would've seemed a lot less eager.
Thu 19 Feb | J. Volk | Yeah, you're right.  I'm a terrible negotiator.  He could have at least started high and then come down if the woman wasn't going for it.  I can't believe Katrina wasn't involved in the negotiation.  7+ years of realty experience and she wasn't even in the room for the most important part!
Thu 19 Feb | J. Volk | Oh, and did anyone see the little teaser for 'The Intern'? I believe the next show in the works is titled 'The Short-Order Cook'.
Thu 19 Feb | Bitter much? Not me... | 'Who wants to be an IT intern?' After the tryouts, and the sixteen geeks spend four months getting down to a final winner, we find out the IT position is at Playboy.com ...and all the jerks who spent a season laughing at the silly geeks have to pry their jaws off the floor... [grin]
Thu 19 Feb | magoo | Omarosa 'I worked for the President': gone. Katrina 'look at my abs, never been duped': gone. Nick: whiner, gone. Bill: nice guy, whimp, gone. Amy: good manager, not a leader, gone. Ereka: overestimates her intelligence. gone. Kwame: potential. finalist. Heidi: street smart. finalist. Troy: dumb Idaho boy is smarter than he acts. finalist.
Fri 20 Feb | NC | I don't think his negotiation was that bad. At that point, they had under an hour to close, I believe, and they had to cover the situation where the other team didn't close at all. Kind of like the person who bids $1 in Final Jeapordy when he has more than double the next contender. Sure, you could go for more, but you only get the money if you win the game!
Fri 20 Feb | Philo | When someone's first offer is $1600, a counteroffer $50 higher is silly. Actually, the team's capital mistake was not having a target rental - once they finished the apartment, the next order of buiness should have been 'what do we ask?' I saw them researching the market - that should've given them ample info regarding a target. Couple that with a desired percentage - if the trash heap was valued at $1500/month, then $2000 (33%) as an initial ask wouldn't have been unreasonable. BTW, how far apart were the apartments? Was a little espionage doable? [grin] Finally, any Fog Creekers care to weigh in on the real estate issues about the apartments and their locations? Philo
Fri 20 Feb | www.marktaw.com | They gave street names, but not cross streets so it's kind of hard to gauge, but I'm going to say that. 1. $1600 is a median price in this general vicinity. 2. Cheaper apartments are always going to be be easier to rent. So the team with the $1200 apartment is definately going to have the advantage.
Fri 20 Feb | Bathmophobic skier | Does anybody out there have women like that in their office? I have never worked with more than a couple good-looking babes, and they weren't the sharpest tools in the drawer. Ok, call me sexist now, but I'd love to share a cube with Amy.
Fri 20 Feb | apw | Bill is the mole, he works for Trump already.
Fri 20 Feb | Matt H. | Here's the thing: They were measured by the percentage increase in rental price. To get a 27% increase, katrina's team would have had to get $1,905 for the apartment. Does anyone thing bill could have pulled that off? We don't know, but I'm guessing he couldn't get past $1,800, which still would not have been enough. If he had gone for 'two hundred more' and 'negotiated down', he still would have lost! The team should have discussed three numbers for the apartment: Bare minimum, happy, and excstatic. Not only did they not do this, (but the editing sure made it look like) neither team got a single solid prospect until 4:30PM, by which time they were desparate. Did anyone else wonder if the 'solid prospects' that rented the apartments were actually sent up by NBC at 4:30PM? I mean, it would be realllly lame if the apartments didn't rent at all.
Fri 20 Feb | no name | Just goes to show you that sometimes 7 years of experience ain't all it's cracked up to be. Sounds like a case of 1 year of experience repeated 7 times.
Fri 20 Feb | Lou | Smoothest move ever when trying to sell a house - 'Here's a pair of tickets, business class, to Hawaii to whomever sells this apartment for $2000/month'. Tell that to all the realtors in the area and let them drive the business to you. Sounds like a better place to invest your money than in the apartment. I've seen this move work three times now - it helps move the place faster and/or at a higher markup.
Fri 20 Feb | Nick | I thought the trip to Trump's mansion was the funniest thing in the episode. He has them taken up there, but doesn't even let them go inside. Oooooohhhh, Trump grass is way better than normal people's grass. I too thought the late arrivals that rented the place were suspicious. And I never did figure out what Troy did that Katrina thought was so inethical. Just because he said he wanted what she wanted? She looked like a big damn crybaby. I'm sure she's used to getting what she wants and throws a fit if she doesn't get it.
Fri 20 Feb | Clutch Cargo | Bill’s problem was that he had a terrible bargaining position. He was backed into a corner having about 20 minutes left to rent the apartment and only one prospect. The episode worked out well though; getting rid of the nut job Tammy. They read parts of her resume on the Today show. It featured fascinating information like what kind of car she drives and what car she’s planning on buying next. Now if we can just get rid of Omarosa next week things will be cool.
Fri 20 Feb | mph | One thing I'll add as someone who has signed 3 different leases in the nyc area... if you don't like the apartment, chances are there's 10 more within a 5 minute walking radius.  If I was looking at an apt, and the realtor came in with a ridiculously high price, I would probably just keep looking, rather than start negotiating.  Bill had absolutely no leverage whatsoever, and a 10 percent markup is much better than -100 percent markup.  (Not renting the apt, that is)
Fri 20 Feb | T. Norman | Given the extreme time constraints, I was surprised that any of them managed to rent it at even $1 over the assessed value. Whenever you're in a situation that you need to buy or sell something RIGHT NOW, and that something is negotiable, you're lucky to even get as much as a normal market price. It was obvious from the phone conversations that Troy didn't want that apartment independently. But Katrina should have been smart enough to know that he would be listening, so she should have either walked far away or used reverse psychology.
Sat 21 Feb | Ken | I predicted from the beginning the team with the lower-value apartment would win.  I think it should have been based on net profit instead of percentage.  Granted, it didn't matter in the end, but it just seems fairer.  Or more fair.  Or something.
Now it's for real: how's the British water? | Thu 19 Feb | RP
Hi everyone. Recently Mario opened a thread about moving to Ireland to work. Several people replied and some said that things still needed a bit of recovery. Now its my turn: I was invited to work in London as a J2EE developer, but Im afraid of moving into a fragile marketplace. So, how are things there? How is the employment situation? Especially how is outsourcing affecting your daily lives? Any response regarding Londons work scene are welcome, more than welcome. Thanks!
Thu 19 Feb | GuyIncognito | Apparently they haven't had good dental benefits for years...?
Thu 19 Feb | tapiwa | I love London. I think anyone that does not should be taken out back and .... (that's another story) I have lived in a lot of cities in a lot of countries, and London is one of the best. (after Cape Town). People that purport to not love London tend to not get out much. One of the best things about London is that everone is a foreigner. Seriously. Most people are from abroad or other citiies in the UK. Because of that, you never feel like a foreigner. That and the fact that you can get whatever it is that tickles your fancy, from food, to music and culture. London is a big place, and all have different vibes. I just moved from South Kensington (ever so posh darling, and lots of old money, with people that speak in the third person) to Canary Wharf (great value for money, brand new buildings, fantastic view of the Thames and lots of young professionals) The weather is not bad. You get used to it pretty quickly. My only qualm is with the drinking laws, but that's a problem in most of the western wolrd.
Thu 19 Feb | blargle | lack of *NHS* dentists ... plenty of private dentists ... I'd say things were pretty stable - with demand for devs rising ... company I work for is certainly interviewing at present (we're just outside london) for j2ee devs I can't say outsourcing has affected 'us' one bit - tho I wouldn't know if it had meant us losing bids to people using outsourcing to lower costs etc... yucky sales stuff... (mind you we do do BPO to our indian office... so we're probably part of the 'problem') I don't see you'd have any major problems at the moment - most of the indications I get are of increasing demand (not as daft as it was 3 years ago but steady and increasing)
Fri 20 Feb | HeWhoMustBeConfused | Tapiwa, What? You mean they have laws to FORCE you to drink?? *grin* ... no wonder there are so many Australians in London
Fri 20 Feb | no name | Work in London + Live in London = Heaven Work in London + Commute = Hell
Fri 20 Feb | Stephen Jones | The water's much better in Manchester. London water is too soft so you can't make a decent cup of tea. Forget about bathing. When the EU refused to give the open sewer that was Blackpool beach even one star, the town council went on record as saying that nobody in his right mind would want to go into the sea at Blackpool anyway. As Tapiwa says there are drinking laws that mean you might be tempted to drink water between eleven at night and eleven in the morning. However you can stock up with cans of lager from France duty free (you're allowed 300 cans each trip) so a bit of planning will solve that problem. I never found a solution to the problem of having to use water for washing. However if you keep your mouth shut in the shower none should go in :) Now of course, if you were speaking metaphorically the thing to bear in mind is the astronomical property market. Unless you are earning around $100K a year you will either be in a bedsit or sharing, or living in the suburbs, which last alternative will negate most of the benefits of living in London.
Fri 20 Feb | no name | > can stock up with cans of lager from France duty free Or just make friends with some people sitting on park benches muttering to themselves. I'm sure they'll be happy to so share their Special Brew.
Fri 20 Feb | x | The market seems to be picking up, but as commented earlier, you need at least £40,000 to live in something somewhat comfortably, and even then you can expect to spend half your income on rent and transport. Job security in general is somewhat better than in the States, but there is far more a hire-and-fire mentality in the UK than in continental Europe. Btw, the solution most Brits have for avoiding to have to use water for washing is to forgo washing altogether. You'll have to learn how to hold your breath for extended periods on the tube...
Fri 20 Feb | richard | The rental market is getting slightly cheaper due to a rise in supply of rental properties. Depending on where you live you could pay about £800 per month for an apartment of your own in a nice area. If you work in the City (financial sector) you'll probably do well enough. IMO, best large city in the world.
Fri 20 Feb | matt | London (or the City, which is a lot of the tech market) seems to be picking up quite a bit since last year. Nearly everyone commutes to some extent and the time you spend commuting is not at all proportional to the distance you are from your destination. My preference (if I were to move back) would be Greenwich/Blackheath in SE London - good links to Docklands and the City now.
Fri 20 Feb | Rob VH | Stephen, My British coworker insists on double (*double*, mind you) filtered water for making his tea 'properly'. I'll have to ask him whether he shares your opinion on mineral content... :)
Fri 20 Feb | Name withheld out of cowardice | Tapiwa How does one speak in the third person?
Fri 20 Feb | no name | In first person Tapiwa would say: 'I am going to the pub.' In third, Tapiwa would say 'Tapiwa is going to the pub and he will buy all JoS readers a beer.' Okay. That might not be entirely true...
Sat 21 Feb | LoveByte | 'A sentence or part of speech in the third person refers to someone or something other than the speaker or person being addressed.' -- about.com
Getting Started with Your Own Software Company | Thu 19 Feb | GuyIncognito
http://www.msdn.microsoft.com/vstudio/default.aspx?pull=/library/en-us/dnsoftware/html/software01262004.asp
Thu 19 Feb | no name | thanks for the info, 1000th post of this ... the article is however good
Thu 19 Feb | Ricardo Antunes da Costa | Eric Sink's articles are very good. His column at MSDN about Business of Software is a must-read for every entrepreneur that's willing to go solo. The Make More Mistakes article is very good too: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsoftware/html/software12292003.asp
Thu 19 Feb | Ricardo Antunes da Costa |   Ops.  Was mine the 1000th post of the MMM article link too ? :-)
Thu 19 Feb | Zod | Yes, Ricardo, but since you're such a nice guy, we'll let it slide this time. :-P
Thu 19 Feb | VP | 'The E-Myth Revisited' by Michael Gerber is a good book. http://www.amazon.com/gp/reader/0887307280/ref=sib_dp_pt/103-2896527-2875032#reader-link I've only read his older 1986 version, which I say the most value can be had from reading just the first few chapters. His latest book might be more geared to modern times though. Just look at Joel's website. At first he did all the hard work to create the quality content himself. Once his site gained a critical mass of readers and popularity, most of the new content is found here on the public forums. Of course he has to do 'maintenance' work by wriiting occasionally and socializing with his fans, but now he doesn't have to devote all his limited and precious free time to it. THAT's how you succeed in business. That's how you work smarter, not harder. It's what Gerber refers to as 'Working on your business, not in your business.'
Thu 19 Feb | Bored Bystander | >> That's how you work smarter, not harder. It's what Gerber refers to as 'Working on your business, not in your business.' Implying that we participants are doing the operational work of creating new, fresh content... IOW, people other than Joel are inventing reasons to come here. For free. Can't beat that with a stick.
Thu 19 Feb | VP | You got it Bored, now he only has to occassionally write new content and make sure people don't get (seriously) out of line, to keep the community he's created healthy. Of course he didn't get this for free. He paid his dues early on, but now is enjoying the interest from his investment. He created an environment that people enjoy coming to, which is the 'payment' we receive for adding more content to the site. The people who work harder and not smarter would only create the content themselves. When they have the time and energy, their site will be popular. But when real life demands their time, there will be nothing else to keep the site going, and it will die...or go out of business, sorta speak.
Fri 20 Feb | Bored Bystander | I have no quibble with Joel. He has always appeared to be eminently ethical and fair minded and nobody holds a gun to anyone's head to post here. I just think it's extremely clever how someone else's invention can induce so many people to work so hard at enriching a company owned, proprietary equity. With their consent, no less.
Fri 20 Feb | magoo | As popular as this site is, I doubt if Joel is making much money from the site. He makes money because he sells software that matches the program model to the user model. Which doesn't have a lot to do with C# vs. VB.NET, .NET vs. Java, OOP vs. everything else, static typing vs. dynamic typing, Microsoft vs. Open Source, My Boss is a Dick, eXtreme Programming Rules, and other popular topics on this site.
Fri 20 Feb | Norrick | 'As popular as this site is, I doubt if Joel is making much money from the site. He makes money because he sells software that matches the program model to the user model.' Correct - and one of the factors that enables him to sell said software is that the site - and all its content - lends a sense of credibility in the marketplace.
Fri 20 Feb | Elephant | 'As popular as this site is, I doubt if Joel is making much money from the site.' Accurate in one sense I guess. I don't know about the rest of you, but having used both fog bugz and city desk, I for one wouldn't think twice about recommending either to anyone. Gotta be real good to have an entire community of leading IT professionals and Software Engineers passing on recommendations for your product through word of mouth.
Fri 20 Feb | JT | 'As popular as this site is, I doubt if Joel is making much money from the site. He makes money because he sells software that matches the program model to the user model.' I have to disagree. I think joelonsoftware is a great marketing tool. It's not a *active* marketing-no banner ads or anything-but I know from my own buying experience that the things said on joel's blog were probably the major part of my deciding to purchase CityDesk. Remember, advertising isn't about instant sales; it's about awareness. The more people read this site, the more are aware of these products, if only marginally. When the time comes to look for, say, a content management system, they'll know at least one good place to look.
Fri 20 Feb | Bored Bystander | Marketing aphorism: ANY publicity is better than NO publicity. This site generates publicity. End of story... LOL PS: if this site didn't exist to remind me constantly of Joel and Fogcreek, I probably would never have bought CityDesk.
Fri 20 Feb | VP | Yup, you guys are all right. Every little bit does it's part in making Joel's company a success. You've all heard stories of companies that relied only on the technical strengths of their products and failed. Like the article that the orignal link pointed said. Jack-of-all-Trades people tend to make better entrepreneurs because they think of the big picture.
Sat 21 Feb | Aussie Chick | That said, I don't even know what Fogcreek software does, I don't know what it is called (is it called Fogcreek, or is that just the company?). I have a vague idea that in some helpful way it has something to do with webpages. And I know the head honcho is called Joel Spolsky, I have read alot of his articles, and find them inciteful. Maybe his software is something I never knew I couldn't live without out. I just figure whatever it is, it would costs money, and I have a number of things on my wishlist at the moment without looking for another.... (Just proving that as much as this marketing technique works, there are plenty of people (at least 1) who just think it is a great forum with good articles)
BPO/outsourcing at the real local level | Thu 19 Feb | Bored Bystander
Went to a chamber of commerce mixer yesterday, doing the sales promotion thing. The chamber serves a suburban area in the Ohio valley. One guy there was an Indian (full beard, maybe a sikh?) who stated that he had moved in from Cal. to open a local office of his company, which deals in GUESS WHAT kiddies - BPO, business process outsourcing. He said everyone in this room probably talks to someone from India who has an American accent on the phone every day and stated that his companys mission was to find ways to reduce costs through outsourced call centers, etc. Now, most of the people in the room are small time entrepreneurs. The rooms mood was favorable when this guy spoke, like rah! great! more money for us! Welcome! My own interpretation was decidedly different. I wonder if the people in the chamber who were approving EVER considered that many of their clients and customers are subject to BPO and therefore will fall a few quanta in income as this guy tweaks up the local redneck run businesses to top efficiency. Personally, I felt like a bunch of cockroaches had been dumped in my basement by someone, even if this is only the visible tip of the iceberg...
Thu 19 Feb | Sgt. Sausage | Just out of curiosity, where exactly in 'a suburban area in the Ohio valley' I'm in the greater Cincinnati area myself -- actually a bit east (Amelia).
Thu 19 Feb | Bored Bystander | Sargeant, hrumph-ahem... shoot me an email... small werld.
Fri 20 Feb | dir at badblue dot com | Blue Ash here... did you guys sign up for the JOS meetup in Cincy?
Fri 20 Feb | Bored Bystander | Just found the meetup page. I'm so there. Any ideas on a meetup location?
Fri 20 Feb | dir at badblue dot com | If we're talking north of the city -- and folks can handle sushi/japanese -- we could do a meetup at Akira's on Tylersville Rd. If downtown -- maybe Benihand's on 6th street. I mention Japanese because it seems as though everyone in the Cincinnati Orkut community is also in the Sushi community... I figure a restaurant would be a decent place... Thoughts?
Sat 21 Feb | - | How about a strip club instead?
Programmers and their Pets | Wed 18 Feb | anon
I just lost my beloved cocker spaniel, Ludie, to illness, and I find I just cant get my work done.  I havent done anything in a week, and I just cant get over it.  Has anyone else lost a cherished pet?  How long did it take you to get over it?  Did it affect your code?  What kills me the most, is that when I worked from home, she insisted on sitting on my feet right underneath the computer.  It always annoyed the heck out of me, but now that shes gone, I miss that most of all.
Wed 18 Feb | shiggins | We had to put our German Shepherd/Rottie down four days before Christmas this year. I can be really tough. We don't have kids so our dogs are like our kids. Non-dog lovers don't understand this. It took me about two-weeks before I wasn't thinking of him non-stop throughout the day. Unfortunately, it's like any other grieving process. It just takes time. My friend gave me this poem http://www.petloss.com/poems/maingrp/rainbowb.htm Good luck. I know what you're going throught :(
Wed 18 Feb | Steve Barbour | Well, I like dogs, but I've never spent a lot of time grieving about the ones I lost. I'll be nice and presume that it feels to you like losing a very dear friend, and in that vein, you have my sympathies. And in the same vein, take some time to grieve, and remember the good times you had together.
Wed 18 Feb | Code Monkey | Sorry about your loss.....time is the best healer Meanwhile try http://www.virtualdog.com/
Wed 18 Feb | hoser | From Simon and Garfunkel's Greatest Hits: Time it was and what a time it was A time of innocence, A time of confidences. Long ago, it must be, I have a photograph, Preserve your memory, That's all that's left you. I'm sorry for your loss. Take time off if you can. Trying to gut through it while working may leave you worse off.
Wed 18 Feb | Robert Jacobson | I completely understand what you're going through. I lost my cat Harvey just before Christmas last year, and it was really devastating. Since I work at home, it was particularly tough not having him around. Between that and the holiday season, I probably had a good month of near-zero productivity days. There are lots of books and web sites that might help you -- just Google 'pet loss.' (Unfortunately you'll have to put up with lots of treacly graphics and midi songs. ) Here's a few: http://www.petloss.com/ http://www.pet-loss.net/ It's not something you can ever 'get over' -- it just takes time. Try to find something constructive, perhaps. I found some comfort in volunteering at the local animal shelter, and eventually fostered and then adopted two new kittens who needed a home. Good luck.
Wed 18 Feb | Cosmo Kramer | I feel for you. I am sorry for your loss. Give yourself sometime to adjust, go for a long walk and reflect. Remember this too shall pass.
Wed 18 Feb | Dan Brown | 'come on women' I wonder what has so disempowered and alienated this person that they feel the need to attack others who choose to bare their most naked feelings? I lost a close family member a few years back after a prolonged illness. I was back at work after about 10 days I think. Had to do something to occupy myself. Would get teary-eyed on occasion. A couple times a day, then once a day, then once a week, then once a month, etc... I can't recommend anything to you, but I work with a cat all day and I know if she died I would need to stop working from home for a while.
Wed 18 Feb | cat lovin' redneck | '...will be replaced without hesition or sorrow when the natural time comes.' And also with you.
Wed 18 Feb | Doug Withau | Cowboy wisdom: If you can't shoe your own horse or shoot your own dog, you don't deserve to have either one.
Wed 18 Feb | robtwister | Your post hit home, anon, it was nice to hear people share their sad feelings when losing their pets. Losing a loyal pet who only knows love for their master is very hard. Just a week ago, my mother wrote (I work far away from home) that my family had adopted a very malnourished and sickly puppy who wandered by our front door. It was barely clinging on to life. They brought it in, and tried to nurse it back to health. My father named him 'Lucky' because he was hanging on to life despite overwhelming odds. Then just two days ago, my mother wrote that it is a very sad day for the entire family, because Lucky had taken a turn for the worse and had to be put to sleep. Even though he was with the family only a short time, my mother shed tears, poor puppy. She said even my father (usually a very tough guy) was very sad. Reading her email, I too had tears in my eyes which was strange because I had not even met or seen the dog. Up to now I still have that depressed feeling, but after reading this thread it's nice to know at least I'm not alone. P.S. When I was still living at home a year ago, I lost my favorite pet dog due to illness, but losing Lucky was sadder because I knew my pet dog lived a good life, while Lucky had all the disadvantages early in life.
Wed 18 Feb | Froggy | When my dog was ran over by a car, I found that I could not concentrate on anything for a full 2 months. Yes, it takes time. Yes, he was more than a dog - more like a human brother to me. And yes, it hurt like hell. No one could understand why it could affect me so much. They said 'But he was only a dog...'. He was only 4. I cried buckets for weeks. Spent time alone in the washroom because I could not stop weeping. When I went home, I'd half expect to see him at his usual spots, but he was not there... The very next week, my mum bought home 2 JRTs. I knew they could not replace the special place in my heart immediately. But they definitely made the sun shine again. Although we know that the day we bring them home, we'd have to prepare for such a moment... but you can never be prepared. You must have loved your dog a lot. And she was the luckiest dog in the world to have been with you. She had a happy life :-)
Wed 18 Feb | anon | Thanks for all the comments, links and advice.  It was really comforting to me and my wife that you guys/gals would take time out to share your experiences.
Thu 19 Feb | Bored Bystander | My profound condolences for the losses described by the survivors. Our pets: four ridiculously spoiled, fat house cats, all but one being 'rescues'. All participate regularly in house-wide wars of attrition and mutual humilation and conquest. The programmer's archetypal pet is a cat because they are aloof, haughty, intelligent and independent...
Thu 19 Feb | Clay Dowling | I've lost a cat a year for the last three years. The surviving cat is under orders to live for at least two more, although she's very old and always did have the feline tendency to not follow orders. The grieving process will need to play itself out is all. I still miss all of them, but over time the pain lessens. The first casualty no longer causes me unbearable pain. It's been a while since I had any nightmares about the loss of the second. The third, that one still bothers me a lot, and she died in June. The only advice I can give is to remember your fallen pet, don't be afraid to mention their names or talk about the things they did. It's hard to do that, but it's worth it. As for the callous bastard injecting their unwanted derision, please feel free to look me up in person and say those things. Please put your affairs in order first, you won't have time afterward.
Thu 19 Feb | Tayssir John Gabbour | I don't really know too much about animals with fairly long lifespans, like cats and dogs, but I've known lots of those cute and smart tame rats, and those things die quick. It's extremely painful at the beginning when they start heading off into the great unknown... but fortunately it became clear that these little suckers only stop in this world to observe it for a while, and then move on. And it does seem this world is a pathetic, sad boring place anyway, and I learned it's kind of a good thing for them to get off it. You probably really regret some things. But these are natural mistakes. You've gained knowledge, and possibly you might keep an eye open for a dog that finds you interesting and you wouldn't mind spending time with. Not a replacement but some lonely guy/gal who could perhaps stand a good time. Of course, you'd have to find a dog that's Smart and Gets Things Done, a 99.9% kinda fellow. My first rat who died (and when I say 'my rat', I actually wasn't responsible for him. They would starve to death if I were.) was a fireball-colored guy. Smart as hell, and had all sorts of emotions like jealousy, passion for food, desire not to be disturbed in the morning when he went off to the bathroom and then ate breakfast. He had good manners. Oddly clumsy for a rat. I had only seen one other rat who was so observant of humans, and unfortunately she was a sociopath to those she considered weak. So you can imagine all my mistakes hit me hard... admittedly they weren't my responsibility and I didn't want them initially, but I did grow attached to the wee beasties. It's important to get things right in this world, even if you underestimate their value. A lot of what you're feeling is chemical; you'll usually just need time. It's important for the experience to improve you somehow, because the alternative is to admit there is no point to death. I had something else to say but I'm too tired and depressed to remember. ;) Oh yeah, when I speak with the person who was responsible for them, I talk in terms of the rainbow bridge and how they're leading absurd lives inviting each other to dinner occasionally or whatever. I don't know why, but it is a beautiful picture and for some reason I believe it on some level.
Sat 21 Feb | Friend | Sir, I am Jack ( Age 13) I and God, are best friends. Everyday we spend hours talking to each other. You know private talks... ;-) Although he gives me everything late, but still we are friends. I remember one thing. One day he said me,I want someone who loves me un-conditionally. Humans,really don't care about me. But this time I would like to have someone real faithfull and loving creature with me. So Sir, He might have selected your pet. I know God will take care of him. He knows everything about pet -diet , walk and all...You need not to worry .I am saying this because I know him very well. As he is my BEST FRIEND.
Training the Boss | Mon 16 Feb | Aussie Chick
Well, I am only a part-time worker now. I have cut back so I can spend some more time developing my career. Consequently, I need to ensure other people at work can handle minor issues in my absence. this shouldnt be an issue, I have been steadly gearing the system to be able to cope without my role. ******** alright, says the Boss, you have been very busy documenting everything, you can explain to me how it all works. It will be a good test of your documentation Oh, and teach me too puts in the Manager Better teach someone else too decides the Boss, How about the new guy, how do you pronounce his last name? Good idea, didnt he say he had some IT experience on his resume? says the Manager I think so, but could have been Cattle Yard experience for all I know says the Boss. everyone nods, we will do this on Monday we all agree. And one more thing says the Boss Can we label everything I have labelled everything I say, pointing at the label on the pheripherals around him 101z, ph102... No, I mean with names, like tserver, so we know what they are explains the Boss, I will buy a labelling machine and you can label eveything, he directs his conversation now to the Manager There was a thing with a card in it in the server room, and I didnt know what it was ******** So this should be exciting, plus I get to label things (oh yay!, not the technical labelling silly, we want fun names), kind of makes me think of kindegarten, when there were labels on everthing blackboard chair desk window...... Lets hope the new guy had IT experience not cattle yard experience, eh? Actually seriously, I am excited, it will be a good test to see whether I have made the system simple enough, and it is nice to have the boss take an interest...(would have been nice if you had taken the time to look at all those macros I wrote that save you thousands of dollars a year....but who am I to complain).
Tue 17 Feb | Cosmo Kramer | So what? what's all this? your diary ftped to JOS erroneously? Jeez, what's up with you people? o you honestly think we care about your day to day, mundane and tasteless business? Sanity check: we absolutely couldn't care less!
Tue 17 Feb | Cosmo Kramer | What's next? your papa's XP box got infected with Mydoom worm and you'd like to let the whole world know what went wrong? This is a software engineering/management forum. Not a funkygeek'sdiary.blogspot.com! Capice?
Tue 17 Feb | Aussie Chick | Your probably right, I didn't summarise very well (and I definetly do have a tendency to ramble on!! I am interested in the take of management stepping down and wanting to have the ground-level stuff explained to them. My experience so far has been that I am left alone to do my own thing, I take it seriously, and try to avoid to many conversations with management. However general consensus among the IT/Programmer population is that management are fairly incompetant (at least not too many people come out singing management praises). They have a tendency to want to change things without really really understanding what is going on. And I would have expected things like this to get delegate to a compentent individual with the time to spend on it, rather then bosses with very little time on there hands. Generally if I do post a topic, I open it with an experience to invoke tales of other peoples experiences, it makes for good reading and good advice etc.
Tue 17 Feb | no name | 'So what? what's all this? your diary ftped to JOS erroneously? Jeez, what's up with you people? o you honestly think we care about your day to day, mundane and tasteless business? Sanity check: we absolutely couldn't care less! ' She's one of the few people with interesting things to say around here, and she's contributed more than 10 times as much to this board as you have (so says usabilitymustdie, anyway). Besides, picking a fight with the hot geek chick isn't going to endear you to most geeks. (disclaimer: I do not know for a fact that aussie chick is hot. In the absence of any evidence, though, I'm going to continue assuming she's drop-dead gorgeous).
Tue 17 Feb | Aussie Chick | Thanks, you made me feel better, I thought I had lost my status as that nice cool chick in town. Thought that all my niceness and (mostly) intelligent comments were ignored, and I was being ripped to shreds for one erroneous post, being sent out to the boondocks for one fe paux...
Tue 17 Feb | no name | While I certainly enjoy reading just about everything you post here, you and Philo are my top two picks for "people who ought to have their own blogs because most of what they say is insightful or entertaining."
Tue 17 Feb | Aussie bloke | Yeah, Cosmo, you picked the wrong person to attack. Maybe you don't follow JOS much. Aussie Chick, you should write up your experiences sometime: 'Intelligent person has to deal with accountants - a real story.'
Tue 17 Feb | FullNameRequired | 'So what? what's all this? your diary ftped to JOS erroneously?' actually Ive been following aussie chicks posts with a lot of interest. (and a faintly mellow wish that I was still so young and enthusiastic about programming and clients and things) 'This is a software engineering/management forum. Not a funkygeek'sdiary.blogspot.com! ' wow, Im finding it hard to think of a post more directly relevant to a software forum than one that deals with software training, management and accountants. Why dont you post an example of the kind of post youd like to see cosmo? Ill read your thread with real interest...you sound like a real hardcore kind of programming guy, with heaps of anecdotes about your work and no doubt some real insights into various specialised areas...why dont you share :)
Tue 17 Feb | Justin | 2nd vote for Aussie Chick posts. I like Philo et al too, but their posts aren't nearly as cute ;) I hope, AC, that you have managed to negotiate a sensible hourly rate for helping them on the half days when you're not supposed to be working. You know. For all those 'just a quick call to ask...' interruptions. There's a great Dilbert cartoon about this where Alice does exactly what you have done - works half days for pro rata salary and agrees to help out at other times if necessary. Dilbert says 'so basically you negotiated a 50% salary reduction?'.
Tue 17 Feb | M | Aussie Chick - The new place I work has an upper level manager who will sometimes get involved in the nitty gritty. Before everyone groans (my first reaction), he does this for his own personal enrichment and it seems to have the effect of making him smarter, getting him in the trenches with the little guy, giving him some level of excitement on what he used to do. The key factor of course is he is a good listener and makes suggestions based on valuable experience - neverr demanding we go in a certain direction because of his ego.
Tue 17 Feb | Aussie Chick | >a sensible hourly rate for helping them on the half days when you're not supposed to be working. You know. For all those 'just a quick call to ask...' interruptions. Nothing too flash, but minimum 1hr pay, even for the 10min interruptions....Its okay I don't have an ADSL line, and I am logged on all day, phone calls never get through... But I have to find that cartoon, I will give it to my boss tomorrow!!
Tue 17 Feb | Aussie Chick | >neverr demanding we go in a certain direction because of his ego I think we have less of an ego problem in our workplace, (well maybe that is what it is), more of a 'too many cooks' situation. I have thrived of late being able to just hole up with my list of things to do and just get through them, do things the way I think best. When I actually have to get involved with other people I generally don't offer to many suggestions, my experience is that they are torn to shreds for ridiculise reasons 'I don't like that font', 'I don't like the way you italise the page number' kind of stuff.... I hate the idea of having worked for the past year on this stuff and then have them point out all the meaningless things that they don't like.
Tue 17 Feb | Cosmo Kramer | 'Its okay I don't have an ADSL line, and I am logged on all day, phone calls never get through... ' AC, hon, life is too short for dialup connection. Just my 2 cents.
Tue 17 Feb | FullNameRequired | 'Just my 2 cents.' I wouldn't even give you that for it :) seriously cosmo, either contribute something interesting or bugger off will you? your spoiling my breakfast. you honestly think we care about your two cents? Sanity check: we absolutely couldn't care less! Capice?
Tue 17 Feb | Aussie bloke | Leave cosmo alone. He's alright too.
Tue 17 Feb | FullNameRequired | 'Leave cosmo alone. He's alright too.' the only time I even noticed one of his posts and hes attacking AC for hers....maybe hes alright too, but its kind of hard to tell from this angle. He _really_ should try making some interesting posts of his own instead of adding worthless comments to posts made by people with something interesting to say.
Tue 17 Feb | Cosmo Kramer | 'He _really_ should try making some interesting posts of his own instead of adding worthless comments to posts made by people with something interesting to say. ' Oh God I so needed your timely advice. Get a life loser!
Tue 17 Feb | FullNameRequired | ' Get a life loser!' :) OK
Wed 18 Feb | no name | Personally I'd much rather read something like this than another outsourcing thread. It is quite common to have names for equipment rather than cryptic codes, AC, that's the (only?) reason for DNS for example.
Wed 18 Feb | Aussie Chick | >It is quite common to have names for equipment rather than cryptic codes, AC, that's the (only?) reason for DNS for example. I know, the bloodbank calls there plasma machines 'fred', 'barney' and 'wilma'. But I find it much easier to cross reference when the code is something meaningful. I know straight away that the 104z machine is much older then the 121z machine. So I suppose when you look at it that way, my system has its downsides afterall.....*grin*
Thu 19 Feb | blackmesa | AussieChick ­ ­­­­> You. Hmm, nah. AussieChick > JoS. :-}
Sat 21 Feb | Aussie Chick | what? I am very confused about what you meant by that (and curious!!)
numb minds | Fri 20 Feb | The Real PC
http://www.economist.com/agenda/displayStory.cfm?story_id=2454530 Maybe this guy has spent some time coding himself, because his mind seems to be a little numb. Of course there may be good things about off-shoring, but like almost anything else in the world, it all depends. He has a point of view and avoids mentioning anything that does not support it. (The fact that he assumes coding is a mind-numbing job shows how little he understands about the whole business of software development.) He just wants to reassure everybody that off-shoring wont damage anything in the long run, and that unrestricted free enterprise is always the best thing. But nothing is ever all good all the time, and there is no system that never needs any restrictions or controls. Big business does not care about people -- Im not saying it should care, but we have to at least recognize the fact that it doesnt, and it isnt all good ,and we sometimes need some protection. Knowing when protection is needed, how much and what kind, requires wisdom and judgement. Its easier to say we never need any protection than try to figure things out.
Fri 20 Feb | software engineer | Offshoring? What's that? Is it somethig that I, as a Software Engineer, should be worried about?
Fri 20 Feb | DJ | Sorry dude, Duplicate post, man http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=117080
business ethics and bugs | Fri 20 Feb | John Fisher
Ted reviewed Joels speech, I read: Bugs are bad. Fixing bugs is good. So, fix your bugs. Then he (Joel) brought up the next slide: WRONG. Fixing bugs cost money. So, fix the bugs that are worth it. From a business point of view this might be a wise decision. But I do not read anything about the customer who bought the product. Is he asked if the problem is worth solving? Yes I know you have a problem and you paid for my software but guess what: I only count profit and loss so read the disclaimer. How to get people passionate in hating you. So be a man, lose 20 K and fix Mr.Unknowns problem with his 486 who does not buy that much software anyway and make this world a better place. Yes, I like drama. kind regards John Fisher
Fri 20 Feb | ajs | Fair enough. I guess we'll be findin' 'n' fixin' all of our bugs before we release our software. Do you want it to run on Windows 2.0 as well?
Fri 20 Feb | sgf | IMHO you missed the point. Any reasonable estimate of the cost of fixing must account for user reaction. If many users with stop buying/upgrading that's a part of the cost equation.
Fri 20 Feb | Eric Debois | Well.. bugs that annoy users would make sense to fix from a business perspective too?
Fri 20 Feb | ajs | You can look at it 2 ways; either the squeaky wheel gets the grease, or chase the money. 1 line summary of JOS article - If enough people complain, or they have influence / cash, then fix the bug. Bit harsh, but that's business life. Inf the case of open source, the developers tell you fix the damn bug yourself, and send them the patch.
Book of the month? | Fri 20 Feb | gunga
There hasnt been a book of the month since december. May I suggest Code Reading: The Open Source Perspective, by Diomidis Spinellis? You can find more info at the authors website http://www.spinellis.gr/codereading/ Its about code reading (doh!) and the techniques needed to dive into a large codebase. A lot of techniques and idioms, as well as common errors and pitfalls, are discussed. Its rather C centric but everyone knows at least how to read C code. The Open Source in the title refers to the fact that due to the growth of open source, there is a lot of quality code to read and take example (good or bad) from. For me it was the best software book of 2003.
Fri 20 Feb | Gareth McCaughan | I had a brief look in a bookshop a couple of months ago. It seemed to me to be saying mostly obvious things; perhaps I was unlucky in the pages I sampled. Did I fail to spot some insights?
funny | Fri 20 Feb | Kilroy wuz here
http://homepage.mac.com/carobin/hung/
Fri 20 Feb | No spyware for me | So a page that has nothing to do with anything here but which requires the installation of a notorious spyware program to view. Seems to be a lot of these requests to view trojans being posted in this group lately.
Fri 20 Feb | Kilroy wuz here | Spyware? Whatchu talkin' 'bout, Willis?! I run Spybot Search and Destroy on my PC everyday, no spyware detected, dude.
What should MS do about leaked code (realistically | Thu 19 Feb | David B Rosen
Microsoft is ensuring that the leak leads to the worst of both worlds: any potential good guys are being intimidated by Microsofts cease-and-desist letters, while the bad guys will continue to share and find vulnerabilities in the code anyway. Or to paraphrase the gun lobby: With leaked code outlawed, only outlaws will have leaked code. At first I thought the situation with the leaked code would be similar to open source, where both the good guys and the bad guys are able to find vulnerabilities in the code. If MS were smart, they would immediately authorize everyone to examine the leaked code, solely for the purpose of finding and immediately reporting vulnerabilities. David B Rosen New York
Thu 19 Feb | no name | I don't think Microsoft would be too happy about the resulting torrent of bad news.
Thu 19 Feb | Eric Debois | Well.. throwing their weight about and threatening people will only keep the story news worthy longer, which will result in more downloads. I bet they know this. Try as they might, they have a snowballs chance in hell of containing the spill, and they probably know it. So, what are they doing? I suspect a great deal of spin doctoring is going on.
Thu 19 Feb | hoser | Buy back or reprice shares to keep their employees happy.
Thu 19 Feb | no name | Microsoft has thousands of top engineers developing and verifying its software. What makes you think 20 year old students are going to do anything useful?
Thu 19 Feb | B | You know I am amazed this hasnt happened before.  Any MS intern could have grabbed this, plenty of in house vendors had access and there are/were certainly a number of disgruntled developers who could have leaked the stuff.  Heck it was common for devs to take their checkout harddrive home ( on an external scsi disk ) and work from home.  Sure VinodV got fired, but thats hardly a deterrent right?  I wonder if PR had a contingency plan for the inevitable leak.  I guess they are glad the link was from a vendor. 
Thu 19 Feb | hoser | 'Microsoft has thousands of top engineers developing and verifying its software.' That's why Windows ME was such a technical success.
Thu 19 Feb | Li-fan Chen | > Microsoft has thousands of top engineers developing and verifying its software. What makes you think 20 year old students are going to do anything useful? To argue against this loaded question is something I don't want get into. Are Microsoft engineers top of the line? There's little doubt they are probably not the worst in the industry. Are the tools they use and the environment they work in conductive towards writing secure operating systems? According to some top administrative guys at Microsoft--they weren't. That's why they have this big loud security initiative (which, to the best of my knowledge, I have no idea whether it's working or not). Alas, it happened 2 years ago, after Microsoft Office 2000/2001/2002, Windows NT, Windows 98/ME, and Windows 2000, Visual Studio 6.0 and Visual DotNet Version 2002/2003 was developed and released. And if you look around, that's THE INSTALL BASE OUT THERE. So if someone starts a thread like this, it's because there's real worry that most anyone interested in infiltrating your machine in the pass IS becoming better equiped than ever to do so.
Thu 19 Feb | flamebait sr. | The big thing is that MS argued in the anti-trust trials that it shouldn't be obligated to open up its source code because it would cause security problems. So, either they were lying then, or there's some pretty poor code in the codebase. The big thing is that, in the days before WinNT, security wasn't even on the spec sheet. People don't, by default, code for security and the C standard library makes it easy to screw up. So it's not an entirely implausable notion that a bunch of reasonably bright folks could produce a codebase riddled with potential security holes.
Thu 19 Feb | M | I'll fall back on the open source thingy that knowledge is power in source code. We will hear about these various bugs that, I guess, army's of people are looking at on their own time. They will probably be given attention via virus and other security warnings. In the end, there will be a lot of lost time, but a more secure operating system. Will this be a net-positive? Yes, from the operating system's perspective. No, from the admin's perspective (which in many cases is the casual user). MS, per their licenses, is obligated to slap everybody in the wrist who violates their agreement. The cost of doing business I guess. The alternative would be for them to willingly let people violate their license or change it. Probably not likely.
Thu 19 Feb | Mr. Fancypants | This whole thing is such a non-issue, other than the media hype and Linux-zealot snickering.
Thu 19 Feb | glub glub ... | And the stock price.
Thu 19 Feb | glub glub ... | <snicker>
Thu 19 Feb | Eric Lippert | The MSFT stock price is at 26.77-- it hasn't been this low since, uh, hmm, let me check -- December 2003, eight weeks ago. Hardly a precipitous decline. I am unconcerned about the impact of a source code leak on the stock price.
Fri 20 Feb | Just me (Sir to you) | I have told this before, so if you are tired of hearing it ... well ... close your eyes. Security coding is really hard. Why? Anything that you missed, anything that you didn't know or think of can kill you. Cracking is far, far easier. Why? Anything that you missed, anything that you didn't know or think of is just a missed opportunity. Nothing more. Even if the 'defending' coder is 100 times better than the 'attacking' coder, the defender is still disadvantaged. He has to find every last single issue to succeed. All the attacker has to find is one single 'missed a spot' for success. Nobody disagrees that giving an attacker less information, e.g. by withholding the source, is a good thing. Everybody agrees that relying on 'security through obscurity' is a bad thing. Read those two last sentences again if you have to. It is best to keep your source close to your chest, but always assuming that your enemies have full access to it. As for the 'many eyes' thing: who needs 1.000.000 monkeys on a typewriter. Just give me a handful of Shakespeares. (also, I'd really like to know how much different the eye count really is for some OSS code vs. let's say MS or Oracle stuff. Not the 'potential' eyes, but the actual pro-skilled people scrutinizing the code).
Fri 20 Feb | Stephen Jones | It would be a non-issue of course if MS had not spent the last three years spread FUD about Open Source.
Fri 20 Feb | Bathmophobic skier | Here's what the experts say about the quality of the code: http://www.kuro5hin.org/story/2004/2/15/71552/7795. In case you don't care to RTFA, the summary is that the new code is very good, and the old code is patch upon patch to make things work with the multitudes of possible configurations of Windows PCs. The source code comments are an interesting read and there are explicit comments about supporting various MS software and undocumented APIs (the wall the MS says seperates O/S from apps development is a myth). I plan to fire up my WinMX and try to find it, but don't tell anybody. Here's where MS sent a C+D letters to a P2P user: http://slashdot.org/article.pl?sid=04/02/19/1919216&mode=thread
Fri 20 Feb | Just me (Sir to you) | 'there are explicit comments about supporting various MS software and undocumented APIs (the wall the MS says seperates O/S from apps development is a myth).' Anyone reading Raymond Chen's 'the old new thing' blog http://weblogs.asp.net/oldnewthing/ knows that the systems people have to go to extreme lenghts to support old programs, both MS and 3rd party, that against all warnings still used 'undocumented' features. Since MS is extremely committed to backward compatibility, they put in the extra work to keep the apps from hell running on the next releases. This keeps the customers happy, since they don't care that it is the bloody app's fault. All they care about is 'either Dohickey 0.9 runs on Windows 5000 or we don't upgrade'. In many cases the Dohickey enterprise long since folded or stopped supporting Dohickey, or even the Dohickey sources have been lost forever. 'undocumented' stuff is ominipresent in programming. Modern programming languages explicitely support and encourage 'undocumented' coding. It is considered best practice. What else are interface, private, friend, final etc. but tools to facilitate hiding stuff? The whole OO paradigm preaches encapsulation. But there are always the herous that think they need to bypass these intentions. Do they care it is guaranteed to fail once the underlying representation changes? No Sir! All your 'experts' seem to find is that some poor sods on the windows team have to clean up the resulting ugly mess. It says nothing, neither positive nor negative, about the soundness of the 'chinese wall' IMHO.
Fri 20 Feb | Mr. Fancypants | I agree with Just Me, and this ties into Joel's don't rewrite article.  Sure, maybe the 'old' code sucks but it probably sucks because it has to suck to deal with everything that comes along with being overly backwards compatible and any attempt to rewrite it to be 'good' would result in the loss of all those years of ugly but needed fixes.
Fri 20 Feb | MikeMcNertney | I agree completely with Just Me. I'm sick and tired of seeing posts like 'why don't they just fix their code.' Why don't YOU go scour through the 100 million or so lines of code written over the past 10 years and find every possible buffer overflow or security flaw. It's just not that simple. As for the comments 'proving' that the OS people made special concessions to the MS apps... I'm sorry but I just don't get that from the reading. IMO if that's your opinion after reading that stuff then you are previously biased against MS. Numerous comments mention having to do hacks for backwards compatibility of outside products. It just so happens that MS Office is one of the major products that they absolutely could not allow to break, due to its prevalence in the market.
Computer Science to Medicine | Thu 19 Feb | Euler C. Riterion
Im taking a computer science degree at a top University. My courseload is heavy, but Im doing fairly well. Im in first year right now. Ive been thinking lately that once Im finished, I might want to go into the field of medicine. Usually they accept people from any undergraduate program as long as they take some required courses such as first year chemistry and biology. The computer science faculty is well-known in that the workload placed on students is fairly high. But what do you guys think, is taking these classes manageable? Also, what classes would you recommend as electives?
Thu 19 Feb | no name | I'd switch to either biology or chemistry.  And get some volunteer health care experience.
Thu 19 Feb | Sgt. Sausage | Medicine is a good field, with a huge potential market as the 'Baby Boomer' generation is starting to get old (sorry guys, no offense meant if you fall into this) -- Older people typically have far many more health issues than younger generations. I see it as a great field to get into for the next 10 to 15 years -- with one caveat: If you're in the US (you didn't say), look for some heavy additional government regulation in that same time period that may put caps on your earning potential. If the US goes for some sort of government sponsored 'Universal Health Care', watch the compensation in the medical field drop drastically. Just my opinion. Feel free to shoot holes in it.
Thu 19 Feb | Li-fan Chen | If your school is any good, you'll have to be strong at all five pillars to do well in medicine: math, physics, biology, chemistry, and lots and lots of tuition money.
Thu 19 Feb | The real Entrepreneur | You didn't say what country you're in. If you're in the USA, I'd recommend picking a specialty that's ELECTIVE. I.e., a specialty that a patient will essentially pay 'out of pocket for'. Otherwise, you're working for the insurance company, not the patient. My knowledge is based on the USA and the following: My wife is a speech therapist. 3 of her brothers are doctors (Orthopod, Pediatrician now with the CDC, and a Plastic Surgeon). The 3 brothers ALL recommended AGAINST going into medicine. Here in the USA (and possibly even more so in other countries) your customer is the insurance company, not the patient. So you're caught between patients who want everything (even if it's not medically needed) and insurance companies who don't want to pay for anything. WORST BUSINESS IN AMERICA http://www.inc.com/magazine/20031201/theworst.html 'In seven days their medical practice could be forced to shut down, and the sheer absurdity of the situation has put doctors Richard Levine and Michael Faust in a slightly silly mood. Seated in Faust's cramped office overlooking the hills of northwestern New Jersey, the two managing partners of Valley Center for Women's Health are still trying to sort out their feelings about an offer they just got on this sunny day in late July. A malpractice insurer has promised very attractive policies to their four partners in obstetrics-gynecology, but the insurer refuses to cover Faust and Levine, the two managing partners, at any price. Since their current insurer has already announced that it will not renew any policies written in New Jersey, Faust, 49, and Levine, 50, are only days away from being left 'naked'--and legally barred from practicing medicine. ' Visit the link above for the rest.
Thu 19 Feb | Tom Vu | 'Usually they accept people from any undergraduate program as long as they take some required courses such as first year chemistry and biology.' if you want to get into med school, it's all about the numbers. MCAT and GPA. I knew people who majored in history so they could get a high GPA for med school, and it worked. Of course, there is always the caribbean or mexican 'med -schools' or chiropractor school.
Fri 20 Feb | mb | med schools supposedly also like people who got other degrees--especially engineering degrees, which a CS degree might be.
Fri 20 Feb | Katie Lucas | You know, reading that, I'm not sure which is worse -- practicing medicine in the US with that sort of grief about HUGE amounts of money, or practicing it in the UK where you have different sorts of grief about TINY amounts of money. Either way I'm really glad I turned out to have a talent for software design and not something like brain surgery.
Fri 20 Feb | Name withheld out of cowardice | I went to medical school in the US. Doing so with a computer science background is perfectly plausible and might even intrigue the admissions committees given the number of medical informatics problems yet to be solved. The course load you imply is perfectly manageable if you are intelligent enough and willing to do slightly less drinking (i.e. maybe get drunk only on Saturday night most of the term). As for doctors who recommend that no one go into medicine, this phenomenon is well documented going back to way before I was born. One never knows what a field will be like in practice and many are dissappointed. The main warning I would give you is that in the US you will pay for your own education and in some lower paid specialties the day is fast coming when the pay will not adequately handle the student loan debt.
why's (poignant) guide to Ruby | Thu 19 Feb | pds
This is just too crazy. This is a clear example of how drug usage enhances creativity, in the form of a Ruby technical manual: http://poignantguide.net/ruby/ ...found this on Slashdot, off the main page: http://developers.slashdot.org/developers/04/02/18/168235.shtml If for nothing else, you absolutely have to see the CamCam advertisement on the main page. Defies description. Pete
Thu 19 Feb | Li-fan Chen | I am on chapter 3, and if this is some trick to get us to learn Ruby... it's working...
Thu 19 Feb | Eric Debois | Pretty cool... I like this line 'I’m Peter Pan holding your hand. Come on, Wendy! Second star to the right and on till morning.' Theres something about being called Wendy that makes me giggle.
Thu 19 Feb | Eric Debois | Ignore my last post, it diddnt come across as intended.
Fri 20 Feb | Jimmy Jo-Jo | No problem, Wendy.
Fri 20 Feb | Nobby Good Guy | Blimey, a mention of Gorky’s Zygotic Mynci in the first chapter has got my curiosity piqued.
Fri 20 Feb | Guyon Morée | the little cartoons are brilliant (chunky bacon?)
Fri 20 Feb | Joel Spolsky | The cartoons are brilliant, the writing style is ebbulient and wonderful, I loved every minute of it... ... and did not learn a single thing about Ruby.
Fri 20 Feb | Eric Debois | Hmm.. yeahm the text just stops after the syntax rundown. =(
Fri 20 Feb | Elephant | Reads like a Hunter S. Thompson acid trip...
Fri 20 Feb | Yves | The cartoons back-and-forth banter remind me of Calvin and Hobbes.
Fri 20 Feb | Nick | If it ever went to print, I buy it just for the sidebars.
Fri 20 Feb | Stephen Jones | I get the same feeling with this I got when I first read the "Hitchhikers Guide to the Galaxy". How does the guy manage it!?
Fri 20 Feb | pdq | Reminds me of the book I learned BASIC from in the seventies (Instant Basic from Dilithium Press).
To computer addicts | Thu 19 Feb | surfer
Computer is doing lots of processing for you. It connects you with information and people. It runs program to get output. It becomes your playground to do all sorts of things. What type of computations you can do as person. Is it very limited in most sense. You can know what a computer can do in terms of its computing abiities. Do you know what you can do? ie.. besides ordering Pizza and deleing junkmails. .. Well, its time to recognize what you can do in terms of what computer is able to do.
Thu 19 Feb |   | uh?
Thu 19 Feb |   | wha?
Thu 19 Feb | Kyralessa | Um...I can convert Celsius to Fahrenheit, and vice versa, in my head. Is that what you're looking for?
Thu 19 Feb | Joe Blandy | Finally!  Somebody says what we've all been thinking!
Thu 19 Feb | anon | I can derive the quadratic formula in my head.
Thu 19 Feb | old_timer | Yeah sure, but can anyone derive what this guy is saying?
Thu 19 Feb | Joe Patterson | You'll need a computer...
Thu 19 Feb | Elephant | Surfer is asking if we are aware of our own limitations as far as 'computation' goes as we are aware of a computers limitations as far as 'computation' goes. I would guess that that cryptic message was the result of one of those wonderful translation programs. Sometimes their output is just plain funny.
Thu 19 Feb | surfer | What I am saying... You use computer for lots of proccessing abilities etc.. How do you use yourself as a human. What are the potential which are given to you that you use to fullfill a goal. for example, with computer you can click and get a link and find out the results of the search. What are the task that you can perform computationally?. It's is not just about math or formula. It's about whatever humanly possible in terms of computational abilities.
Thu 19 Feb | Bathmophobic skier | I can tell the difference between a cat and dog just by looking at it with >99% accuracy.  How's that for image processing!
Thu 19 Feb | Joe Blandy | Are we unwitting participants in a Turing test here?
Thu 19 Feb | surfer | Bathmophobic skier 's reponse about image processing accurately reflect what I am trying to say.  Do we have list of such item somewhere which I can take a look?
Thu 19 Feb | Craig | Stay away from the purple acid...
Thu 19 Feb | Name withheld out of cowardice | I can imagine pornographic images.
Thu 19 Feb | Doug Withau | I can to 21, but not in mixed company.
Thu 19 Feb | Greg Hurlman | That looks strangely like one of the "what happens when you get your punctuation wrong" exercises from long ago...
Thu 19 Feb | Aussie Chick | He avoided any use of a comma though, must have heard abouts Joel's reputation.
Thu 19 Feb | Nick | I _think_ I understand what you're trying to say. And, yes, I've thought of it often. The example that I think of is football. It's raining and the ball is wet. There's a 10 MPH southernly wind. The QB is running East and the Receiver is running a flag route North, then at 10 yards out veers North West. The QB takes the snap, backs up and starts running to the right, throws a perfect spiral, and hits the Receiver on the numbers. At first glance, the problem is simple Newtonian mechanics. But it's really more complex than that. In his mind, the QB is calculating all kinds of things that would be a onerous task to write a program to do. But he's not concious of the calculations. He just does it. And even though we all know that the brain is an amazing 'computer', I still marvel at it all the time.
Thu 19 Feb | EAW | well said Nick. Also, try hard-wiring a computer to find puppies "cute". 
Thu 19 Feb | surfer | Thanks Nick for helping. You said my point very well with a very complex example. We compute only at certain point in the life. Not all time. We are allowed to be lead by computations that we have made in the past. The use of computer tells that we have urge to compute soemthing. If we practice computing in our head, we will try using our own computational abilities rather than making heavy use of computers.
Thu 19 Feb | Kero | I can walk upstairs forwards or backwards carrying an unbalanced load while thinking about what I'm going to make for dinner or how tight I'm going to play in the Hold 'em tourney when I get home.  I can ride a bike, with and without using my hands.  I can type without thinking about what keys I'm hitting.  I can almost carry a tune.  I can recognize words phonetically without them being spelled correctly.  I can stand on one leg.  I can compare the color blue with a sweather I had as a child and a band I saw last week, at the same time.  All your brain does is computations, you just notice them about as much as a fish notices water.
Thu 19 Feb | Chris Tavares | Vaguely remembered from 'Heart of the Comet' by David Brin and Gregory Benford: 'The difference between a computer and a human? The computer will detect an incoming meteor, and start solving the ballistic equations and be happily crunching along while the rock impacts, smearing the computer across the landscape. 'The human will look, do a quick estimate of the vectors involved, and jump out of the way!'
Thu 19 Feb | Elephant | One reason for the extreme efficeny and speed is the training set that humans have.  Take for example an OCR product.  It has a physical training set indicating what the letter 'A' should look like, and how to recognize variations on it.  By the time you're an adult, you've undoubtedly seen millions if not billions of this symbol.  No wonder we are able to recognize it so quickly.  The training set is enormous.  We may not understand the physics of every day life, but we are able to deal with it and process it for the same reasons that we can recognize the letter 'A'.  The amount of time training and recognizing how the physics behaves allows us to make better estimates.  Or so goes my estimate.
Thu 19 Feb | pdq | I use myself to procreate. (Take that translation engine!)
Thu 19 Feb | Kevin | I can say "Hello, world!" in 23 different languages.
Thu 19 Feb | surfer | Wow, I really love the responses. If taken not lightly, it has ability to form the list of applied common sense technology which shapes our daily life. Technlogy has shaped computer world. New things in the computer science are discovered daily. Which means lots of progress of computer technology. New technology is making the use of already discovered technoloy. l Similarly if we discover new technlogy in common sense field, ie.. computational ability it means lots of progress for us. An average human being is trying to posses the common sense throught the life. Disovering own computational abilties provide a base for forming higher abilties and grwoth.
Thu 19 Feb | Aussie Chick | translation engine? I like the turing test theory better. But kind of puts a spin on the turing test when we are so used to having an english-as-a-second-language type person enter the room and expect bad english. Though I wouldn't expect it would count as a succesful pass of the turing test if all the participants thought you were a foreigner...
Fri 20 Feb | no name | > try hard-wiring a computer to find puppies 'cute' I'll leave out 'main' etc. bool bPuppiesCute = true; Since all puppies are cute, it is really easy. Maybe one could expand it so that they are not cute at the point in time that you find their poop on the carpet, but I will leave the coding of that as an exercise for the reasder.
Fri 20 Feb | apw | I can read upside down (a book that is)
Fri 20 Feb | EdithW | Surfer, you've started with a false premise. You write 'Technlogy has shaped computer world. New things in the computer science are discovered daily. Which means lots of progress of computer technology. New technology is making the use of already discovered technoloy. l Similarly if we discover new technlogy in common sense field, ie.. computational ability it means lots of progress for us.' The computer techncology to which you refer is simply the result of human computational ability. Your statements imply that we're neglecting human development in the pursuit of technology, but the technological advances are based on human abilities to observer, analyze, compute and act. That said, I've observed that a reliance on electronic devices has undermined some fundamental skills in general. For example, typos now seem to routinely occur in books, national magazines and professional publications. Part of the problem (and I am basing this on decades of experience in the publication industry) is an over-reliance on spellcheck programs. Another example is that of basic math skills: clerks in supermarkets rely on cash registers and do not have the math skills to recognize an obvious error when incorrect numbers are entered. Recently, a clerk entered an incorrect amount for the cash I handed over for a $95 grocery bill. I was owed $5 in change, but because of the error, the register said I was owed $55. She insisted on handing me $55, unable to grasp the concept the 100 minus 95 is a lot less then 55. We had to call the manager over to sort it out ...
Fri 20 Feb | Martha | EdithW, I would have taken the money. Any cashier who is that inept with numbers deserves to have to make up the shortfall out of her own pocket.
Fri 20 Feb | surfer | EdithW: ===>The computer techncology to which you refer is simply the result of human computational ability. Your statements imply that we're neglecting human development in the pursuit of technology, but the technological advances are based on human abilities to observer, analyze, compute and act. I never said that we are neglecting human development. I said.. because of the advancement and interaction with computers, we should be more aware of computation taking place inside us.
Fri 20 Feb | Kyralessa | That's a rather cutthroat way to live, Martha.  Next time _you_ make a mistake at work, you think they should dock you half a day's pay to be sure you learn from it?
Rule-driven GUI's | Thu 19 Feb | NC
Hello, Im curious if anyone has any experience with using rule-based (business rules, RETE, etc) systems to drive GUI logic. For example, instead of having code attached to the click event of a Cancel button, the button would input the event into the rule pool where one or more rules would fire, and close the window, or whatever is called for. Is this sort of logic popular at all? Ive done some searching on Google/Yahoo/etc., but havent seen much. Ive been looking at rules systems for Java, specifically Drools. Seems like it would be a good fit for this sort of thing .
Thu 19 Feb | my two bits | I've taken this approach in a couple experimental systems in years gone by, and honestly it worked very well. On the other hand, integrating this approach with common GUI packages would be very tedious and challenging, I would imagine. As another application of rules being used in the GUI, I've used them to drive a layout engine with pretty good results, also in experimental systems.
Thu 19 Feb | Elephant | I'm curious as to what sort of benefits you hope to gain from this.  Why is having a message driven system based off of rules so that an outside component closes your dialog box for you better than having the two lines of code hard coded to the dialog box to close it for you?  I don't see what you hope to gain from this.  All I see is a difficult system to program with an incredibly steep learning curve that may or may not plateau, that takes up more disk space, more memory, and more CPU cycles for the same end user effect.  I only ask as I've had some experience working with such nightmarish type systems, although my nightmare seems to be no where near the horror of a dream that you describe.
Thu 19 Feb | Gwyn | They had a rule-based Pensions system where I contracted last year. I believe the product was ok but the company that provided it were absolutely crap and never seemed to test anything. We were normally getting about a patch a day! However, it was sold as a rule based pensions system but I don't think it ever got to the point where it could be tailored by the data alone and consequentl new business rules often required code changes too.. From this and other experience I have come to the conclusion that any rule-based system you develop is always going to have to be a compromise and you're never going to be able to tailor it how you want.. either that or it's so tailorable that you might as well be writing code for all the rules you have to put in!
Thu 19 Feb | Elephant | This reminds me about something my boss at the time said when I was working on such a system. I developed some code for developing custom reports. It was a bit different then described, as plugins did require coding... anyhow, I had an XML report descriptor file that spelled out fields, formatting, etc. I required that the dev implement three functions, one for filling in the field, one for should a section be processed, and should the section be itterated. Anyhow, my boss asks me if I can narrow it down to two functions to implement because he thought three was simply asking for a lot of work. Granted it's a stretch, but extrapolating his reasoning out across the entire middleware layer we were working on, I figured that he'd want all decions answered with a yes or no response. 1 or 0, back where we started if you follow. All that time, millions of lines later, may as well done nothing to begin with. I think the irony of the situation was lost on most people on my team. Oh well, maybe I just have a peculiar sense of humor.
Thu 19 Feb | NC | Elephant (and others), To answer your questions -- I really don't know. I have rules experience in other areas, and this seemed a *possible* extension, though perhaps not a good one. Agreed, you raise very good points. I'm just on a curiosity fishing expedition here. As two-bits commented, it can be very handy with layout problems, and similar problems. If the rule-base is already there, why not look at using it in different ways?
Thu 19 Feb | Crimson | NC, This definitely is a possibility in Java as long as you're careful about not integrating your behavior code in your GUI code. Just create an action that does what you need and have all relevent GUI components register as listeners to it.
Thu 19 Feb | Joel Spolsky | Ackkkk noooo.....!!!!! I built a GUI using a rule-driven expert system (ART on a Symbolics workstation. Old stuff.) As soon as you try to do anything reasonably complicated, you have to start setting priorities for various rules to make sure things happen in the right order. Suddenly you find yourself with lots of rules at different priorities, and, effectively, it's like BASIC with line numbers, only the line numbers are in reverse order (higher priority fires first). Unbelievably unclean mess. The thing I was doing was a small project so it survived but anything larger would have collapsed under its own weight.
Thu 19 Feb | son of parnas | You get the same problem you have with large complicated prolog programs. Order becomes unpredictable and you will never know exactly what will happen. You start having to add in cuts and other magic to add back in predectable sequencing.
Thu 19 Feb | John Eikenberry | If you are thinking of a system like this I'd suggest you start with a bit of research. The AI community has tons of experience in rule based systems (expert systems or knowledge based systems). A bit of reading now will save you a lot of hassle later. Joel's problem with priorities is a good example of something you'd know to avoid with a bit of research. Priorities are known not to scale and should avoided. Instead use a simple dependency system will deal with the rule ordering.
Thu 19 Feb | my two bits | Without knowing the details of any of the horror stories mentioned above, I suspect at least some of the problems stem from poor design. Just as there are 'code smells' in Java or C# code, there are 'smells' in rule driven systems. Heavy reliance on sequencing and priorities is one of the most prevalent. Also, I wouldn't recommend trying to code an entire GUI system as rules. There are parts of GUIs that are definitely best left to imperative style program fragments. The executive functions that coordinate things and maintain state are excellent candidates for encoding as rules (i.e. is control-x currently active?). Processing functions and other algorithmic requirements are almost always better handled using other mechanisms, though. Rule systems require a fundamental shift in the way you think about solving problems. They are a little difficult to wrap your thinking around at first, but once you understand them, they can be a powerful tool in your toolbox. Why not do a few simple tests for yourself, and see what you think?
Thu 19 Feb | HeWhoMustBeConfused | Joel, your problems were caused by ART, not rule based coding. You would have had a much different experience using Guru or KB/C. Even VP-Expert would have given you a better application model.
Thu 19 Feb | Chris Tavares | It probably doesn't qualify as a rules-driven system, but I saw an excellent discussion on building GUIs (and widgets/controls specifically) using a production system. The nice thing was that the setup was such that it was fairly easy to take the production rules and generate the underlying GUI code. I, unfortunately, don't remember which book it was in right now. If anyone's interested, I have it at home.
Thu 19 Feb | Karel Thönissen (www.hello.nl) | Chris, Yes, I would like to know.
Fri 20 Feb | NC | Second that Chris. I'd be very interesting. Thanks.
Fri 20 Feb | NC | Of course I'm interesting, but I'm interested as well :)
Fri 20 Feb | Chris Tavares | I found the book. It's here: http://www.bookpool.com/.x/ehqeo5nnp6/sm/1558604189 The discussion I was referring to was in Chapter 8. This was the textbook for a gui class I took a few years ago. I can probably come up with more information, but it'll take a couple of days for me to get it together.
Any downsides to REALBasic (for Windows)? | Thu 19 Feb | The real Entrepreneur
Hi, In my continuing (eternal?) quest for a VB 6 replacement, Im looking at RealBasic. At first blush it meets all my requirements: a. Productive IDE. Intellisense/code completion and other enhancements b. Produces standalone EXEs that start out *reasonably* small (looks like a 1.3 MB overhead for the runtime core in the EXE) It even has the benefit of compiling for the Mac, although thats just a nice to have not a requirement. GOTCHAS? Are there any Gotchas that Im missing? Anyone run into problems with RealBasic? Bugs? Features it should have but is missing? (for example, I cant set the text color on Buttons or List boxes. Seems like a simple idea, but it wont do it)
Thu 19 Feb | Paul Lefebvre | I am a big fan of REALbasic. I mostly use the OS X version, although I also use the Windows version occasionaly at work. Version 5.5 is currently in beta and will likely be released in a month or so. New features include: * Can build Linux apps * Try/catch blocks * All-new database engine * Remote debugging * More efficient compiler * Console/Service applications * Mach-O Support on Mac OS X * Simpler sockets * interprocess sockets * Access the address book in Mac OS X * Comboboxes * Styled Text Classes I've been using the 5.5 betas for some time now and they are looking pretty solid. Some gotchas: * ODBC driver is a bit buggy * No native Oracle or MS SQL server drivers * Cannot create components or DLLs * Proprietary file format, although there is an XML export capability Overall, I find it to be a nice blend of VB6 and VB.NET. I write the Database column for REALbasic Developer Magazine, so I am a bit biased.
Thu 19 Feb | Dan Brown | What I miss is the drop-down list box of available functions/members when using intellisense.  May not be an issue for people that use it on a daily basis, but my primary language is C++, I'm only a vb/vba dabbler.
Thu 19 Feb | Noname | Do you need to use "Dim" to declare variables in RealBasic?
Thu 19 Feb | The real Entrepreneur | What are: '* Styled Text Classes' ? Does this (I HOPE!) refer to styled text being available in things like command buttons? 'What I miss is the drop-down list box of available functions/members when using intellisense. ' It thought that intellisense would provide this if you hit the the Tab key when you get the '...'. It might be nice to have that list automatically come up, but it's not a problem for me.
Thu 19 Feb | Paul Lefebvre | From the Beta ReadMe: 'New with RB 5.5 is the ability to do styled text operations independant of an EditField.' I have no idea if this lets you change button text. Yes, like VB you need to use Dim to declare variables in REALbasic.
Thu 19 Feb | Dan Brown | Crap, I didn't realize it would come up when you hit 'tab'.
Thu 19 Feb | Albert D. Kallal | Any comments or opinions on the data engine? How good is it? Albert D. Kallal Edmonton, Alberta Canada kallal@msn.com http://www.attcanada.net/~kallal.msn
Thu 19 Feb | Koz | Another question on the data-engine,  does it complicate installation?  i.e. do you need to install some BDE style data engine or is it pretty much standalone?
Fri 20 Feb | Paul Lefebvre | The database engine included with RB 5.2 is pretty weak. It works, but it has limited SQL support, is prone to corruption, tables/columns cannot be dropped and other strange things I'm forgetting right now. The new database engine included with RB 5.5 (both Pro and Standard) is a fantastic improvement. It supports a subset of standard SQL92 syntax, indexing, larger field/database sizes, TimeStamp data type and more. Both databases are single user. In 5.2, the database is simply a file that you include with your application. In 5.5 the database can also be a simple file or it can be contained in a folder of separate files (to support larger database sizes and improved performance). You can download the beta from the REAL Software web site to check out the Database readme.
On Inspiration | Thu 19 Feb | Sathyaish Chakravarthy
Whenever there was a post on this forum about the mental blockages of going about designing a particular task, or about God and Godel, if my recollection is to be creditable, Ive always wanted to share this piece with you friends. This essay on Inspiration, written by an ardent fellow-member of ISKCON (International Society for Krishna Consciousness), formerly a scientist, rechristened as Sadaputa Dasa into the Swami Order of the fraternity, now of course a tonsured monk, makes a point about Inspiration. In a nutshell, he says that any attempt to give a mechanical explanation of inspiration based on the known principles of physics meets with two fundamental difficulties. First, the process of inspiration can be explained mechanically only if we posit the existence of an elaborate algorithm embodied in the neural circuitary of the brain. However, it is as hard to account for such an algorithm as it is to account for the inspirations themselves. Second, even if we accept the existence of such an algorithm, the mechanical picture provides us with no understanding of the subjective experience of inspiration, in which a person obtains the solution to a problem by sudden revealation, without any awareness of the intermediate steps. Those of you who might have read Joseph Murphys The Power of your Sub-conscious Mind or Jose Silvas Mind Power techniques would collate the pieces. Id love to reproduce some excerpts out of his essay, but cannot do so right away for paucity of time.
Thu 19 Feb | www.marktaw.com | Arthur Koestler took the idea of Inspiration to the Nth degree in his book On Creativity. I felt the book, while it had it's inpspired moments, was on the whole bland. I'd tend towards an A Priori view of Inspiration, or at least writing about it - You have to be inspired to come up with a theory of it, it's not something you can tackle through market research and board meetings. Blondie24 is a computer program that taught itself how to play Checkers. Using a generational and natural selection based process it created different algorithms for play until it reached a certain level, and ranked very highly on Yahoo! games. By feeding the raw information of the current state of the chess board into the program, Blondie24 would spit out a move, yet the programmer didn't even know exactly how it arrived at the choice it made, and - if concious - I doubt Blondie24 could explain the process. If you're a fan of Chaos Theory, you could think of life and of the mind as a fractal pattern, where minor variations at one point could lead to stunningly different and beautiful patterns after a short while. That is, if you insist on thinking of any of these things in mechanical terms.
Thu 19 Feb | Chris Tavares | I don't know; sounds pretty wishy-washy to me. The human brain is the most sophisticated pattern matching machine in existance, but that function occurs at a level below our consious mind, so we don't realize it's happening. Perhaps 'inspiration' is just the brain finally getting that last piece of data to trigger a pattern match on something?
Thu 19 Feb | www.marktaw.com | > I don't know; sounds pretty wishy-washy to me. Shhhh. ;-) You can't sell your book/talk show/audio cassette series/lectures/religion based on 'the brain is the most sophisticated pattern matching machine...' No wait, I think there is a lecture series based on that.
Thu 19 Feb | Gareth McCaughan | Um, isn't the term 'rechristened' spectacularly inappropriate for a Hare Krishna dedication ceremony? It seems to me that the two arguments against mechanistic explanations for inspiration are both a bit dubious. The trouble with the first is that it amounts to 'If X is true then Y must be true; I don't find Y plausible; so X must be false', which is only any use when addressing other people who don't find Y plausible. In this case Y is 'The brain's workings involve sophisticated algorithms embodied in neural circuitry', and anyone who's at all inclined to believe in a mechanistic explanation for inspiration will have absolutely no trouble believing Y. So unless argument #1 is accompanied by a separate argument against Y, it's not going to convince the people you want it to convince. The trouble with the second is that it's not true. In other words, I bet that any half-plausible mechanistic explanation for inspiration *will* (at least purport to) explain how it is that inspiration tends to feel like it arrives as a sudden revelation.
Fri 20 Feb | Sathyaish Chakravarthy | I apologize for sounding a bit rude with the use of an inappropriate word; I am more often subject to lapses of anomia, and so I couldn’t resist the tickling a while longer. I’ll be a little more careful in the future. You’re right when you nitpick a subjective disinclination against a mechanistic explanation in the “summary” I posted. However, reading the relevant excerpts from the essay would dismiss the suggestion. I bet that any half-plausible mechanistic explanation for inspiration *will* (at least purport to) explain how it is that inspiration tends to feel like it arrives as a sudden revelation.” While the author does quote a rudimentary analysis of the mechanical interactions in the brain that could be thought of as leading to inspiration, what he irradiates is the inadequacy of such a materialistic explanation to explain the “subjective experience” involved. Let’s hear it from him. Modern day scientists acquire knowledge, at least in principle, by what is called the hypothetico-deductive method. Using this method, they formulate hypotheses, and then test them by experimental observation. Investigators consider the hypothesis valid only insofar as they are consistent with the data obtained by observation, and they must in principal reject any hypotheses that disagrees with the observation. Much analysis has been directed toward the deductive side of the hypothetico-deductive method, but the equally important process of hypothesis formation has been largely neglected. So we ask, “Where do the hypotheses come from?” It is clear that scientists cannot use any direct step-by-step process to derive hypothesis from raw observational data. To deal with such data at all, they must already have some working hypotheses, for otherwise the data amounts to nothing more than a bewildering array of symbols or sights and sounds, which is no more meaningful than a table of random numbers. In this connection Albert Einstein once said, “It may be heuristically useful to keep in mind what one has observed. But in principle it is quite wrong to try grounding a theory on observable magnitudes alone. In reality the very opposite happens. It is the theory which determines what we can observe.” (Reference: S.G. Brush, “Should the History of Science be rated X?” Science, Vol. 183, p. 1167) Pure mathematics contains an equivalent of the hypothetico-deductive method. In this case, instead of hypotheses there are proposed systems of mathematical reasoning intended to answer specific mathematical questions. And instead of experimental testing of a hypotheses, there is a step-by-step process of verifying that a particular proof, or line of mathematical reasoning is correct. This verification process is straight-forward and could, in principle, by carried out by a computer. However, there is no systematic, step-by-step method of generating mathematical proofs and systems of ideas, such as group theory or the theory of Labesque integration. If the hypotheses in science and systems of reasoning in mathematics are not generated by any systematic procedure then what is their source? We find that they are almost universally arise within the mind of the investigator by sudden inspiration. The classic example is Archimedes’s discovery of the princple of specific gravity. The Greek mathematician was faced with the task of determining whether a king’s crown was solid gold without drilling any holes in it. After a long period of fruitless endeavour, he received the answer to the problem by sudden inspiration while taking a bath. Such inspirations generally occur suddenly and unexpectedly to persons who had previously made some unsuccessful conscious effort to solve the problem in question. They usually occur when one is not consciously thinking about the problem, and they often indicate an entirely new ay of looking at it – a way the investigator had never even considered during his conscious efforts to find a solution. Generally, an inspiration appears by a sudden awareness of the problem’s solution, accompanied by the conviction that the solution is correct and final. One perceives the solution in its entirety, though it may be quite long and complicated when written out in full. Inspiration plays a striking and essential role in the solution of difficult problems in science and mathematics. Generally, investigators can successfully tackle only routine problems by conscious endeavour alone. Significant advances in science almost always involve sudden inspiration, as the lives of great scientists and mathematicians amply attest. A typical example is the life of the nineteenth-century mathematician Karl Gauss. After trying unsuccessfully for years to prove a certain theorem about numbers, Gauss suddenly became aware of the solution. He described his experience as follows, “Finally, two days ago, I succeeded. Like a sudden flash of lightening, the riddle happened to be solved. I myself cannot say what was the conducting thread which connected what I previously knew with what made my success possible.” (Reference: J. Hadamard, The Psychology of Invention in the Mathematical Field, Princeton: Princeton University Press, 1949, p. 15.) We can easily cite many similar examples of sudden inspiration. Here is another example given by Henry Poincare, a famous French mathematician of the late nineteenth century. After working for some time on certain problems on the theory of functions, Poincare had occasion to go on a geological field trip, during which he set aside his mathematical work. While on the trip, he received a sudden inspiration involving his researches, which he described as follows: “At the moment when I put my foot on the step, the idea came to me, without anything in my former thoughts seeming to have paved the way for it, that the transformations I had used were identical with those of Euclidean geometry.” Later on, after some fruitless work on an apparently unrelated question, he suddenly realized, “with just the same characteristics of brevity, suddenness, and immediate uncertainty,” that his work could be combined with his previous inspiration to provide a significant advance in his research on the theory of functions. Then a third sudden inspiration provided him with the final argument he needed to complete that work. (Reference: Henry Poincare, The Foundations of Science, Lancaster, Pa.: The Science Press, 1946, pp 387-88) Although inspirations generally occur after a considerable period of intense but unsuccessful effort to consciously solve a problem, this is not always the case. Here is an example from another field of endeavour. Wolfgang Mozart once… Contd.. From these two instances, we discover two significant features of the phenomenon of inspiration: first, its source lies beyond the subject’s conscious perception, and second, it provides the subject with information unobtainable by any conscious effort. These features led Poincare and his follower Hadamard to attribute inspiration to the action of an entity Poincare called “the subliminal self”, and that he identified with the subconscious or unconscious self of the psychoanalysts. Poincare came to the following interesting conclusions about the subliminal self: “The subliminal self is in no way inferior to the conscious self; it is not purely automatic; it is capable of discernment, it has tact, delicacy; it knows how to choose, to divine. What do I say? It knows better how to divine than the conscious self, since it succeeds where that has failed. In a word, is not the subliminal self superior to the conscious self?” Having raised the question, Poincare turns back away from it: “Is this affirmative answer forced upon us by the facts I have just given? I confess that for my part, I should hate to accept it.” He then offers a mechanical explanation of how the subliminal self viewed as an automation, could account for the observed phenomenon of inspiration. THE MECHANISTIC EXPLANATION Let us carefully examine the arguments for such a mechanical explanation of inspiration. This question is of particular importance at the present time, because the prevailing materialistic philosophy of modern science holds that mind is nothing more than a machine, and that all mental phenomena, including consciousness, are nothing more than the products of mechanical interactions. The mental machine is specifically taken to be the brain, and its basic functional elements are believed to be the nerve cells and possibly some systems of interacting macromolecules within these cells. Many modern scientists believe that all brain activity results simply from the interaction of these elements according to the known laws of physics. No one, as far as we are aware, has yet formulated an adequate explanation of the difference between a conscious and an unconscious machine, or even indicated how a machine could be conscious at all. In fact, investigators attempting to describe the self in mechanistic terms concentrate exclusively on the duplication of external behaviour by mechanical means: they total disregard each individual person’s subjective experience of conscious self-awareness. This approach to the self is characteristic of modern behavioural psychology. It was formally set forth by British mathematician A.M.Turing, who argued that since whatever a human being can do a computer can imitate, a human being is merely a machine. For the moment, we will follow this behavioural approach and simply consider the question of how the phenomenon of inspiration could be duplicated by a machine. Poincare proposed that the subliminal self must put together many combinations of mathematical symbols by chance until at last it finds a combination satisfying the desire of the conscious mind for a certain kind of mathematical result. He proposed that the conscious mind would remain unaware of the many useless and illogical combinations running through the subconscious, but that it would immediately become aware of the satisfactory combination as soon as it was formed. He therefore proposed that the subliminal self must be able to form enormous numbers of combinations in a short time and that these could be evaluated subconsciously as they were formed, in accordance with the criteria for a satisfactory solution determined by the conscious mind. As a first step in evaluating this model, let us estimate the number of combination symbols that could be generated within the brain within a reasonable period of time. A very generous upper limit on this number is given by the figure 3.2 X (10^16). We obtain this figure by assuming that in each cubic Angstrom unit of the brain, a separate combination is formed and evaluated once during each billionth of a second over a period of one hundred years. Although this figure is an enormous overestimate of what the brain could possibly do within the bounds of our present understanding of the laws of nature, it is still infinitesimal compared to the total number of possible combinations of symbols one would have to form to have any chance of hitting a proof for a particular mathematical theorem of moderate difficulty. If we attempt to elaborate a line of mathematical reasoning, we find that at each step there are many possible combinations of symbols we can write down, and thus we can think of a particular mathematical argument as a path through a tree possessing many successive levels of sub-dividing branches. [OVER HERE THE AUTHOR ILLUSTRATES A LATERALLY PLACED DECISION TREE TO DEPICT THE THREADS RUNNING IN THE NEURAL CIRUIT.I CANNOT OBVIOUSLY DRAW THE FIGURE HERE] The number of branches in such a tree grows exponentially with the number of successive choices and the number of choices is roughly proportional to the length of the argument. Thus as the length of the argument increases, the number of branches will very quickly pass such limits as 10^16 and 10^100 (1 followed by a 100 zeros). Contd… Even a brief mathematical argument will often expand to great length when written out in full, and many mathematical proofs require pages and pages of highly condensed exposition, in which many essential steps are left for the reader to fill in. Thus there is only an extremely remote chance that an appropriate argument would appear as a random combination in Poincare’s mechanical model of the process of inspiration. Clearly the phenomenon of inspiration requires a process of choice capable of going more or less directly to the solution, without even considering the vast majority of possible combinations of arguments. Contd… If the process underlying inspiration is not one of extensive trail and error, as Poincare suggested, but rather one that depends mainly on direct choice, then we can explain it in terms of current mechanistic ideas only by positing the existence of a very powerful algorithm built into the neural circuitry of the brain. However, it is not at all clear that we can satisfactorily explain inspiration by reference to such an algorithm. Here we will only briefly consider this hypotheses before going on to outline an alternative theoretical basis for the understanding of inspiration. The brain algorithm hypotheses gives rise to the following basic questions: (1) Origins If mathematical, scientific and artistic inspirations result from the workings of a neural algorithm, then how does the pattern of nerve connections embodying this algorithm arise? We know that the algorithm cannot be a simple one when we consider the complexity if automatic theorem proving algorithms that have been produced thus far by worker in the field of artificial intelligence. (Reference: Joseph Weizenbaum, Computer Power and Human Reason, San Fransisco: W.H. Freeman and Company, 1976, ch.9.) These algorithms cannot even approach the performance of advanced human minds, yet they are extremely elaborate. But if our hypothetical brain algorithm is extremely complex, how did it come into being? It can hardly be accounted for by extensive random genetic mutation or recombination in a single generation, for then the problem of random choice amoung vast numbers of possible combinations would again arise. One would therefore have to suppose that only a few relatively probable genetic transformations separated the genotype of Mozart (THERE WAS A MOZART EXAMPLE THE AUTHOR QUOTED THAT I DIDN’T INCLUDE) from those of his parents, who though talented, did not possess comparable musical ability. Contd… (2) Subjective Experience If the phenomenon of inspiration is caused by the working of a neural algorithm, then why is it that an inspiration tends to occur as an abrupt realization of a complete solution, without the subject’s conscious awareness of intermediate steps? The examples of Riemann and Galosis (THAT I DID NOT INCLUDE IN THESE EXCERPTS) show that some persons have obtained results in an apparently direct way, while others were able to verify these results only through a laborious process involving many intermediate stages. Normally we solve relatively easy problems by a conscious, step-by-step process. Why then, should inspired scientists, mathematicians and artists remain unaware of important intermediate steps in the process of solving difficult problems or producing intricate works of art, and then become aware of the final solution or creation only during a brief experience of realization?
Fri 20 Feb | Sathyaish Chakravarthy | Deepak Chopra, a California based Indian author and a medical doctor by profession, writes in one of his books, that features Merlin, the wizard, his connotation of the Poincare’s “subliminal self”, Joseph Murphy’s “Subconscious mind” and Jose Silva’s “Alpha Level” or “Higher Intelligence”, the para-psycholoanalyst’s “Super-consciousness”, and a boy Arthur (the conscious or the objective mind). A wizard can turn fear to joy, frustration to fulfillment. A wizard can turn the time bound into the timeless. A wizard can carry you beyond limitations into the boundless. A wizard exists in all of us The wizard sees and knows everything. Everything the wizard sees has its roots in the unseen world. The body and the mind may sleep but the wizard is always awake. The wizard possesses the secret of immortality. Deepak Chopra often quotes the word Quantum as resembling “a packet of information and energy”, the energy that is also the fabric of the universe, since the whole of the universe is born of this quantum, the very essence of the neural thought, the universe itself is thought: it is energy vibrating at a certain level. Our thought influences the anatomy of the universe.
Fri 20 Feb | Gareth McCaughan | I'm sorry if you thought I was saying it was *rude* to use the word 'rechristened'. I don't think it was rude at all. I just thought it was a very strange word to use, since it refers quite specifically to a religion quite different from the one ISKCON is all about. I think the author you quote goes too far when he claims that 'almost universally' scientific hypotheses arise from sudden mysterious inspiration. It certainly happens sometimes, but not always. Let's go back to the alleged difficulty of explaining sophisticated algorithms in the brain. There are at least two weak points in the author's argument. Firstly, the vast amount of computational power available to the brain. Although the human brain (considered as a computer) is not a *fast* computer, it is a very *big* one. We have an enormous number of neurons, with an enormous number of connections between them, and computation (of sorts) happening in each neuron and at each connection. Our computers are a long way away from having the level of resources we have, still. So it's possible that the brain can get by with less sophisticated algorithms than a computer would need; the fact that computer programs to do things like playing chess require what seem to us to be complicated programs and plentiful resources may be misleading. Secondly, he says 'One would therefore have to suppose that only a few relatively probable genetic transformations separated the genotype of Mozart from those of his parents, who though talented, did not possess comparable musical ability' and clearly considers that this is somehow a fatal objection to any claim that the brain's algorithms got there by genetic variation. There are several different things wrong here. (1) The brain isn't composed of independent subsystems each controlled by one gene. So there's no reason at all why someone's brain shouldn't have capabilities quite different from those of his or her parents; genes interact. (2) As he admits, Mozart's parents were pretty good musically. (I hadn't known that his mother was, but I'm wiling to believe it.) I don't buy the idea of Mozart as towering superhuman; sure, he was better than his parents, but I don't see any miracles here. (3) Environment matters too. Mozart's whole upbringing was unusually musical, and that has to make a difference. The author claims that normally we solve easy problems by a conscious step-by-step process. I think that's entirely false. We often solve easy problems 'unconsciously'; it's just that the level of cleverness required isn't so great that we're struck by it afterwards. The author also implies that 'inspiration' provides the *final* stage of a scientific discovery. Just as often it's the first, or one somewhere in the middle. I don't think this is terribly important, but it doesn't give me much confidence in the author's understanding of the phenomena he's writing about.
Book Recommendation | Thu 19 Feb | Sathyaish Chakravarthy
Inspired by a recent thread (http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=116569&ixReplies=49), Id like to recommend a book I read exactly an year and two months ago. Its called No Bull Object Technology For Executives written by Willam .S. Perl. This book is a must read for everyone. It is basically for non-programmers, so if youre already into OOPs, then youre not going to gain new insights, nevertheless you *must* read this book. Just like Charles Petzolds orotund caressing in Code: the hidden language of computer hardware and software, the author, a Harvard University litterateur and researcher, gives you a painless ride into understanding what OOPs is. Tailored especially for managers, it is an amusing read for geeks. It is extremely helpful even for programmers who do not know the types of compilers, the difference in between compilation and interpretation and what incremental compilers are. The tone set is for the grannies in the audience. Whereas Charles Petzold gets really nasty in Code, this book skims the surface because of its niche audience of non-programmers. If you are one of those Project Managers, or are going to get there in sometime, this book is as insightful as James Redfields Celestine Prophecy. For all and sundry, I plead, this book makes your Sunday. Please go for it. I dont get a penny for this recommendation, I swear!
Thu 19 Feb | MacSqueeb | 'For all and sundry, I plead, this book makes your Sunday.' Sathyaish, you really know how to turn a phrase.
Fri 20 Feb | Sathyaish Chakravarthy | I'd be most open to corrections.
Fri 20 Feb | MacSqueeb | Oh wait... I hope that didn't sound like I was being sarcastic. I genuinely meant that your phraseology is, itself, a pleasure to consume. Moreover, I do a lot of lurking here and find your contributions to be some of the most enjoyable for their content as well as their form. I don't mean to hijack this thread into a praise-fest, so I'll stop now.
Naming args in headers | Thu 19 Feb | Ken
Disclaimer: this topic is about a trivial detail of C/C++ coding. Read on at your own risk. Lets imagine you are writing a class in C++. So you have your .h file, where you define your class, and your .cpp file (yes, Im assuming a standard VS6.0 project here) where you define your implementation. Do you name the arguments to your methods in the class definition? To me this always seemed redundant, but I tend to do it anyway, for clarity I guess. I mean, the whole idea of having to type the method signatures twice is a bit redundant in itself. I guess if I were writing a true library where Im only distributing the binaries (something Ive never actually had to do), Id need to provide a complete specification in the header file. Definitely one of the nice things about Java is it avoids this type of pain. Still, could one justify only naming the args in the method definition