last updated:30 Aug 2004 09:46 UK time
|
 |
|
(Comments added for week ending Sun 29 Aug 2004) | View Other Weeks
|
|
| faux striped source print-outs | Sun 29 Aug | Ian Cheung |
| You know the old green striped (fan-fold) paper that you printed out source code on? Im looking for a utility that lets me print out source code in the same way but with normal A4/letter sized paper on a laser printer. Maybe with light/dark grey stripes.
I remember I used to have a html editor that gave me this print option but I cant remember the name.
Anyone got any pointers? |
| Sun 29 Aug | Bored Bystander | Maybe someone has a box of the stuff laying around. Or, a warehouse of it... |
| Sun 29 Aug | Matthew Lock | You could probably paste the code into MS Word and then write a small macro to change every other line to have a light green background. |
| Sun 29 Aug | Mitch & Murray (from downtown) | Staples, for one at least, still sells the paper. Lexmark, for one at least, still sells 132 column dot matrix printers that will spit the magic paper out. I have one. Too bad these things don't make all the right noises like those band printers would, as they spooled up when the next print job hit the queue.
Shit, damn, those were the days. |
| Sun 29 Aug | Matthew Lock | Yes real printers let you know when they were working. Not like these new fangled whisper quiet inkjets and "laser" printers. |
|
| Search engine personalization | Sun 29 Aug | trollop |
|
I am halfway through S/E/O for Dummies by Peter Kent cause were revising the website and this crops up:
http://www.theage.com.au/articles/2004/08/26/1093456733709.html
Does this help or hinder ISVs? We are fortunate in one way by having lucked on a niche market (its *very* niche, more by good luck than good management where we can get Adword exposure cheaply and get high rankings with generic seaches on relevant keywords) so are only vaguely aware of site tweaking voodoo from abovementioned background reading and encountering enthusiasts at trade shows.
How much tweaking do ISVs have to do? Has bidding higher CPCs and tweaking hard to get exposure worked?
Responses ranging anywhere from Yes/no/maybe upto a link to a proven market plan are most welcome. |
| Sun 29 Aug | Kalani | My experience has been that it (pay-per-click bid strategizing) can help if there's a lot of competition. There are a lot of different directions you can go in as far as strategizing your placement of bids, appropriating funds relative to ad performance, and so on. I made this little program a couple of years ago to automate some of these common practices:
http://kalanithielen.com/portfolio/bidagent/index.htm
I've had a number of other ideas for it too, but I stopped working on it as a possible product when I found out that Overture wants a lot of money from ISVs making programs like this, and Google doesn't allow it at all. However, I think there's a lot of room in this market for software people, once the barriers to entry are let down a bit. |
|
| Strange Windows XP Behavior | Sun 29 Aug | yet another anon |
| On my Windows XP (SP1) box, Ive got the screensaver setup to require a login. Formerly, I would get the login screen used at startup (or switch user). A few days ago, I starting getting an Unlock Computer dialog box instead.
Also, when I do Start -> Shutdown, I no longer get the dialog box with the large, colorful Logout, Shutdown, and Restart buttons. Instead I get a dialog box with a combo box that has the sames options (plus standby).
Ive scanned for viruses and checked my system with Ad-Aware and Spybot, so as far as I can ,y system is clean.
Any clues? |
| Sun 29 Aug | brianj | The Fix:
Open 'control panel'
Select/Open 'user accounts'
You will see a header that says 'Pick a task...'
Click on 'change the way users log on or off'
Check both check boxes and apply changes.
thats all. |
| Sun 29 Aug | Stephen Jones | I've always had what you see. There is a setting to change but I can't remember what it is, and I'm not seeing what the other guy sees in Users in Control Panel.
Some programs, such as Ghost, will insist on this logon. Just get used to it. |
| Sun 29 Aug | <sigh/> | Back in the day (and I assume still currently) prospective Naval Aviators were screened using a similary two part test called the "AQT/FAR". It was (is?) a two part written test for prospective aviators; one part tests math aptitude and the other tests aptitude for flying. If you fail, you were (are) disqualified from eligibility for the flight program. My recollection, although some 20+ years ago, was that it was it was pretty straight forward. |
| Sun 29 Aug | <sigh/> | dumbass posted in wrong forum, disregard |
|
| GmailFS - Gmail Filesystem | Sat 28 Aug | Matthew Lock |
| Wasnt someone asking about using Gmail as a file system the other day? Anyway someones gone ahead and done it: http://richard.jones.name/google-hacks/gmail-filesystem/gmail-filesystem.html |
| Sun 29 Aug | Brad | Bah. Don't you hate it when you have a good idea, get all excited, start coding, then find out that someone's already done it? Kind of takes the wind out of your sails.
ok, next idea.... |
| Sun 29 Aug | Matthew Lock | Oh look it's on Slashdot now: http://linux.slashdot.org/article.pl?sid=04/08/29/0237213&tid=198&tid=217&tid=106&tid=218 |
| Sun 29 Aug | www.marktaw.com | I hope he has a generous hosting plan. |
| Sun 29 Aug | www.marktaw.com | Oh wait.... the server is probably just pointing to his Gmail account anyway. ;-) |
| Sun 29 Aug | Sid | Just what I need. A really, really slow 1GB hard drive.
Seriously, what's the point? GMail is just so needlessly hyped up, IMHO, and this kind of stuff is just silly. |
| Sun 29 Aug | Mike | 'Just what I need. A really, really slow 1GB hard drive.
Seriously, what's the point? GMail is just so needlessly hyped up, IMHO, and this kind of stuff is just silly.'
Yes, I agree totally. The GB of space has everyone enamored. It's a fine email service. Why the hell do I want a 1 GB file server in the sky that is incredibly slow.
Also in a post I saw on Slashdot (so I know it's true) someone made the point that Google does not want everyon filling up their gig now. They want it to be used as intended - for email. That way it will fill up over a long period of time. Down the road when drive space is cheaper they aren't shelling out much to give you that gig.
I could be wrong though, Gmail may cure aids and end world hunger. |
| Sun 29 Aug | Stephen Jones | An almost hassle free gig is useful. Ok, I've got thumb drives and external USB HDs and DVD's but it still is an extra back up - useful if I want a kind of free FTP. |
| Sun 29 Aug | Brad | I think the project is intended as more of a gee-whiz thing than a serious utility. |
| Sun 29 Aug | Yoey | One thing I found interesting in the Slashdot comments is the number of people who are against this idea, because it violates Gmail's TOS and uses up the gig of memory in a way that the user will not see any ads. |
| Sun 29 Aug | Brad | Actually, I read through Gmail's TOS and didn't see how this would violate it. Did I miss something? |
| Sun 29 Aug | Thom Lawrence | 'it violates Gmail's TOS and uses up the gig of memory in a way that the user will not see any ads'
Nothing I do on Gmail makes any ads appear anyway. I was really disappointed... I wanted to see what products my rambling matched. |
| Sun 29 Aug | Matthew Lock | Somone on Slashdot pointed out that it would make a great remote partition for Knoppix or Linux Live. You walk up to a machine, boot into Linux from the CD and get your data from Gmail. |
| Sun 29 Aug | Sid | As opposed to just getting the data from a USB drive.. Which would seem to me to be the better solution. |
| Sun 29 Aug | Matthew Lock | Last time I checked 1Gb USB drives were still reasonably expensive. Anyway I'm sure it's not meant to replace USB drives, it's just a cool hack. |
| Sun 29 Aug | Yoey | 'You shall not, shall not agree to, and shall not authorize or encourage any third party to: (i) use the Service to upload ... any content that ... is otherwise objectionable as reasonably determined by Google ... or (v) act in any way that violates the Program Policies, as may be revised from time to time.'
http://www.google.com/gmail/help/terms_of_use.html |
|
| Insourcing? | Sat 28 Aug | Jason |
| We all bitch about outsourcing, but is anyone aware of any companies that insource? That is, foreign companies that send work to the US (or elsewhere).
The main one that occurs to me is foreign automakers that build plants in the US, but those are usually cases where the end-product is meant for the US market.
For those of you outside the US, is outsourcing as hot of a topic in your country as it is here? |
| Sat 28 Aug | Kalani | A McDonalds shop owner in India has outsourced his marketing, POS system development, product development, and business model creation to America. |
| Sat 28 Aug | whateva | 'The main one that occurs to me is foreign automakers that build plants in the US, but those are usually cases where the end-product is meant for the US market.'
It was my understanding that this occurs for no other reason than the manufacturers can wave a 'Made in the USA' flag, even tho >95% of materials are foreign, and the company is foreign owned.
I'd like to know if theres any other reason for 'insourcing'... |
| Sat 28 Aug | Dennis Forbes | 'It was my understanding that this occurs for no other reason than the manufacturers can wave a 'Made in the USA' flag, even tho >95% of materials are foreign, and the company is foreign owned.'
Did a UAW friend tell you this? Most 'foreign' cars made in North America are almost entirely made in North America (in fact they're often designed in North America as well. Honda has a large design division in California), spawning a large feeder industry of parts suppliers. They hardly bring it all in on a boat and put it together. Furthermore it's quite a distinction calling them 'foreign owned' when they're publicly traded and you and I can have our piece of them.
Of course I own a Honda - made about 60km from where I live, paying the salaries of neighbours. Hilarious being told (by a CAW member) that it's people like me that put North Amercans out of work. |
| Sat 28 Aug | Dennis Forbes | Everytime they buy a copy of Windows or Photoshop or Redhat organizations throughout the globe are "outsourcing" a segment of their business (I mean technically they _could_ write their own OS or photo editing app). While the US is a voracious importer, it exports about a trillion dollars worth annually so clearly some people are "outsourcing" to the US. |
| Sun 29 Aug | whateva | dennis -
yes, actually it was an asp.net development contract with the UAW that tuned me in to that.
if you can provide links I'd appreciate it. Otherwise, if you look at cases like BMW, and their plant in NC, its exactly as I had described... a foreign owned company cashing in on the 'made in the USA' label.
Tell me ANY benefits on a forign company insourcing other than being able to wave the 'Made in USA' label. |
| Sun 29 Aug | Chris Tavares | Here's the biggest benefit - if the car's made in the US, the builder doesn't have to pay import tariffs. That can take thousands off the final price of the car.
I wouldn't be surpised if the tariff structure was set up to encourage exactly that. |
| Sun 29 Aug | Walter Rumsby | The tarriff structure IS set up exactly for that reason.
One result is that the cars that attract a tarriff are more expensive than they would otherwise be. Is that a good thing? You've got to weigh up all the consequences.
Australia slaps on a $10k+ tarriff on imported used cars and similar tarriffs on new cars not manufactured in Australia.
The benefits include: that car manufacturing is viable in Australia, Australians are employed in auto manufacture, Australians buy predominantly Australian made cars and now Australia actually manufactures production of small run vehicles for their U.S. parent companies (Ford does this).
The costs include: it is not at all practical to import used cars from Japan as happens in New Zealand. 2nd hand vehicles are very cheap in New Zealand (once you drive a new car off the lot its resale value plummets) - as an example the price of an equivalent Nissan Skyline in N.Z. is about 1/2 the price it is in Australia - making it easier for consumers to afford and buy cars.
Of course in most N.Z. cities you arguably NEED to own a car, whereas most Australian cities have a (relatively) decent public transport infrastructure.
As another example, a lot of U.S. and European agricultural products are heavily subsidised - the recent U.S. Australian 'free' trade agreement includes a clause saying Australia canNOT negotiate access to the U.S beef market for another 18 years. This means beef in the U.S is more expensive than it needs to be (inefficient production is propped up while more efficient competitors have artifical penalties slapped on them).
Consumers are paying for this twice - via taxes to support the subsidies and via prices being higher than they could be. Is a price reduction worth a significant change in how the U.S beef producers do business (i.e. job losses in the beef sector) worth it? If you think that's an okay sacrfice then isn't it logical that the sacrifice of U.S tech jobs is also sacrificial?
The U.S is in an interesting and difficult position. It's a REALLY expensive place to do things when you compare it to many many other places in the world. In the case of tech it's not as simple as farming cows overseas and then sticking them on a boat (I think the potential cost savings have been overstated by quite a bit because it's not as simple as those embracing outsourcing want it to be), but while the U.S is a relatively expensive place to do business, business owners in the U.S will look offshore to reduce costs. |
| Sun 29 Aug | anon-88 | LOL, most cars are 'made' in 'North America.'
But remember 'North America' includes Canada and Mexico.
Most car parts are not made in the US. For example most oem rims are stamped in china then shipped o the U.S.
Funny story: It costs more money to ship an emtpy cargo container back to china, than bring a full one into the U.S. Most containers wind up in states like louisiana.
Most parts do come pre-assembled from other parts of the world. Engines from mexico, frames from china, eletronics assemblies(made from parts shipped from taiwan) from the U.S.
Most cars are assembled using the concept of just-in-time manufacturing. Meaning parts arrive just in time to be used in assembling the final product.
The big three have very strict standards that they push down to thier suppliers. Infact when GM says they want to cust costs, they realy mean then want their suppliers to give them a better deal. Most agree because having an oem contract is like printing money sometimes.
As for the 'Made in the USA' label, no one realy cares excep t for the japanese. There is a hot lowrider subculture in japan that goes crazy for anything lowrider from the U.S. There is this guy that imports rims from korea into the U.S. then sends them back to Japan labled U.S.A.
As for BMW, they are assembling SUV's in North America because it's cheaper than dealing with the labor unions in germany. Just try getting fired there and they'll send you on holiday for stress relief. Since it's a new plant, they don't have to deal with labor unios in the U.S. To make the deal sweeter, don't forget to subtract the sipping an import tax on finished goods.
Yes, there are times when it's cheaper to build things in the U.S. Especialy when it involves import taxes. The big tree are rushing to build plants in Mexico because of NAFTA, just like the CRT manufactures(which is in major decline at the moment because of the growth in demand of flat displays).
Because of the close proximity, then can ship back engines at little cost and not have to pay high tarifs on a completed car.
Don't buy into that 'Made In the U.S.A' hype, most people in the U.S. don't either. They are more than willing to pay more for 'German Engineered', 'Italian designed' parts than made in the U.S. But in general, it's the price that matters, which is why china is just about killing most manufacturing in the U.S.
On a side note: SoCal has become the hot bed of car design in the last few years. Everyone has jumped on the band wagon and opened thier own design center. California is one of the most influential car markets in the world. The L.A. Car shows draws ten's of thousands every year.
It is also the hot bed of after market parts. We have a very big car culture, where you are judged by what you drive. The car is truely king here, without a central metropolitan area like New York or chicago, it's hard to live without one. |
| Sun 29 Aug | yet another anon | There's also a dirtier side to tariff avoidance.
There are provisions that allow for a company to ship parts between operations tariff-free. So, when a global company manufactures an end product in the United States, components can be manufactured or purchased by one of their offshore operations and then transferred to the US plant.
I'm not saying the auto makers are doing this, but I worked for a Japanese electronics company that did. The US plant was just a final assembly plant - much of the value added occurred offshore.
Plus, the big hit was that the cost of the components was inflated (sometimes 10-fold), so when the accounting was done, the money was transferred to the offshore operations and the US plant was barely profitable.
It's a pretty sweet tariff loophole. |
| Sun 29 Aug | no name | Walter, equating opposition to offshoring with support for agriculture subsidies is not strictly correct.
In the case of agriculture subsidies, the beneficiaries are largely corporations. American agriculture is predominantly agribusiness now.
In the case of opposition to offshoring, the beneficiaries would be workers.
In other words, in sectors where corporations need protection to make greater profits, they get it. In sectors where protection harms their profits, they get freedom from protection. |
| Sun 29 Aug | Fred | Walter Rumsby >> but while the U.S is a relatively expensive place to do business, business owners in the U.S will look offshore to reduce costs
You have to take into account:
1. it doesn't matter as much whether it's expensive to do business in such and such country if that price difference is compensated by higher quality, higher design, etc. that people are willing to pay for (for insta,ce, quality-wise, it looks that you get a better deal when buying a Japanese compact than a BMW, but people who can afford if prefer to shell out more for a BMW because it's a status symbol)
2. lower cost often means lower quality, lower productivy, etc. Thanks to productivity, a country can enjoy higher salaries... and produce cheaper goods and services than a third-world nation. Consequently, the important thing is not cost of labor in isolation, but rather computed while taking into account productivity.
Otherwise, considering the huge discripancy in costs of labor, there wouldn't be any industry left in the so-called industrialized countries, and all this work would be done in, say, Vietnam or the Philipines. It's not, and as long as we invest in higher education, R&D, infrastructures, health care, we're likely to maintain this advantage. |
| Sun 29 Aug | Simon Lucy | The automotive industry is different to almost every other kind of industry you could think of.
Its impossible to build a vehicle that's acceptable either in marketing, design or technically in every single market around the world. Ford tried it with the Orion but it still had engine differences in almost every market.
Its cheaper to build a car in the US, not because of labour issues but simply because its cheaper to build to US specifications than it is to ship into the US and pay the excess duty. The exceptions are the marques where there is a cachet of them being imported.
Apart from an extremely tiny enthusiast market there is no market for US built cars outside of the continental US simply because they don't fit into any other transport culture around the world.
It was very funny during the years of Bush Sr that there was so much lobbying of Japan to accept US imported vehicles when half the people lobbying didn't understand they'd need right hand drive and an MPG that was closer to 35 than 18. |
| Sun 29 Aug | Stephen Jones | ---' Apart from an extremely tiny enthusiast market there is no market for US built cars outside of the continental US simply because they don't fit into any other transport culture around the world.'----
The Gulf; a few years back the only Japanese car a Saudi would be seen driving was a Lexus. Because there is less money around now Saudis are starting to buy Japanese, and even Korean cars, but I've seen a nineteen year old kid put down his first pay check for a nearly new Honda Civic, and then change it a week later for a ten year old Caprice Classic. |
| Sun 29 Aug | Walter Rumsby | >In the case of agriculture subsidies, the beneficiaries are largely corporations. American agriculture is predominantly agribusiness now.
>
>In the case of opposition to offshoring, the beneficiaries would be workers.
I don't think it's as simple as that. Subsidies keep U.S workers in agricultural jobs - businesses that could not exist without subsidies would close and jobs would be lost. For instance, when there is even a hint that agricultural subsidies in France will be cut it's angry farmers, not angry business people, who protest.
U.S software companies benefit from lower costs, higher profits, improved viability. (Again WRT offshoring I don't think it's so simple as outsourcers want it to be, but they're buying into the promise not the reality). |
| Sun 29 Aug | example | >> if you can provide links I'd appreciate it. Otherwise, if you look at cases like BMW, and their plant in NC, its exactly as I had described... a foreign owned company cashing in on the 'made in the USA' label. <<
Only partly true. The engines and differentials are flown in on 747s thru the GSP airport. Many of the other parts are sourced locally, either by companies who were there prior to BMWs arrival (Spartanburg Steel being one), and others by foreign firms who set up shop in the area so they could meet BMW's strict just-in-time manufacturing process requirements.
http://europe.autonews.com/page.cms?pageId=307 |
| Sun 29 Aug | Dennis Atkins | >This means beef in the U.S is more expensive than it needs to be (inefficient production is propped up while more efficient competitors have artifical penalties slapped on them).
>Consumers are paying for this twice - via taxes to support the subsidies and via prices being higher than they could be. Is a price reduction worth a significant change in how the U.S beef producers do business (i.e. job losses in the beef sector) worth it?
Walter, sorry but you're totally insane and don't know jack shit what you're sputtering about.
Beef farmers are NOT subsidized by the government.
US Beef is very inexpensive in the US, 1/4 or less what you pay in Europe and 1/50 what you pay in Japan and much of asia.
It is very expensive to airship refrigerated beef to the US. It's only worthwhile if it can be sold at a premium. This is not possible not because the government is propping up inefficient production, as you falsely and ignorantly claim, but because the US beef industry is THE most efficient beef production in the world today.
Get your facts straight before spouting of like a moron. |
| Sun 29 Aug | Walter Rumsby | Dennis,
Get YOUR facts right. U.S protects its beef markets (if they didn't why would they bother to add a clause to the 'free' trade agreement saying that negotiation on access would not be permitted for 18 years? For fun?). Europe and Japan ALSO protect their beef markets.
When the U.S talks about fair/free trade they generally mean U.S firms having access to other markets NOT opening access for foreign firms to the U.S market.
There are two common ways to restrict access:
1. Give local producers subsidies - so their product costs less than non-subsidies product (seems to cost less to consumers, but consumers pay for this through taxation anyway). Foreign product cannot compete on price.
2. Artificially raise the price of foreign goods by whacking a tarriff on them. Foreign product cannot compete on price and local product may be able charge more than they would if they were competing on price with foreign product. Consumers pay because prices are higher than they could be.
Sure things in the U.S are cheaper than in Japan, because Japan is an extremely expensive country - Japanese buyers will pay more for better quality and they love packaging so much so that fruit are individually wrapped in styrofoam when you buy them from the supermarket, etc.
Do a little Googling: http://www.google.com/search?hl=en&lr=&ie=UTF-8&q=us+agricultural+subsidies+beef&btnG=Search |
| Sun 29 Aug | no name | Walter, your initial approach to this comparison has been too simplistic. You just assume "subsidies." In fact, it's not agriculture workers who lobby for subsidies at all. It's not even family farmers. It's agribusiness companies and their influential Washington lobbyists. |
| Sun 29 Aug | no name | Also, don't accept at face value everything you read in Australia about the FTA. |
| Sun 29 Aug | Walter Rumsby | The agribusiness wants protection because they don't have to compete on price of good sold.
The tech business wants outsourcing because they want to force workers to compete on price.
In both cases the business wants to maximise its profit. |
| Sun 29 Aug | no name | Exactly. |
| Sun 29 Aug | no name | But, returning to your original point, the 'protection' that's talked about in agriculture has nothing to do with protecting jobs.
In fact, agribusiness has successfully cut workers' wages over the past decade, at the same time as increasing its profits from other sources.
Gartner, McKinsey and those hacks only protection is bad when it's for workers, especially computer workers. |
|
| Device driver for XP | Sat 28 Aug | SunKA |
| Hi.. I have a device driver source code for a driver which works on XP Tablet edition - I want to modifiy it to work on XP Professional (it does not work currently on XP P).. I have never written a device driver before.. I have read DDK documentation.. got Oneys book etc.. I still am at a loss on where to start.. can any body give me any guidance on good resources etc.. |
| Sun 29 Aug | redguardtoo | I have a little experience in win2000 ddk , maybe helpful?
It's easy to develop device driver, you just copy from demo and change a little. That's all.
To develop device drivers, you need know
1. what is makefile
2. some debugging knowledge (I recommend by John Robbins)
3. a site (http://www.osr.com)
4. a debugger (I recommend Microsoft windbg because it's free) |
|
| Mircrosoft.com Moves Towards Standards | Sat 28 Aug | Walter Rumsby |
| Fewer tables, no browser sniffing, no/less JavaScript, one version for all clients. Over 25% reduction in page size.
http://www.stopdesign.com/log/2004/08/25/microsoft-advances.html
http://www.meyerweb.com/eric/thoughts/2004/08/27/microsoft-migration/
http://www.webstandards.org/buzz/archive/2004_08.html#a000416
I agree with Eric Meyers sentiments - this is significant. Im sick of people saying Microsoft.com does it, Google does it to justify not doing things properly when it comes to web design. My hope is that this move will make the case for using browser-specific markup and sniffing a weaker one. |
| Sun 29 Aug | Iago | Proprietary IE extensions generating the gradients, broken hover effects on the navigation menu. They still clearly only tested it in IE... although the conspiracy theorists over at Slashdot will doubtless say that it's deliberate that it doesn't work properly in other browsers. |
| Sun 29 Aug | Art Vandelay | >>'although the conspiracy theorists over at Slashdot will doubtless say that it's deliberate that it doesn't work properly in other browsers.'
Deliberate? Damn right it's deliberate.
A web site that checks to see what browser you're using. If it's IE you get a nice page that displays properly. If it's not IE, you get a different page, one that is specifically designed so that it doesn't display properly.
I wasn't aware that stating facts and pointing out obvious malicious behavior amounted to 'conspiracy theory'. |
| Sun 29 Aug | Andrew Cherry | The new website serves the same HTML to all browsers, they do at least seem to have abandoned the browser sniffing tactic. However, the cause of poor display in other browsers is still use of proprietary extensions, combined with incorrect use of HTML.
I'm not going to point the finger quite as strongly as Art above, but it is still very interesting that Microsoft produce a site which could display equally in all browsers, and yet seemingly make a conscious decision not to. There is no possible chance of ignorance being the cause, there must be some internal justification, be it competition, trying to make alternative browsers look poor, or some other factor. |
| Sun 29 Aug | Thom Lawrence | One more thread and three more links about the source, then. Sad. :) |
|
| Compulsory support role for departed programmer? | Sat 28 Aug | Bored Bystander |
| Well, my initial challenge with the abandoned project client has passed, and I have an assurance of getting paid just as the sun rises... God, I feel like a loan shark sans the baseball bat...
Anyway:
The situation this company has in hand was caused by their one D....i programmer bailing for personal reasons. Nothing was written down. The build instructions this person provided to me on request are gobbledegook. My client knows and groks and accepts my take that the initial task of getting a build in place is unknowable until its done.
My conjecture:
Would there be any legally binding way (in the US, anyway) for a company to bind an employee to provide up to X hours of support, contractually, after their official termination, at a stated minimum rate?
Example of such a clause: Employee agrees that, after he leaves the employ of XYZ, that he will provide, on request and at the expense of XYZ, up to 30 hours of phone, email, or in-person support on a contractual basic, to be paid at a rate no less than $70 per hour, plus travel and associated expenses, within a 120 day period. Employee further agrees that failure to comply as possible with such a request for reasons other than personal injury, military service, or other compulsory legal entanglement, is reason for judgement for liquidated damages.
Or something like that.
The company Im working with is hurting big time. Likely the job may not have been a plum - or, the person himself may have created a mess and just wanted to walk away from it and start afresh.
But the economic damage that one employee who bails can cause appears to be boundless; and could go as far as putting the previous employer out of business. In this instance, the code is broken, unbuildable, its locked up in the mind of a person who wont talk. And my understanding is that this person simply doesnt give a shit whether he gets paid or not.
Anyone ever see any successful attempt to mitigate this risk other than throwing $100s of $K at the programmer?
Regardless of the means by which a company tries to avoid or mitigate such a risk, its a very interesting philosophic problem. Can you force someone to do the responsible thing? |
| Sat 28 Aug | grog | I've used clauses similar to that in several employment agreements, but without a prenegotiated agreement there's nothing to compel anyone to do anything in a right to work state. Most employers reserve separation agreements for executive level positions.
Proving negligence in a civil case is difficult and the employee can easily turn it around and argue that the employer was negligent by not documenting and enforcing acceptable work standards (in this case coding standards, source control, build scripts, automated testing, etc.)
On the other hand, civil suits are frequently filed to compel people to negotiate and withdrawn once an agreement is reached. |
| Sat 28 Aug | RocketJeff | The company didn't have this guy document his build process or document any of his code. And that failure can possibly cause the failure of the entire company.
Simple - this company deserves to fail.
Also, if anyone gave me a contract with a 'Compulsory support role for departed programmer', I would immediately walk out - contract unsigned. |
| Sat 28 Aug | Bored Bystander | >> The company didn't have this guy document his build process or document any of his code. And that failure can possibly cause the failure of the entire company.
>> Simple - this company deserves to fail.
Er, *cough* *cough*.... ahem... dum dah dee dah dum...
I'll feign nonchalance. Just wanted to get the contrarian reaction. :-) |
| Sat 28 Aug | Dennis Forbes | `Regardless of the means by which a company tries to avoid or mitigate such a risk, it's a very interesting philosophic problem. Can you force someone to do the 'responsible' thing?'
I'm curious why it is the 'responsible thing' for a departed employee to provide this sort of role? |
| Sat 28 Aug | Bored Bystander | Dennis:
By 'responsible thing' I mean that if a former employee would allow themselves to be contracted for a limited number of hours to provide post-exit transition, then it may (for instance) prevent their former employer from (potentially) closing shop and laying people off, just because the employer misses a few important pieces of information.
A broader view, now.
Many times a programmer is hired as an ordinary, non partner employee, to produce a necessary segment of a product. The programmer may be bringing more or less 'commodity' skills to the table but nevertheless, in a small company, has control of a disproportionately large amount of 'leverage'. IE: a run of the mill employee who eventually becomes irreplaceable just by position and opportunity.
As far as the employer's duty to enforce process: what if the programmer is the only programmer on staff? Or the employer asked the programmer employee to help them develop an initial offering and the employee said
'yes' and staggered through it? And then bailed because the coffee in the office was bitter one day.
I guess what I am saying is that, while it appears to competent programmers in a community of peers (such as this board) that lack of process, lack of source control, etc, are solely the responsibility of the employer -
I am saying that if the employee in a given disclipline is a singularity in that role, doesn't that employee have a moral duty to not bring the house down by providing some triflinging small amounts of support? At least to ensure that their previous employer is covered.
I'm not particularly attached to any particular solution or remedy. I am just posing this question as an ethical strawman.
I would, in this thread, like to omit the obvious scenario of 'bastard abusive low rent employer who got theirs', because it's just too easy to justify a skip-out. Also I would prefer to omit the involuntary termination - layoff or firing - in that instance, the employer should know that all bets are off. |
| Sat 28 Aug | Bored Bystander | Addition to my post:
The situation I am posing is an 'HR version' of all eggs in one basket. The basket is lost; so should the employer be screwed because they put all their eggs in one basket? |
| Sat 28 Aug | K | Well yes that's the problem with keeping all of your eggs in one basket. I mean come on, part of good (or even fair) project management is reducing your 'truck factor'. And really the higher your 'truck factor' the more you can count on the truck coming by.
When an employee leaves under 'normal circumstances' there usually is an offboarding process where knowledge transfer / documentation and all of that other stuff that mitigates the situation you describe. And I suspect that said employee will be glad to answer a few calls and or emails with out charging. I can recall one former co-worker (and actually then returned but now former once again) that came in over a weekend to help with an application deploy that went south. Responsible people don't screw folks that treat them fairly.
In the situation you describe I begin to suspect that even if you could compel the former developer to help you probably wouldn't want the help you got. Something happened there to cause the situation you find yourself cleaning up. It was obvious from your previous post that it was pretty bad - that's why you were wondering if you should take it or not.
Lastly I suspect that the vast majority of clauses like the one you propose would be nearly unenforceable. And the only time you really would need to enforce them you will find that court battles would drag out the time to a point that once the help became available it would be too late to save the company that was careless enough to keep all of their eggs in one basket. |
| Sat 28 Aug | Bored Bystander | Good comments, K.
Dragging my thinking back to conceptual models such as 'The E-Myth' - good business management dictates that a management should *NEVER* put itself in the position of relying upon irreplaceable and/or unknowable resources that are central to its business.
A good business wouldn't allow one employee to control an essential aspect of its business.
In that light, there is no need for my proposed 'clause' and my clause is not defensible on any level except protection of clueless companies from their own blindness or arrogance.
Interesting. |
| Sat 28 Aug | Architect | Programmers are interchangeable bricks. Just get another one and have him complete the bricklaying. If the OP can't fix it on his own then he must not be a very good bricklayer. |
| Sat 28 Aug | Worker Bea | Bored,
You're making yourself look good by slamming the previous guy.
This is not productive or helpful for any parties. Reason is the previous guy is not to blame - this situation is entirely the employers fault.
1 - Previous worker is so pissed off at company he will give no useful advise and refuses to come in even for $70/hr and all expenses paid. Does this suggest he experienced a respectful and supportive work environment when he worked there?
2 - In attempting to hire Bored, employer tries to negotiate on price by saying he could get an Indian who can do the same work for less money. But strangely, he hires the more expensive Bored! Does this suggest that he understands development issues, respects workers, and is an honest negotiator?
3 - Bored has so much problems with even wondering if he will get paid that there is a gigantic thread discussing this issue until Bored has the balls to insist he be paid. Is a work environment in which someone even has to thing about posting such questions a good one?
I would never sign such a dumb clause because you never know what sort of assholes you might end up working for. It is critical you be able to leave and never return or even think of the abuse you suffered.
It's obvious that the employer is a jackass and incompetant as well. Now, it's fine for you to take the job and try to straighten out his stupidity, even though it will be a futile endeavor.
But, given the situation as you've stated it, it's totally unfair to blame the previous guy and your proposal that he sign a slave contract is frankly, sickening.
I think you are suffering from Stockholm Syndrome. You are sympathizing with the agenda of your abusers. |
| Sun 29 Aug | Me and the view out the window | Bored, slavery went out in the 1860's. If the employer wants something, they need to pay for it to be done. It's very very simple.
If they can't afford to do that, they don't deserve to be in business. They should get out of the way so successful businesses can take their place. |
| Sun 29 Aug | JohnnieC | The 'responsible' thing would be for this guy with 'commodity skills' to chip in a small amount of work to bail out his former employer? Oh yeah, he'll be paid market rates this time? I'm uncomfortable with the clues to this story.
Maybe this guy had endured months of being dissatisfied with your company? Maybe he had to quit and find another job, with all the hassles that come with that? No doubt he is not in the mood for a few billable hours. Unfortunately it has come to this. If his knowledge is really worth that much to the company, cut a deal and pay this guy to make your problems go away. Even if he is simply being irresponsible, the company managed this guy wrong. |
| Sun 29 Aug | Bored Bystander | The later posters are reading a lot more into my descriptions than what was meant.
No, I'm not defending the client. My belief is that *everything* is screwed up for a reason and when someone is left holding the bag, I wonder why that someone is in that position.
I have no idea what the previous developer's story is.
No, I'm not serious about my employment contract proposal. It's simply a talking point. I see a problem caused by relying on one person for a unique role in a company; I wondered if there were a procedural remedy. So I posted an attempt at one.
See my comment earlier about 'good' general business strategy. Only an screwed company would make someone who is not a principle almost indispensable.
And as far as my dealing with them, see the remark about my feeling like a loan shark. I have imposed order on the deal in order to ensure that I get paid for a best professional effort. I was ready to walk w/o a certain guarantee (OK, it's prepayment.) They understand that they've inherited a mess.
My guess is that the (techie/consulting scientist) owner denigrated software in his mind, assuming that programming was a 'mere' secretarial effort. Nobody there wanted to know what was truly involved. Until the person quit. |
| Sun 29 Aug | Worker Bea | > Only an screwed company would make someone who is not a principle almost indispensable.
I like this. May I turn it into a pair of axioms?
A. A dumb company makes someone who is not a principle indispensable.
B. A smart company makes someone who is indispensable a principle.
So many companies go down the drain when they forget B. |
| Sun 29 Aug | Sassy | To get ourselves back on track:
'Would there be any legally binding way (in the US, anyway) for a company to bind an employee to provide up to X hours of support, contractually, after their official termination, at a stated minimum rate?'
The answer is yes, assuming each party agrees to said terms.
Of course, thankfully, this is America, and there is no way anyone can be *compelled* to give said support after termination.
Simply put, make sure to have a lawyer look at the employment contract. You will need to be very careful regarding at-will status and you will need to be very careful about clarifying what the conditions of employment will actually be.
Good luck, you've got more of a stomach for this than I would. |
| Sun 29 Aug | Peter | BB, you could take this opportunity to set the client up with a source control box and a build environment. It won't take a lot of effort to pitch it as 'so this won't happen again.' The discussion you seem to be having with the client is that they are afraid they will get left in the lurch again. Why not sit down and think about what it will take to keep it from happening again? That way, handcuffs are not needed.
I dunno... Ant and CVS for an open source enviroment. Make a well documented write up for the client. You know better than I, which SC product works best with the language you are using. I have very little experience using borland dev environments.
Help the client eliminate 'bus factor' or 'truck factor' or what ever you want to call it. Good risk management will try to mitigate the possibility that a key employee will get run over by a bus/truck, or quit and join a rock band. Every time I try to add 'bus factor' to a risk plan, it gets removed because folks don't want to think about it, therefore it isn't allowed to be planned for.
This guy has been rained on, why not sell him umbrellas? |
| Sun 29 Aug | Me and the view out the window | If the programmer was central to the business, why wasn't be being paid or recognised for his value? Why this idea that he must do whatever the employer needs done?
It is clearly a stupid employer. Let him go out of business and our programmer can then get that same business. |
| Sun 29 Aug | Stephen Jones | The suggestion is clearly impractical and unfair for an employee; in the case of an independent contractor paid for goods and services provided that is a different matter.
If the employer knows about it to start with, then he should make it unnecessary by insisting on full documentation all the time.
And if he doesn't know about it to start with, then he's not going to think of putting it in the contract.
There is a notice period. The employer should have insisted that all of that time be spent on providing documentation. |
| Sun 29 Aug | Simon Lucy | Actually contract terms which extend responsibilities beyond the life of the contract aren't enforceable. All one party would have to do is say the contract term was accepted under duress.
If the other side tried to sue on the basis of it what damages could be extracted? None.
You can't compel someone to work for you. |
| Sun 29 Aug | Simon Lucy | Oh I guess there is an exception to that, trust can be considered to be enforceable after the contract has ended. |
| Sun 29 Aug | muppet | Bored,
You work with some of the most worthless clients in the entire world. Where do you find these jokers and why do you work with them? |
| Sun 29 Aug | . dot . |
How about this:
Blutto Bubba Jones, referred to as EMPLOYEE, being employed for the critical function of stacking boxes, agrees to stack 1000 (one thousand) boxes for EMPLOYER within 30 (thirty) days of termination of employment.
Look, when someone quits, they've quit. Original poster's potential client deserves problems if they don't have documented build procedures in place. |
| Sun 29 Aug | TomH | It's not clear to me that having the departed programmer back for a while would really help. He didn't do his job right when he was there before, what's to stop him from reading JOS all day if he's forced to come back? |
| Sun 29 Aug | Bored Bystander | >> Where do you find these jokers and why do you work with them?
Time for some education, Muppet.
It's CONSULTING, dude. They have a problem that seriously impacts their business. I am fixing it for them.
A client has run out of options and needs a professional fireman to bail them out. I'm it.
The challenge in working in these situations is to educate and (to some extent) control the client's perceptions (with facts) so that they understand that 1) they are up shit's creek, 2) they need you, and 3) they must pay you on your terms in order to produce a result necessary to their business.
And - human nature time - EVERYONE who has a deeply ingrained problem of their own making - whether it's an alcoholic, or a company that has no process - is in denial and needs to be told that it's no longer business as usual.
The thing is: every business isn't going to have nice servers and good, professional technical co-workers, and configuration control over their source code, and a professional attitude toward the work.
The companies that do these things have turned software dev into a reproducible factory operation (as it should be) and aren't dependent on only one prima donna. These are the companies that many of you guys think 'everyone SHOULD work at'. In reality, these are the places that stroke geek egos, which geeks fight to get into.
Those other nameless businesses that rely upon software but which have disregarded and downplayed its complexities (at the technical, project, and lifecycle levels) are fodder for a consultant. |
| Sun 29 Aug | indeed | 'I am saying that if the employee in a given disclipline is a singularity in that role, doesn't that employee have a moral duty to not bring the house down by providing some triflinging small amounts of support? At least to ensure that their previous employer is covered.'
Nope.
A single employee shouldn't be asked to consider the long-term fate of the business as part of a contractual or ethical consideration, unless he's being paid to do so (as with a principal). I think that's the whole idea behind professional management.
As soon as you impose legal or ethical requirements on the employee to 'keep the lights on,' the burden of liability (legal or otherwise) shifts disproportionately to the employee.
Let's consider your clause--I know you aren't serious about it, but again, just as a talking point. It stipulates that the employee provide a certain level of support with the obvious end of keeping the business going.
Well, let's say the employee does what's required and, nonetheless, the business still goes under. The business owners, who have no real technical knowledge or detailed knowledge of what he did, are in a great position to sue him for breach of contract. The damages being, of course, the lost revenue that brought down the business.
He'd win, you might argue--but not before he had to fight it out in court ($$$$).
The same position can be taken for 'ethical' responsibility. Maybe the employee does what he can, and the business goes under, and then he's 'blacklisted.'
Honestly, I think the point that's being glossed over here is that technical people are not treated as 'key' to the business's success, and are not incentivized to stay. Company policy should be to aggressively promote the interests of employees who 'drive' the technical end. That's just common sense. And I don't think either documentation or process can really make up for the code-ownership of original developers.
There are just too many microscopic points of knowledge in a product for a developer to document them all and, when he leaves, the business is basically paying to have them rediscovered. Usually at the customer's expense.
No company would ever dream of simply firing its CEO or letting him leave in mid-execution of a grand business plan that only he knows. Hence golden parachutes. Why is the sole owner of a company's _technical_ vision nothing but a shithead with a computer? |
| Sun 29 Aug | Peter | >doesn't that employee have a moral duty to not bring the house down by providing some triflinging small amounts of support? At least to ensure that their previous employer is covered.
The sensation you are feeling is guilt, not 'moral duty.'
Jack Welch (CEO of GE) said a stunning whopper that will be repeated until the end of time by businesses: 'you got paid on friday, now we are even.' |
| Sun 29 Aug | mb | how about this scenario:
employee reformats hard drive on last day at job. including some essential bits of something which weren't properly backed up.
since they were paid, everyone's even, right? a full backup of everything should always have been running.
that's the basic issue when you work in a field which is driven by 'intellectual property': it can be stored in someone's head, even if it 'belongs' to the company. how do you get back what you (the employeer) paid for? |
| Sun 29 Aug | Bored Bystander | Everyone seems to be missing that, attached to my proposed employment rider, I proposed contract payment to the departed employee, pegged at or above expected market pay in that type of job, as compensation for their trouble. Also, exemptions for reasons of dire personal or legal circumstance. And it has a time limit. (I didn't even think of a COLA rider but that's certainly doable too.)
Nothing free, unpaid or otherwise Dickensian about it. In fact if I drafted such an agreement I would include language that the ex-employee could choose their mode of contact: email, phone or fax.
The crowd here sometimes reminds me of /. , jumping to a kneejerk predictable conclusion w/o reading everything.
Another tact might be to put in writing a post separation bonus payable only upon the employee's cooperation with such a process, if such a process became necessary.
If I ran an ISV I'd probably consider some employee agreement boilerplate along these lines. Not because I would want to run a purposefully shitty company with no process but because I would be trying to contain unforseen business risks. Such as the employee who walked away with (say) a password to an encrypted volume that contained their recent source code. |
| Sun 29 Aug | Bored Bystander | mb, you have exactly the right idea. |
| Sun 29 Aug | Bored Bystander | Indeed,
Your comments are thought provoking... Where you are going with your commentary is that a developer 'ought' to be treated similarly to an executive and that includes acknowledgement that they hold a portion of the company's 'wealth' in their head. Which itself (I think this is your direction on this) merits their treatment essentially as a professional.
My take on this is symmetric in some ways. I implicitly acknowledge this type of role in my original postings here.
But I pose the assertion that sometimes (or often) the level of employee who may enjoy such 'leverage' over their employer may have paid no dues nor suffered through necessary aspects of the business, such as sales or business development that preceded coding, and which even made the coding job possible. They were hired, they simply did their 8x5x52 job, and they became absolutely indispensable in the process of working a normal 5 day a week job.
IE, a scenario (NOT the client in hand, just a hypothetical):
A couple of business people in mid career partner and start an ISV named Big Idea, Inc., based upon an idea about a market that they have spent many years in, in marketing, customer support, or sales roles. They remortgage their houses, they raffle little Tommy's iron lung at the pawn shop, etc., they take out business loans to finance their dream.
So, they need a programmer. They recruit at a local college. They find one. It's the standard 'go through hell and grow with us and be top dog one day' spiel.
Joe Coder joins them. Initially there are no company profits, he is paid out of pocket.
He spends several productive years there. Is new to development. Has no mentoring. Puts spit and chewing gum together. Works miracles. Does so on a 40 to 50 hour a week schedule maybe the occasional Saturday. No travel, gets to see his girlfriend, gets paid vacations. Is on market level salary plus small bonus.
Profits grow. Company hires people for sales and marketing. The original owners respect Joe's contributions and give him decent raises and don't encumber him with a lot of management. He SEEMS self managing, after all, he produces and doesn't break a sweat.
One day the inevitable headhunter comes a'callin and entices Joe to leave for greener pastures.
Joe is told the balloon is going up. MUST start next Monday, no way the client can use him any later.
Joe bolts.
Big Idea, Inc. is thrown into chaos:
- All technical work is frozen.
- The owners feel betrayed because they gave Joe his start.
- The owner's asses are on the line.
- The owners purposefully did NOT hire a 'supervisor' to breath down Joe's neck and flog him to obey an abstract process because they trusted Joe and they expected that Joe would leave things in a reproducible state.
- Joe has no time for support for his first employer.
- Big Idea, Inc. has its first layoff.
- Big Idea defaults on its credit lines, and is forced into Chapter 11 because it has no time to react.
I know the following view isn't very popular on this board:
You aren't God just because you can program.
You aren't God just because you can produce something useful for someone.
The coder/developer may have gotten work because someone else sweated the inevitable dues paying before him, and so he effortlessly (almost) glided into a position that was premade for 'any' developer.
The amount of leverage that one programmer can have over a smaller company seems asymmetric, almost in the same way that a couple of terrorists can kill a lot of people by 'careful' planning.
But everyone can't be a principle or an executive.
It's a conundrum. I just proposed a non fascistic way of dealing with it. |
| Sun 29 Aug | Bored Bystander | >> merits their treatment essentially as a professional.
change to
>> merits their treatment essentially as an executive. |
| Sun 29 Aug | Sassy | what it comes down to, Bored, is that said programmer essentially *is* the product development effort. That, in and of itself, may have a huge value regardless of the items you mention.
Simply put it is the responsibility of the principals to mitigate their product development effort against disaster in any way possible. There is no excuse or reason that justifies letting your product walk out the door!
The easiest, and most sensible method to accomplish this is to spread the product development across a team, and make *damned sure* someone in a stakeholder role has accountability for that team.
This is just common sense software engineering. |
| Sun 29 Aug | hoser | BoredB,
Its a very interesting scenario, and I'm sure there are some out there which inherit many of the properties of yours.
A few things:
Usually, an employee gives a 2 weeks' notice. This is customary, though not always required. What should a small employer do during these 2 weeks? Get a contractor in ASAP to learn what Joe has been doing for the last 5 years. Brain dump, code walk-through. 2 weeks of solid explanation. Most employees give a 2 weeks' notice.
What did your prospective get? Any weeks' notice? What did they do with them?
Now here is a cute little twist: A small employer decides that it will not compensate employees for unused vacation. Joe gives his 2 weeks notice, and says hey, y'know what, you guys won't be compensating me for those 2 weeks of unused vacation. If I show up at all during this time period, it will be a friggin' miracle.
I mean there are so many variations on this theme.
Anyway, most companies have without cause agreements that employees sign. Which state that we can fire you without cause and you can leave without cause. They are usually signed by the employee, not the employer (what about that?) and are meant as a way to get rid of the dead wood (oh, if only they would) without hassle.
Every company (now 8) I have worked for, I signed a version of a 'without cause' agreement. You know what we tell engineers to do when they get laid off, fired, or are underemployed: 'gow up', move on, get on with it, etc.
Right? |
| Sun 29 Aug | muppet | I don't really see the problem here. Programmers shouldn't be forced to contract away their ability to make more money elsewhere. If the company can't afford to pay the programmer what he is worth, the programmer should be free to go to another company. If the programmer is vital to the success of the comany, then he should be paid accordingly or made a co-owner of the business. |
| Sun 29 Aug | Bored Bystander | It's an interesting business and ethical dilemma, any way you slice it.
And today I have definitively proven....
Not a damned thing. |
| Sun 29 Aug | . | Look, if this was a lawyer's forum, you wouldn't see this whining crap about how the guy walked away without finishing the job.
You would see discussion about how much you could charge the company to do their work, because they have a big need.
There is nothing wrong here with the programmer's behaviour. There is plenty wrong with the acceptance that he's done something wrong. |
| Sun 29 Aug | indeed | Bored:
Your scenario strikes a nerve with me because I'm in a similar position. As a developer, that is. I am basically in the situation of having a ton of leverage because I 'own' a product that the business depends on.
In my case I work for an established-but-small software company that otherwise has processes and documentation, and so in that respect it's much different. Our executives really don't have much excuse for letting me become a well of core-competence. Furthermore I wouldn't classify the application or my skills as 'generic,' although that's probably my hubris speaking. :)
So I've been debating how to handle this, and what the implications are (or should be) for me professionally.
I agree that not everyone should be a principal. I certainly think the money should go to those who put in the risk and the sweat equity.
But on the flip side, there is a lot of pressure and risk that an individual programmer endures in the 'product ownership' situation versus, say, working anywhere else. That is to say, for the same market rate that's paid to others, a programmer in this situation has the added pressure of direct revenue accountability.
Implicitly, a programmer who works on such products is part of a sales process that is often high-stakes. He must work closely with the businesspeople to ensure that product demos work smoothly and meet the expectations of clients. And if a product bombs in front of a big client, that can be all-she-wrote. That's to say nothing of the shoestring working conditions, or the petty tyranny that management usually displays.
Because of the reasons you've stated, I don't think a programmer deserves to be an executive with an equity stake purely for such contributions. But to persevere on such a project merits some kind of 'quid pro quo'; otherwise, why bother staying around? There are plenty of big companies that are hiring competent programmers for the cube-dwelling, propellerhead positions.
In short: people join small companies for the opportunity to have a high impact, and for advancement as the business grows. And when that isn't present, it gets frustrating, _really_ quickly. Especially in pseudo-entrepreneurial roles that require continual, 'above and beyond' ownership. Some companies do hire JoeSchmoeBeerKeg out of college for these major projects; that is beyond naive.
So my input is: I'd only be willing to accept such a contract, and its associated liabilities, for higher pay and some guarantees about professional development (eg leadership-track). I think the stick requires a carrot--and I don't think the payment you stipulated is enough, because it's not fully considering the professional circumstances that led to the departure.
Finally, I'd like to add that this thread reminds me of the 'survivor mentality' you've talked about before. That is, the propensity of developers' careers to be nothing more than a series of myriad projects and war stories.
Definitely there's a reason for that. Developers take ownership of technical direction for a company, bring it up to speed on a shoestring budget, and then because the executives don't have the technical wherewithall to recognize their contributions, are unwilling to promote them professionally.
So, being developers, the reaction is simply to passively-aggressively quit. Wash, rinse, repeat. |
| Sun 29 Aug | hoser | If someone wants to make that last part to be made into a "motivational poster", I'd pay money for that. |
| Sun 29 Aug | Bored Bystander | Indeed,
Great observations as usual.
I do want to distinguish between the lot of employees and my own situation. I was asked by this company to help on a contract basis. After endless negotiation over the contract realities, I said 'enough' and now I'm working on a prepayment basis. And I said that a condition of my working on it is that they accept that it's rife with unknowns until I say otherwise; the only deliverable until stated otherwise is hours.
Yeah, the subsistence stature of programming as an occupation compared to the impact you can have on a small company's standing is apalling. That subject itself deserves its own thread. |
| Sun 29 Aug | Peter | >The owners feel betrayed because they gave Joe his start.
Everytime I quit a company, they felt betrayed. 'giving Joe a start' is just an excuse, Joe could have had 1,000 years exp in the profession, walk on water, have written 800 programming languages, and his boss will always feel betrayed when Joe quits. That is human nature. Live with it or get out of business.
Also, a major complaint is that companies don't hire folks to give them a start. A recent Wall Street Journal article was complaining about the shortage of 'swiss-type' machinists. That type of machining has a roughly 10 year apprenticeship. No companies are willing to hire apprentices, they want the already experienced workers, and when those workers retire, or won't come back after a layoff, the companies go whining to the newspapers and politicians for more h1b visas. We've seen the same sort of whining in the press about pseudoshortages of nursing, engineering and programming professionals.
The vast majority of companies are not going to allow an ex-employee access of any kind. In the past 25 years, I only worked for one that did it, and they were too cheap to hire a replacement (oh, peter, we moved to a new building, here is a key and a code to the alarm).
>employee reformats hard drive on last day at job. including some essential bits of something which weren't properly backed up.
When you give your notice at most companies, are fired or laid off, they walk you to the door, right then. They don't let you back at your desk because some folks do exactly what you mentioned. I've never met someone who did that, and the industry is small enough that if you did such a thing, word would get around and you would never work for anyone again. One company I worked for informs its employees and contractors that they have been laid off when their access cards no longer let them into the building.
>The amount of leverage that one programmer can have over a smaller company seems asymmetric, almost in the same way that a couple of terrorists can kill a lot of people by 'careful' planning.
I've seen more companies sunk by corrupt or incompetant accountants than by 'ungrateful' employees that jump ship. You would sing a different tune when you see an embezzling accountant put 36 people out of work because he 'needed the money, but now he is really sorry.' It is a real ugly situation.
And hoser has a good point. If your employee gives notice, take every minute of that time to get everything written down. Most employees will give 2 weeks notice. Most companies give 0 notice. That asymmetry is going to shrink, and no one has the right to complain about it.
There is a reason that banks and other financial companies force everyone to take a 4 week vacation each year. It prevents things like 'leaving with the password to the encrypted volume with the latest source code' from happening. Perhaps you might like to have some lunches with some folks who work at a big bank about how they handle stuff like this. Why are you trying to reinvent the wheel? |
|
| Running arbitrary command line exes as NT services | Sat 28 Aug | muppet |
| can this be done? I have a command line app (Instiki) that I want to run as a non-interactive NT service. Can this be done without a programming effort? |
| Sat 28 Aug | Christopher Wells | http://support.microsoft.com/default.aspx?scid=kb;en-us;Q152460 |
| Sat 28 Aug | Michael Moser | ... it's ok when Mr. Muppet asks a questions. Somebody else would cause a flood of invectives. |
| Sat 28 Aug | muppet | I don't ask stupid questions. |
| Sat 28 Aug | Ariadne | Not stupid, perhaps, but still one to which STFW would be a perfectly appropriate answer.
http://www.google.com/search?q=%22applications+as+services%22 |
| Sun 29 Aug | Peter | One problem with running things as a service, is that they have their own invisible desktop. If some dialog box pops up, it hangs. If it is using the vb6 runtime to pop up a dialog box, all other vb apps will hang. There is a checkbox you can do to let the service use the logged in desktop. |
| Sun 29 Aug | Michael Moser | -- One problem with running things as a service, is that they have their own invisible desktop. If some dialog box pops up, it hangs --
Not if you check the option 'allow service to interact with desktop' option. |
| Sun 29 Aug | B | Services should never interactive with the desktop.
Never.
Huge security hole.
Never.
Run client server instead.
Never. |
|
| The API is king | Sat 28 Aug | Emerson Clarke |
|
Ive just read the API war article:
http://www.joelonsoftware.com/articles/APIWar.html
I found it insightfull but as an object oriented purist i would dispute the assertion that object oriented programming hasnt lived up to its expectations. Particularly where Windows development is concerned.
The fact remains that most people just dont get object oriented programming. This is just plain and simple becuase for most of us object oriented programming is too time consuming and difficult. To write good object oriented code you must be fanatical about consistency, reduction, and symetry to the point where you will seemingly spend most of your time refactoring existing code so that it fits with the coninuously evolving analogy that is your object model.
The good thing about object oriented programming is that you only have to do this once. That is to say, once you have obtained an elegant solution to a particular problem and you have the right abstractions to work with you will not have to do it again. The developers who use your code will have improved productivity as a result of the object orientation that you have added.
Object oriented programming is about cutting a trail through the jungle of purpose until you have a path of logic and reason which other people can follow blindly. An object oriented API gives you a trajectory, a way of working, an idiom to follow. This is what makes it productive, not whether it is managed or unmanaged.
The Windows API is not object oriented. It is at most a functional API with assortments of functions collated into containers. Using classes does not make code object oriented. It is the nature of the design that makes code object oriented.
Java, .NET, and most of the interpreted languages have two things in common. They are managed, but they also have good object oriented APIs. As much as Joel is correct in stating that managed code frees the developer from many constraints i believe that it is in fact the API which is equally if not more responsible for enabling a developer to work with higher level abstractions. With the right objects and tools everything becomes easy. With memory management, reflection, and code generation things become even easier.
Whilst i agree that managed code is easier to work with. In an unmanaged environment many common problems, such as the issue of string management described in the article, are trivial to avoid. All this requires is a little forthought and a good idiom. If you follow the rule of consistency and the principle of least surprise your unmanaged code will be just as useable as your managed code.
Never return pointers such as primitive strings, and where possible use pass by reference instead of returning a value. Return by value solves the memory management issue by it induces a copy (except where the compiler implements the return value optimisation).
Assume you have a String object which adheres to the following C++ interface:
String
{
public:
void Append(char * data, int size);
void Resize(int amount);
int Remaining();
int Size();
};
It is now trivial to pass around and allocate new memory since you never have to worry where the memory was allocated if you have an object which manages its own memory and you only pass by reference. The f(g(x)) could be implmeneted like this:
void g(String & string)
{
int required = ...;
if (string.Remaining() < required )
string.Resize(required - string.Size());
string.Append(...);
}
void f(String & string)
{
...
}
void main (int argc, char ** argv)
{
String x;
g(x);
f(x);
}
The Windows API doesnt do this becuase it is primarily a non object oriented piece of code. It should be recognised that you can in fact write good object oriented code in C just as you can in C++ or Java or .NET simply by following naming conventions and passing pointers to structures. Object orientation is more about consistency than anything else.
The fact is that there will always be applications which require a non-managed environment where the overhead of garbage collection and the lack of performance or response time guarantess is a non starter. Windows will always need to run these applications and it will always have a kernel level interface.
Programming is about semantics and purpose not about syntax, the API is king and the language is meaningless. |
| Sat 28 Aug | Frustrated | Those who won't refactor end up with junk after a few releases.
This is just as true for procedural models as for OO.
90% of projects are in this state. (Well, I would say 100% but I don't want to overgeneralize from my own experience). |
| Sat 28 Aug | Fred | Speaking of which, what about MacOS X? Did Apple take this opportunity to rewrite a set of API's in an OO way like .Net, or are they still using procedural calls? |
| Sat 28 Aug | hoser | Wow, what a great post.
I'd like to say one thing about OO:
One reason that OO is never implemented - and as a larger reason why code is not refactored - is that its hard to make the 'business case' for it.
The trail of blood, which has been explained to death in this forum:
1. Fundamental research.
2. make demo,
3. create v1.0,
4. hope to redesign, cleanup, refactor, etc.
Item 3 often never happens because the customer wants new features, not refactoring. And the case never gets made to staff for redesign - at least until way late in the program - if at all. And then its often just at the edges because outsiders want to couple into your product.
The fundamental research part, for me, has been probing hardware to make it respond, understanding new protocols, stuff that is not inherently OO in nature. So design takes on different meanings based on context - it does not mean specifically software design.
Also, there are not that many people capable of leading a project who have strong OO skills. What I have seen happen is a strong OO tehcnical lead get quashed by managers - including PMs - who insist on 'making it work'; not having a clean design. Back to biz case. Also, an OO design lead has to be able to demonstrate by example how OO is better than - whatever that happens to be.
There just aren't that many capable OO people to go around - in my experience.
I'm becoming an OO convert - but this conversion is only because I've seen it done right and it is compelling (the code base is amazingly maintainable, extensible, and exportable (meaning outsiders can easily write to and extend it).
Well, a little more OO cirticism. The literature on patterns and UML is wanting. Although a good book I've found is 'Design Patterns' by Erich Gamma et al. Very good as useful - something you can sink your teeth into.
But too often I've read the OO literature and thought what a bunch of fluff. This will not help me solve problem X. And BTW, kill the use case diagrams and quit wasting time on 'why' OO is needed (just link your post here:)). IMO: use case diagrams are the powerpoint of OO. Use cases should be outlined, not diagramed. Diagrams are harder to change, harder to create and don't convey anything. Outlines are the exact opposite and can be text files if necessary.
Wel, that turned in to a rant. Great post. |
| Sat 28 Aug | hoser | Whoop, change text "item 3 never gets implementedd" to "item 4". |
| Sat 28 Aug | Phillip J. Eby | '''What I have seen happen is a strong OO tehcnical lead get quashed by managers - including PMs - who insist on 'making it work'; not having a clean design'''
What I don't get is why anybody ever *tells* the client about refactoring or clean designs or any of that. Why on earth tell them about stuff they don't care about? That's *your* job. Just include the time to do it in the time required for stuff they care about. |
| Sat 28 Aug | Christopher Wells | hoser,
> Item 3 often never happens because the customer wants new features, not refactoring.
At my last project, someone had written some proof-of-concept code which exercised the 3rd-party software that our product was to interface with ... and then I was brought in to write the product software.
The proof-of-concept code didn't have the right architecture for the product ... and it was poorly factored to begin with. Because it didn't work (it exercised the 3rd-party software, but didn't implement the functionality of the product I was supposed to write), I decided (not without some reluctance) to write the product from scratch instead of trying to refactor the proof-of-concept into a product. When I decided to do that, and said so in my Design Plan, my decision was supported by the company's CIO (who said he often likes to write-from-scratch instead of refactor).
I'll second the 'Design Patterns' book. Coming from a 'C' and assembly background, I learned the C++ language ... and then read 'Design Patterns', which I found explained to me *why* I would want to use a language that supports OOD/OOP.
> What I have seen happen is a strong OO tehcnical lead get quashed by managers - including PMs - who insist on 'making it work'; not having a clean design.
I don't see how that can happen.
When you're writing from scratch, you need to do design-before-coding ... surely anyone knows that. There's no question of 'making it work' before coding, and no question of coding before designing.
When you're adding a new feature to existing code, the politics can be a little trickier: still, having a clean design is part of my definition of its 'working': because if I don't understand the software that I've written then I can't assert that it's not only working with the current set of test cases, but is also likely to work correctly with any conceivable test case; and if the design isn't 'clean' then I'm not likely to understand it.
Besides, a manager or PM who doesn't understand design-and-code (and refactor) doesn't get a vote in choosing the development process: I'll just tell them that I'm 'working on' it or 'implementing' it, and keep the details (like whether I'm currently refactoring, or designing, or testing, or whatever) as a private implementation detail.
> I'm becoming an OO convert - but this conversion is only because I've seen it done right and it is compelling (the code base is amazingly maintainable, extensible, and exportable (meaning outsiders can easily write to and extend it).
Isn't 'how well the code base is documented' also a key factor in its being accessible to 'outsiders'?
I'm willing to hack undocumented code bases, but a lot of my colleagues are pretty reluctant to do so.
I'm currently (as an experiment) documenting an existing code base: its internal structure as well as its public API; and I've found that it has taken me 20 or 30 hours to doocument some classes that took me 40 hours to code. |
| Sat 28 Aug | Almost Anonymous | 'Speaking of which, what about MacOS X? Did Apple take this opportunity to rewrite a set of API's in an OO way like .Net, or are they still using procedural calls?'
MacOS X is really the latest version of NeXTStep which was written in the nearly 90's. At that time, yes, they did take the opportunity to write an entirely OO operating system API. They even created the Objective C language to do it.
Mac OS is just the latest version of NeXTStep with additional seperate procedural APIs for backwards (source-level) compatibilty with previous Mac OSes. |
| Sat 28 Aug | Michael Moser | --- The Windows API is not object oriented. It is at most a functional API with assortments of functions collated into containers. Using classes does not make code object oriented. It is the nature of the design that makes code object oriented. ----
Incorrect.
Windows API is object based.
For each object there is a constructor - CreateHandleXXX
and a destructor DestroyHandleXXX
Encapsulation is achieved by having lots of functions that receive HANDLE to object as argument.
No inheritance, little or no polyphormism, but that's good enough for definition of 'object based' |
| Sat 28 Aug | Michael Moser | Speaking about your example, you can always have a wrapper class for any API, so that it gets a String object.
Thats exactly what MFC if good for. |
| Sat 28 Aug | Christopher Wells | > little or no polyphormism
Well, for example many different kinds of object can be passed to the ReadFile API; VirtualAlloc allocates many kinds of memory, and CreateFile opens many kinds of file and kinds of device; and most importantly, you can do SendMessage et al. to a lot of different types of window. |
| Sat 28 Aug | Kalani | >Why on earth tell them about stuff they don't care
>about? That's *your* job.
God bless you.
I've met a lot of people in this business who have a hard time separating responsibilities in this way. It's true for interprogrammer communication too. I think that programmers ought to expect that outsiders will want a declarative description of their software (for use) and an imperative description only for people who'll be working on it too.
When I go to a mechanic I only have to say, 'the windshield wipers don't work' (there's an implied contract here that we all understand about what qualifies as 'working' windshield wipers) -- then he gets in and fiddles with the frobnobbers in such a way that my criteria are met. Keeping the wires straight and the oil off of labels is his job, and it'd be silly for him to lecture me on the esoterica of best practices in his line of business.
I think that all this stuff about documentation and code organization really tells us something about what kinds of business models work well for us. We *know* that these things are important, but it's also true that in many cases short term evaluation shows no difference between a hacked together mess and a well-designed system (if the car works even though it's drive-train is made of pretzels, it still works -- but for how long?). So we have to make sure that we'll be evaluated over periods of time (and that the important properties of our work will be measured with more weight than the less important ones) in such a way that the quality of our work shows itself.
But I think that's the limit of what the client has to be bothered with (a declaration of the problem or solution which the program addresses, and an agreeable system for evaluating programmer performance). |
| Sat 28 Aug | Kalani | it's -> its
I can't believe I did that. All this Internet reading has ruined my grammar. :( |
| Sat 28 Aug | Pakter | I completely agree with Phillip.
Refactoring is what I use to do my work better, and faster : I don't have to ask for time to do it.
I always tell my colleagues that there's no point in asking for a redesign or cleaning of a piece of software : they won't be given any time for it. They should know, this has never ever happened. |
| Sat 28 Aug | aaa | Object orient programming is not at a
'high level of abstraction'. It is low-level
programming and suits the problem
domain of writing simulators and not much
else.
An example of a high-level programming
language would be Mathematica, which
suits the problem domain of symbolic
processing. Others include Lisp (see
PaulGraham.com), Prolog (logical inference)
MatLab (matrix processing) and even
frickin' SQL (predicate calculus, if written
properly).
Except for writing simulators, I really
don't see where the claims for such high
productivity for object languages come from.
Take for example a signal processing
application for telecommunications. You could
do this in a page of MatLab; If you tried to do
it the object way starting with the nouns/verbs
in the problem description, you would be busy
for eternity and once you had finished, the
code would be so massive it would be a
nightmare to debug.
And Lisp is functional.
Windows is not functional, it is procedural. |
| Sat 28 Aug | redguardtoo | >>Incorrect.
>>Windows API is object based.
as I have pointed out, many people equals OO with using a language which has Explicit syntax to support dynamical polymorphism.
You can use even C to implement OO design.
A few month ago, I was interviewed by the CTO of an outsourcing company.
In his lecture, he tried to make two points (because as a C ++ programmer , I want the software development manager position).
1. All the Chinese programmers are foolish coders who can not design (The CTO is an America-born young man ).
2. C++ is not an OO language (Java is OO) because it does not support interface
I showed him my design and proved any qualified C programmer can implement Interface in C.
Of course, he did not give me the job.
--------------------------------------
D2KSoft, Different and Elegant
http://www.d2ksoft.com
We provide advanced tools only for YOU,
the smart, tasteful and lazy hacker!
-------------------------------------- |
| Sun 29 Aug | . | OOP suits any case when you need to serve varying behaviors under a uniform interface. It does not really depend on high or low level; you can implement it at any level. Just how it is implemented - with Java-like classes or Javascript-like prototypes or Perl-like pseudo-objects - is utterly unimportant.
Simulation is just one case where OOP is beneficial; others includes GUIs, user-customizable applications, parsers, and many more.
What most people are missing is that OOP is primarily about encapsulating complex behaviors in simple interfaces. (Unfortunately, most people think encapsulation is about 'private' data and 'public' methods.) |
| Sun 29 Aug | aaa | Parsers are pattern matching and therefore
you take a huge hit in productivity and
correctness as soon as you step away from
declarative programming and towards objects.
In fact they match Prolog best.
As for GUIs, they are mostly IDE generated so
programming style is irrelevant. In cases where
programming is relevant, objects become just
as painful as they usually are - see:
http://www.tcl.tk/doc/scripting.html
I believe Ousterhout covers the case of users
extending an application in this paper as well.
What were the 'may other domains' where
objects are allegedly a good fit? |
| Sun 29 Aug | Michael Moser | --- Parsers are pattern matching and therefore
you take a huge hit in productivity and
correctness as soon as you step away from
declarative programming and towards objects.
In fact they match Prolog best. ---
Prolog is very slow.
Prolog is very hard, in fact you need a ! cut for almost everything;
try to read and understand prolog code, it is ver very hard. |
| Sun 29 Aug | aaa | If you have a high quality implementation you can
get fast Prolog, fast Lisp, fast anything. OK lets
say Prolog is way too hard, what about ML?
Miranda? Haskell? There are many declarative
languages that are asy to program in, and they
fit pattern matching waaaaaaaay better than
objects. Or are you claiming Lisp is harder and
less productive than C++ for processing operator
trees? |
| Sun 29 Aug | TomH | ' to the point where you will seemingly spend most of your time refactoring existing code'
And how is that a good thing?
I have to agree with hoser, most software is written to be sold. If it sells but it's not a work of art, move on to the next product. If it doesn't sell, move on to the next product. |
| Sun 29 Aug | Tayssir John Gabbour | AAA, I'd say OOP is good for tactical reasons. I can't imagine structuring most apps under an 'OOP architecture,' unless the language forces me to pay lip service, but I'd certainly use a little OOP spice here and there.
Experimenting on myself, with a multiparadigm language which doesn't force me anywhere, I find I use it in places to give data a little 'oomph,' but I don't go nuts with it. I don't believe in grand themes where everything is just an aspect of that theme. Unless I'm modelling modernist literature, maybe.
When you find a quote like, 'With the right objects and tools everything becomes easy,' then either you interpret it very loosely so it can mean whatever people need it to mean, or you just read it as PR. I don't think the original poster intended it to sound that way, but when taken seriously, people hear big promises.
Incidentally, the language I was referring to is Common Lisp. I don't want to think OOP and then talk to a client in their domain language. I want to think in their domain language, occasionally using things like OOP to describe that domain. |
| Sun 29 Aug | Kalani | I don't think it's honest to say that languages like Lisp or ML are 'declarative' -- it's common to write 'imperative' code in Lisp or ML.
I don't necessarily agree with the statement that Prolog is best for specifying parsers either. With the Prolog syntax you can easily embed the declaration of a context-free grammar, but the nature of Prolog evaluation is such that your program is typically evaluated as a depth-first search. If you want to do a breadth-first search for your parse results instead, that's too bad.
I do agree that the problem of parsing typically is solved best with a simple declarative language (context-free grammars, regular grammars, etc), but that doesn't really have any effect on whether or not 'OOP' is valuable. In my parsing library, for example, I have a function that takes a CFG as input and produces a pointer to a 'parser' object as output. The parser object is a front for whatever parsing implementation is best for the input grammar (something that the caller doesn't care about). This is a common type of synthesis of 'OOP' and declarative-language techniques -- another obvious example is SQL with ADO. |
|
| Name that executable | Sat 28 Aug | Ogami Itto |
| I have several applications installed on my computer (as is normal). Now, is there a way to know in what language was that executable made? What I have in mind is something like Nmap but for executables. If you run Nmap against a server itll tell you the operating systems down to the version. Is there something like that about executables? |
| Sat 28 Aug | Chris Nahr | You mean determining programming language that an application which has been compiled to machine code was originally written in? No easy way that I know of. But you could search the executable for the copyright string of the compiler (remember that it might be in Unicode UTF-16 format!). |
| Sat 28 Aug | Oren Miller | On unix systems you can generally figure it out by scanning the symbols with 'nm' |
| Sat 28 Aug | www.marktaw.com | Something like Resource Explorer might help you:
http://www.wilsonc.demon.co.uk/d7resourceexplorer.htm |
| Sat 28 Aug | hoser | Windows executables begin with the ASCII prefix "MZ". Mark Zbikowski, who wrote FAT - or adapted it or whatever. Isn't it amazing that ELF was never adopted? |
| Sat 28 Aug | no name | Ogami, I see you created another stupid thread. |
| Sat 28 Aug | Ogami Itto | Yes, pitty so many people are replying to it. How do you feel by insulting so many people at the same time? |
| Sat 28 Aug | no name | Ogami, it would be better if first you think and then think again and then post if you think it's really really necessary and you have a valid topic for a thread. |
| Sat 28 Aug | Kalani | Luckily school starts soon, so maybe we'll start getting less of these blank-authored nasty posts. |
| Sat 28 Aug | Ogami Itto | Pol Pot is alive and kicking - on JoS! |
| Sun 29 Aug | no name | Kalani, are you a friend of Ogami. And yes, hopefully shool will stop your madness. |
|
| Decent back-up software for personal use? | Sat 28 Aug | Practical geezer |
| I am looking for back-up software that I can use to automatically and periodically back-up my data.
It needs be able to:
- make a weekly full back-up
- make daily incremental back-ups except of course for the day that the full back-up is made
- modify back-up contents for the next scheduled back-up by simply adding or removing files or folders from a list
- back-up outlook express data such as rules
- automatically remove back-ups that exceed a certain period
Anyone got any suggestions? |
| Sat 28 Aug | Fred | Like taxes, this subject comes up regularly on this board.
http://www.google.com/search?UTF-8&q=site%3Adiscuss.fogcreek.com+%22backup+software%22 |
| Sat 28 Aug | www.marktaw.com | Yes, this has been discussed here many many times before.
Second Copy is the most frequently recommended. |
| Sat 28 Aug | Stephen Jones | Second Copy from http://www.centered.com |
| Sun 29 Aug | Practical geezer | Thanks all.
Downloaded the trial and evaluating it right now. UI might need some improvements, but the functionality is so well designed that I am willing to overlook that :-)
But seriously, it appears to really match ones goals as far as back-up requirements are concerned. In fact, I can't believe back-up software like Cyberlink's or Ahead's does not fill this need. Compare to what I have seen sofar, the latter two seem like dumb and dumber, albeit with a more glamorous appearance. |
|
| How Laundry destroyed my Harddrive | Sat 28 Aug | Almost Anonymous |
| No, I didnt launder my harddrive.
I mainly work from home, so I get the bright idea to do laundry on Thursday. I did a load of sheets and tossed them in the drier. However, when I pressed the button nothing happened -- the drier was totally dead. As renter, the first thing I did was call the landlord -- Hes pretty handy, I helped him fix the washing machine when it crapped out last year.
So the first thing he does before tinkering with the drier is start playing with our entirely unlabeled breaker box. Flicker. Blip. All the computers in the house are now off. Fine, my super new desktop running Windows XP with NTFS boots up no problem. But shortly I notice that I have no Internet. I quickly figured out that my Linux firewall/server doesnt turn on automatically after a power loss.
So a wander into the other room and hit the power button. The firewall has a keyboard, mouse, and monitor all hooked up but it mostly just sits there and grinds away without anyone touching it. I immediately notice that the BIOS POST process is very slow. And after a few minutes I get the dreaded No bootdisk error.
This computer used to be my desktop machine. Its old but slightly less flaky than the desktop machine that it replaced (which was the previous firewall). It did have an odd problem where occasionally the harddrive would fail to spin up on boot. However, after hitting the power switch a few times, it would eventually go.
The firewall, being that it runs Linux, doesnt ever need to be rebooted. So it ran contuniously from the day I set it up (around 9 months ago) to last Friday. Ultimately, that pesky harddrive problem faded into distant memory.
So, I tried rebooting the machine about 50 times over the next 5 hours but the drive wouldnt budge. Today, I formally declared it dead and all the data on it gone. The data it held was my entire source repository, company offsite backups, test databases, and some other stuff. The offsite backups are no big deal. The test databases can be repopulated from production. But the source repository was last backed up when this box went active -- 9 months ago! Now, I have the current checked-out revision of all the source code for all the projects; so rather than being a horrific loss, its just the terrible loss of 9 months of revision history.
Why didnt I back it up, you say? Come on, Im sure you dont backup everything. Actually I considered that entire machine to be the backup incase of failure elsewhere. It _mostly_ contained data that could be reconstructed elsewhere.
So now its Friday morning and I still have no Internet. And I somehow have to install Linux on my firewall. I started at 9:00am and finally got Internet fully working for all computers in the house at 10:30pm. I wont bore you right now with the details of that -- but whatever could go wrong, did go wrong.
Goodnight! |
| Sat 28 Aug | James 'Smiler' Farrer | Dpending on how much that data's worth to you, you could send it off to some drive recovery specialists who will probably be able to get the data back. |
| Sat 28 Aug | Steven | I've heard that people have had success recovering data from a dead drive by cooling it in the fridge for a while, plugging it in and trying to grab as much as possible.
I've never done it, but I've seen it suggested on this forum. |
| Sat 28 Aug | trollop | This is also speculative:
What does the BIOS POST say about the disk - can it see the sick disk or not? Iff the disk is recognised but it's not coming up because the boot sector is AWOL you *may* get some mileage from this:
0) remove the sick disk drive
1) beg/buy/borrow another suitable disk drive
2) mount it in your dead linux box as primary disk
3) build linux on the new disk
4) power down
5) mount sick disk as slave disk
7) power up and see if you have a hdb.
alternatively mount as slave disk in your windows machine and see what you can with (say) Partition Magic.
If the POST doesn't see the drive, try the freezer.
You've reminded me to copy a backup between our primary and secondary servers ... long overdue.
Best of luck. |
| Sat 28 Aug | . | With old HDDs, it sometimes helps to grip the drive firmly and to energetically 'shake' it several times, rotating it strictly around the spindle. Often the 'caked' bearings budge and the motor can turn the disc next time.
If that does not help - if the failure is mechanical, special (expensive) services exist that can recover data from such discs. |
| Sat 28 Aug | BRAnonymous | You and I, dear Anonymous, had a hell of a Friday. Though we are separated by a continent, the unlucky Friday had us both. While I was applying modifications to a database, I managed to shutdown the database while it was kind of stuck in an update sql. Then I restarted it. Then I tried to modify a trigger. Then the biggest table in it was gone. Damn Interbase. I share the guilt, though, as I should have backed up the database before messing with it. Damn! |
| Sat 28 Aug | kc |
Actually yes, I back up *everything*.
I have a script that runs over my home directories every 8 hours to various hard drives and once a day to another computer on my network.
My wife's home directories are included in a seperate script. My mysql databases are included in another. My complete webspace is another. My source code is another.
Now, see if you can pop that drive into a second system as a slave drive and see what you can pull up in terms of recovery. You might try putting the drive into another box and booting with Knoppix and see if you can mount the drive and transfer it elsewhere. |
| Sat 28 Aug | Herr Herr | My commiserations. Why don't you open up the hard drive and read the data with a really good magnifying glass
Not long out of university, in my first job I accidentally did a 'del ..' instead of 'del .' on a Netware networked drive with no 'undo delete' feature. The parent directory just happened to be the repository of the company database which I annihilated. My boss was out of the office that day. I asked the sysadmin to restore, but he said he didn't have a backup. I sweated. I was planning on getting sacked. I got nothing done all done I was so sick with worry.
At 6pm the sysadmin poked his head into my office and said 'the database is fixed, restored, like new except any changes made today before you deleted it are lost'. Turned out the mistkerl** wanted to teach the cocky young new graduate a thing or two about who was really important in the office. It worked!
(* Almost all you will know that this deletes all the contents of the parent directory instead of all the contents of the current directory under MS-DOS. It was a while ago.)
(** Mistkerl is German. Use http://dict.leo.org/ for a translation.) |
| Sun 29 Aug | Simon Lucy | I would not mechanically rotate the spindle or anything like that. If the problem is sticktion, where the heads are glued onto the surface of the drive all you'll do is succeed in scraping oxide off steel, along with any data it holds.
If it won't start, send it to a data recovery company, the chances are it won't cost more than around $500. Your sources are worth that I'd have thought. |
| Sun 29 Aug | hoser | Put the HDD in the freezer for 30 minutes. Then load it back into the machine and hopefully it will boot. Do you backup.
I kid you not. This sounds like a joke - it is not. I've recovered data from 2 hard drives that failed to spin up this way. |
| Sun 29 Aug | hoser | Do your back... My typing is bad lately. |
|
| Avalon FAQ bloopers | Sat 28 Aug | Oren |
| 1. From the Longhorn Developer FAQ, November 2003:
Q: Why can’t Avalon and XAML be made to work on Windows XP or Windows 2000?
A: [...] As for technical reasons, put it this way, to use Avalon on Windows XP or before will require ripping out the entire existing rendering system (GDI) and replacing it with Avalon. That’s a lot of money and a lot of testing for questionable return value, considering the majority of XP or 2K machines will likely not be capable of taking much advantage of Avalon. Why spend what would probably amount to millions on development and thousands of hours of additional testing to deliver an overall reduced product for a system that has no use for it anyway? Replacing a subsystem is not a patch, it’s a version upgrade.
Longhorn is not a patch, it’s a new version.
Link: http://msdn.microsoft.com/Longhorn/Support/lhdevfaq/default.aspx#Q_Avalon_DownLevelSupport
(Check it quickly, before its gone)
2. From an interview with Bill Gates, August 2004:
[...] there are changes in all the pillars, but in the case of Indigo and Avalon, its mainly the addition of the down-level support. All XP users, not just Longhorn users, will be able to download the software.
Link: http://news.com.com/Gates%3A+Longhorn+changed+to+make+deadlines/2008-1016_3-5327377.html?tag=nl
I have two reactions to this:
1. Microsoft cant even get their story straight. Lets remember this the next time Microsoft says something like we cant *possibly* make IE work without tying it into every nook and cranny of the operating system. Looks like when theyre motivated enough they can do things they had previously considered virtually impossible.
2. Why *did* Microsoft decide to allow down-level support of Avalon? The argument in the Longhorn Developer FAQ is pretty compelling: people with older computers (and therefore older operating systems) will not be able to take advantage of Avalon. Are they going to all this trouble just to support people who had bought computers shortly before Longhonr was released? |
| Sat 28 Aug | Chris Nahr | Some speculation...
One problem is Visual Studio 2005 and .NET 2.0. Those products are nearly done except for testing, documentation and some add-ons (like that Team stuff), and they include full Avalon support. If they didn't release Avalon for XP, programmers would have a library without a target system.
Also, people might hesitate to upgrade to XP or Server 2003 if Longhorn/Server with tons of new functionality is just around the corner. Given that MS can't deliver Longhorn before 2006 it makes sense to bolster sales of existing Windows versions in the meantime. |
| Sat 28 Aug | Chris Altmann | 'One problem is Visual Studio 2005 and .NET 2.0. Those products are nearly done except for testing, documentation and some add-ons (like that Team stuff), and they include full Avalon support. '
They do? Not from what I've seen/heard. |
| Sat 28 Aug | Chris Altmann | And this "Avalon XP" won't be available till Longhorn ships. It benefits existing XP desktops and the ISV targeting them at that point, but doesn't do much for them between now and then, other than provide a broader potential market for Avalon based software. |
| Sat 28 Aug | Steven | If you want to develop Avalon specific code then you would have to wait a long time while your userbase installs Longhorn. However, if they have XP (which MS will be hoping for by 2006 I guess) then it would be reasonable to develop Avalon specific code as you just need to install some extra stuff for XP. Not as bad as forcing users to upgrade OS. |
| Sat 28 Aug | John R. Troy | Actually, from what I've read a while back, all the Avalon and Indigo stuff were add-ons to the Windows Core. They just weren't planning on making it available elsewhere. The Windows SuperSite talked about this in detail.
The note about taking advantage of computers makes sense from a HARDWARE perspective. Windows 2000 and XP had minimum support specs and backward compatibility issues. They did not take advantage of new tech that is now available. Almost every new computer has a powerful graphics card now for instance. |
| Sat 28 Aug | Dennis Forbes | We've discussed this before, and it boils down to the fact that it's a classic chicken-egg problem, as Steven mentioned: If Avalon is Longhorn only, then ISVs would ignore it until it had a very sizeable penetration - Like > 90% (remember that there are ISVs that avoid .NET because it doesn't run on Windows 95, and somewhere there's a corporation that insists that client apps run on that old Windows 95 desktop they have sitting in a corner).
Microsoft does have a legitimate reason for not wanting to backport Avalon - it costs them money to develop, and there's little economic reward for backporting. That's fair from a business perspective, though they then realized that the development community has absolutely no interest in a fringe technology.
I would suggest to Microsoft that they release Avalon on XP as a 'compatibility layer' (they can spin some bullshit about how the core system blah blah blah), with reduced performance and reduced asthetics - developers can feel good that their apps will run on the large installed XP community (esp. once Longhorn comes out), and the user community will have a reason to upgrade.
BTW: The previous post about VS 2005 is misinformed - VS 2005 has nothing to do with Avalon. That's the next release of VS (Orcas - http://msdn.microsoft.com/vstudio/productinfo/roadmap.aspx) is the Longhorn wave. |
| Sat 28 Aug | Dennis Forbes | 'The note about taking advantage of computers makes sense from a HARDWARE perspective. Windows 2000 and XP had minimum support specs and backward compatibility issues. They did not take advantage of new tech that is now available. Almost every new computer has a powerful graphics card now for instance.'
Sure they take advantage of new hardware - It's called DirectX or OpenGL. What people need to remember is that explorer.exe is simply an application, albeit the default shell: There is absolutely nothing stopping you from implementing a fully 3D shell right now (there is most certainly no limit in utilizing the hardware). |
| Sat 28 Aug | John R. Troy | I meant to say the DEFAULT OS doesn't take advantage of the graphics system. Games are fine but they need to more or less force Windows to support hi-res graphics by default for the basic operations, natively in the kernel. |
| Sat 28 Aug | Dennis Forbes | 'Games are fine but they need to more or less force Windows to support hi-res graphics by default for the basic operations, natively in the kernel.'
See, you're buying into the 'revolution!' argument a little too much. The video drivers, where the HAL talks to the hardware, is already in 'the kernel' - there is absolutely complete facilities for 3D right now. Nothing is being held back.
What Microsoft is offering with Longhorn is a nice 3D shell, but also a API 3D library (nothing to do with the kernel - this library just talks to those drivers mentioned in the prior sentence) that because it's from Microsoft becomes the standard. Avalon is basically an application an an interface library, which is exactly why they can backport it to XP. |
| Sat 28 Aug | Simon Lucy | Originally with the release of XP DirectX support on Windows 2000 was frozen and there were all sorts of statements about DirectX not being developed for Win2k in the future.
This was changed when Win2K replacement was sluggish and games manufacturers lobbied Microsoft. |
| Sat 28 Aug | Dennis Forbes | 'This was changed when Win2K replacement was sluggish and games manufacturers lobbied Microsoft.'
Humorously, and proof that Microsoft doesn't learn, I remember way back when 2000 was targeted at being the merge generation between the consumer and professional OS' (before the disaster ME was foisted on the world), a mouthpiece of Microsoft proclaimed that the next, revolutionairy version of DirectX would only be available on the 2000 line - it wouldn't be available on any of the prior OS'. Of course just like in the situation you mentioned the game companies basically said 'Okay then we're not interested' and Microsoft recanted. It's funny how history repeats itself. |
| Sun 29 Aug | Simon Lucy | And repeats itself ad infinitum.
I remember when I was working for Tandon we had a meeting of all the technical managers in Frankfurt along with the then European Marketing Manager from Microsoft (who was French and seemed to like silk suits ), who tried to tell us that DOS was dead and that we'd have to ship OS/2.
He seemed surprised when we jointly told him that he either supplied DOS with equivalent features to DR DOS or we'd just ship that.
As every other OEM told them the same story, out came DOS 5. |
|
| Pointers to UI design help? | Sat 28 Aug | James Hart |
| Im wondering if anyone knows any sites or places I could go to discuss applications that are heavy on UI. Im working on a algebra manipulation program (if you arent familiar with algebra manipulation programs, a typical example is Mathematica which is documented at http://www.wolfram.com ) whose only redeeming feature is an almost unique user interface. People at sourceforge, etc. keep losing interest. Any pointers? |
| Sat 28 Aug | derek | Apple Human Interface Guidelines: http://tinyurl.com/vgge
Book: 'GUI Bloopers' by Jeff Johnson: http://tinyurl.com/3lu77
Construx User Interface Lead reading list: http://tinyurl.com/6e376 |
| Sun 29 Aug | Michael Moser | http://asktog.com/
http://asktog.com/menus/designMenu.html
Mr. Tognazzini was once a UI guy at the old apple; before OSX. |
| Sun 29 Aug | Chris McEvoy | 8,485 articles at http://usabilityviews.com |
|
| Best add-ons for Delphi 7? | Sat 28 Aug | Mr.Analogy (Shrinkwrap ISV company owner) |
|
Hi,
What are the best Delphi add ins that:
1. Are fairly easy (ideally FUN) to use
2. Increase programmer productivity almost immediately.
(i.e., not some god-awfully complex silver bullet). Something easy to use. E.g., I tried Model Maker. Looks powerful, but quite a bit of a learning curve.
WHAT I FOUND
* Castalia (trial version looks well worth the money. Meets all the above criteria). I hope they expand the Refactoring tools.
* Code Rush (may meet the above. No trial. Cant tell for sure).
Any other suggestions?
Ive got money to spend. It just has to return some productivity. |
| Sat 28 Aug | muppet | .Net (with a lot of irony) |
| Sat 28 Aug | Herbert Sitz | Code Rush has a mountain of features and takes time to learn. I'm just starting with it.
I have Castalia, too. It's a good product but much more limited.
ModelMaker Code Explorer (a different product from the UML modeling ModelMaker) probably has the strongest refactoring tools of the three and like Castalia costs $99. If you're primarily interested in refactoring tools you should check out the MM Code Explorer trial: http://www.modelmakertools.com/ce.htm
And to the muppet, sorry plain-jane vs.net has nothing on the Delphi IDE with these add-ins. Add Code Rush.NET to VS.NET and then you're talking. . .
http://www.devexpress.com/?section=/products/NET/Coderush |
| Sat 28 Aug | Kalani | All those tools, yet the language itself is still so poor in useful features. |
| Sat 28 Aug | John Rusk | GExperts is handy. |
| Sat 28 Aug | Not Waving But Drowning | Second for GExperts. Worth it for the GREP search alone. |
| Sat 28 Aug | A Delphi Developer | Kalani:
People who think like that is what give me, as a Delphi Developer, have a massive edge.
There is no other company in my market that is adding features as quickly or as attractively (or with the same end performance) as I am. |
| Sat 28 Aug | Herbert Sitz | A third recommendation for GExperts. I, too, use the Grep tool all the time. ;) |
| Sat 28 Aug | Herbert Sitz | Not exactly an add-on, but you might want to check out the recommended IDE tweaks in this article:
http://www.hower.org/Kudzu/Articles/PreventativeProgramming/index.html
The suggested modifications to the syntax highlighting colors are a huge improvement. The default setup doesn't have colors setup to distinguish between all the syntactical elements. Changing the colors so that they do distinguish clearly between all elements really is a big help. |
| Sat 28 Aug | Kalani | Delphi Developer, I'm glad that you're productive with it. I've used it for some large projects too, but I think it's silly to be so religious about the language. I think that a simple comparison between other programming languages makes it pretty clear that the Delphi language itself lacks some very useful features, though its cornucopia of tools makes up for that in some respects. Making a 3D renderer and geometric primitives in Delphi, compared to some other languages, was a bit painful with some of these missing language features. |
| Sun 29 Aug | Jono | 'Making a 3D renderer and geometric primitives in Delphi, compared to some other languages, was a bit painful with some of these missing language features.'
Yup, especially if you need an Oracle back-end, full Flash authoring, speech analysis, OCR and broadcast standard video capture.
Get real! |
| Sun 29 Aug | Kalani | Sorry Jono, I don't understand your argument. All I was saying is that Delphi could use some valuable language features (type parameterization/inference, operator overloading, function values, etc) rather than the wealth of tools that it already has. |
|
| Does XP SP2 include .net? | Fri 27 Aug | Mr.Analogy (Shrinkwrap ISV company owner) |
|
Anyone know this for CERTAIN?
I read something that suggested that it DID.
If so, what .net version? |
| Fri 27 Aug | John C | I installed XP SP2 on a machine without .net on it and at the end it still didn't have it on. I think it will only upgrade it if it's already there. |
| Fri 27 Aug | Pete | It is totally insane that it was not included. I have always maintained the best delivery vehicle would be IE however since they effectively ceased IE development it became a non option. With no "forced" framework install and longhorn many years out there is truly no joy for winforms apps (not to mention winforms is old tech of longhorn in any case). |
| Fri 27 Aug | Tony | .NET is in interesting position. Slashdot had news today that Avalon will be available as an upgrade for WindowsXP and Windows2003, not just Windows 2009. So IMO, winforms are pretty much a waste of resources, while ASP.NET is awesome and will get a major boost with ASP.NET 2.0 |
| Fri 27 Aug | Marc | WinForms are not really wasted effort. If designed right you should be able to move to the new platform without too much trouble. And as 90% of UI is in the design, not the implementation, you should then only need to repeat 10% of your work (in theory).
Of course this requires that you really did separate your UI from your function code when you built the WinForm product (something I don't think many, even myself, really do as much as we should). |
| Fri 27 Aug | Mr.Analogy (Shrinkwrap ISV company owner) | ' I have always maintained the best delivery vehicle would be IE '
But Microsoft has apparently decided that WE (devevlopers) are the perfect delivery verhicle for .net.
(Well not me. I never got on the .net bandwagon) |
|