last updated:26 Nov 2003 15:12 UK time
|
 |
|
(Comments added for week ending Sun 23 Nov 2003) | View Other Weeks
|
|
| OT: Protecting clients' data to cover yourself? | Sun 23 Nov | PC Support Guy |
| Hi, my first time here. Be kind. :) This is a slightly off-topic question for JOS.
I am starting a PC support business. I intend to physically go out to customers businesses and help with their current PC or server problems. (My competence is fine, I think, based on the number of toasted systems of friends, family, and my own which I have restored to health.)
One of the key liability issues that I am obsessing over is how to deal with the protection of the end user clients existing data, to the extent that I am not accused of deleting or removing needed, irreplaceable files in the vast majority of cases. *Particularly* for semi-knowlegeable end-users.
Example scenario #1: the clients Windows installation is hosed by spyware and possible viruses. I propose to install and run an anti-virus package in order to clean out their system. Possibly, in doing so, the AV removes certain of the clients critical data files. Or the client accuses me of this.
Example #2: the client wants their old PCs data migrated to a new laptop. In order to do this cost-effectively, I remove the HD from the existing system and plug it into a secondary
IDE connector on the new system in order to copy data over. Static or a stray exposed power connector zaps the HD (unlikely but possible) and they lose the HD and its data.
More?... make up your own scenarios.
The *only* ways I can see to avoid liability and to protect the client and my reputation are as follows:
Ask clients to sign a preprinted release of liability that indemnifies me from damages, and which explains the distantly possible but still possible risks of opening up a PC case.
and/or,
Carry along a portable HD and back up all clients data on the spot before opening any cases. Which can be several hours. Which makes my services non cost effective for them.
I am also concerned about the superstitious client who will blame me for anything that happens on their system 3 mos after I work on their PC.
I would guess that in the vast majority of cases, the companies that do this kind of work make their customers sign a release before commencing any work, and they go bare without any attempt to do a proactive backup.
My thought is that just one screwup could destroy a support providers reputation so its worth doing more than essentially nothing. Or at least offering the service of doing a backup if the client requires.
Thoughts? |
| Sun 23 Nov | Damian | Contracts!
Get the to sign the liability waiver. Offer to do a backup as well, but make sure you have something in writing. |
| Sun 23 Nov | FullNameRequired | in new zealand we have insurance that covers this....theres likely (surely) to be an equivalent in the US.
also, you _dont_ need to be there while it backs up the data.
turn up, start the backup, bugger off.
come back several hours later and make the changes :)
I dunno...but if/when I start mucking about with _real_ data for _real companies_ I _really_ like having backups.
_really_ do.
_really_
personally, if a company came to me and said that they had hired a computer expert to work with their machines, and he (a) didn't want to make backups and (b) wanted them to sign away liability, I would....grin.... |
| Sun 23 Nov | FullNameRequired | I should have mentioned a possible solution.
Get it into the contract that certain specific folders _only_ will be used to store data important enough for backup.
Then you can backup those only each time.
If they still contain months of data then its still going to take hours to backup, but sometimes this cannot be helped.
(let them specify as many folders as they want as being important enough for backup, and use some scripts to automate the backup process _and_ perform a hash etc to check that the backup has worked) |
| Sun 23 Nov | PC Support Guy | >> turn up, start the backup, bugger off.
>> come back several hours later and make the changes :)
Impractical in the kind of business I'm going to be doing. The client will be some free standing business somewhere that requires a drive to get there and back. The backup drive is my property and I would be leaving it with the client. I imagine that in most cases, it will be most practical to simply stay with the PC, unless the client has other problems to be addressed. I'm reckoning that the backup will be (my) billable straight time.
Good points on waivers and backups, though.
Anyway, do you or does anyone else have a recommendation on a backup technology? Portable tape drive, or a portable USB hard drive? Other? |
| Sun 23 Nov | PC Support Guy | Oh, FullNameRequired, I just saw your second post. I should add that I expect many service calls to be one shot deals. Yes, if I work with a client repeatedly, then backups can become economical for them and your ideas are excellent, thank you.
What I am trying to figure out is how to make backups affordable with the 'worst case' assumptions (client and I are new to each other, the client is a drive away from my office so back and forth is impractical, etc.) |
| Sun 23 Nov | FullNameRequired | 'The client will be some free standing business somewhere that requires a drive to get there and back.'
yes....? Im not sure exactly how that makes it impractical.
cars are easy, and you _can_ charge the client travelling time for that specific situation (give them the choice...2 hours traveling time in the middle, or 6 hours waiting doing nothing _or_ they perform the backup of that machine themselves before you arrive.
(they will choose do to the backup themselves, and then fail to do so 90% of the time until they get used to it, so expect to have to be tough about it) |
| Sun 23 Nov | FullNameRequired | 'What I am trying to figure out is how to make backups affordable with the 'worst case' assumptions (client and I are new to each other, the client is a drive away from my office so back and forth is impractical, etc.)'
ahh. cant be done, sorry :)
you can make backups pretty quick by using firewire etc, but that assumes a certain level of tech available, and it assumes that they have a certain quantity of data only.
Honestly, one-off backups are _bad_, computers are _great_ at automating repetitive jobs, but hopeless at doing one off type work. |
| Sun 23 Nov | Dan Brown | Use an extra hard drive and Norton Ghost. You can back up everything quickly. This is especially easy if you bring your own computer to run Ghost.
Insurance is likely to be unaffordable. Insurance companies like being able to estimate risks, and they can't determine the cost of you being accused of destroying all financial records of a client. |
| Sun 23 Nov | Robert Jacobson | This type of business sounds like a recipie for disputes. Client comes to you with hosed disk, asks you to fix it, and you can't recover everything. Even if you're not responsible for the loss of data, it will be hard for you to prove that to the satisfaction of a disgruntled client.
There are certain devices that will automatically make a byte-for-byte clone an entire hard drive -- is that what you're thinking of? I don't know about their speed, but it sounds like the best protection.
At a minimum, you should give the customer the option of doing a backup. Present it to the customer as 'For $X I can try to repair your hard drive but can't guarantee against the loss of data. For an additional $Y, I can first make a backup of your hard drive to provide additional safeguards.' If they decline the backup option, they won't have much to complain about if things go south.
Of course, get a waiver form too -- and check with a lawyer. |
| Sun 23 Nov | anon | Years ago I would do the occasional moonlighting to fix folks problems not for money but because friends of friends would be asking me since I 'knew something about computers'.
I would tell them to back up everything beforehand and they would do a bit of it but there'd always be some weird thing they'd forget and then they would blame me for losing it. For a while I tried to back stuff up for them, but that is a big mistake since you are assuming responsibility for the lost files when you do that.
If I was doing this nowadays, I would carry an assortment of hard drives with me and I would start by pulling their old hard drive and reinstalling from whatever system cds they had. I would charge them three times my wholesale cost for the harddrive, plus a nice installation fee. I would set up their old harddrive as a slave drive so they can copy back their important data files at their leisure.
Another problem you always run into with home users is that they will have 'forgotten' their master CDs for several hundred of the most popular programs. They will swear to you they do have them somewhere and ask you to install copies from your own disks. They will insist that 'the last guy did this for me'. Of course, if they ever get busted for piracy, they will say that you installed the programs without their knowledge. So don't do it! |
|
| Source code for this board | Sun 23 Nov | Moosebumps |
| I remember there have been several threads about the source code for this board. I cant seem to find them in the archive (usabilitymustdie). How do you guys search that archive? Can anyone find those threads?
Anyway Im wondering how much work it is to set up a message board like this. |
| Sun 23 Nov | Dennis Atkins | 1 usabilitymust die is not an archive - it's a metaarchive.
2 to search jos use google with site:discuss.fogcreek.com
3 joel does not make his source code available, but at least four people have made clones of the board
4 maybe someone should make a jos faq |
| Sun 23 Nov | Alex Chernavsky | PHP / MySQL version:
http://www.johnsadventures.com/backend/DiscussionForum/APHPDiscussionForum.html |
| Sun 23 Nov | Santa Claus | ASP version @ http://www.sswltd.com |
| Sun 23 Nov | Robert Jacobson | '2 to search jos use google with site:discuss.fogcreek.com'
Doesn't work for me. It turns up some older topics, but not anything recent. (For example, I searched for 'Xbox' -- which was in a topic I started a few weeks ago -- but got nothing.)
My guess is that since there isn't any direct way to browse to older topics (ones that have fallen off the bottom of the list) they're not getting spidered by Google. |
| Sun 23 Nov | Robert Jacobson | "but got nothing" -- meant that I didn't get that particular thread. Google returned some older theads from 2001 and 2002, but nothing more recent. |
| Sun 23 Nov | www.marktaw.com | Google doesn't like sites that radically change (read: &ixReplies=99) every time it visits. |
|
| Web Hosting | Sun 23 Nov | Frederik Slijkerman |
| A few months ago, Ive chosen Stargate ( http://www.stargate.com ) as the web hosting provider for a new web site for my small software company. The main reason was that Stargate offers a lot of bandwidth for a reasonable price (10GB/$10), and you need some bandwidth if youre selling downloadable software via your site.
Unfortunately, service has been spotty so far. The site is down one or two times a week for several hours, especially the ASP pages, and weve had several other problems. Im thinking of migrating to another hosting provider, maybe to http://www.ev1servers.net/ but Id like to get some advice first. A quick Google search didnt help, so I thought Id ask here. What are good providers, and do any of you have problems with Stargate as well? Thanks! |
| Sun 23 Nov | www.marktaw.com | You might be better off asking in Webmaster World or in that forum that RackShack runs, I forget the name. You may want to look at the Netcraft stats for any host you're looking at.
Personally, I've been a satisfied Pair customer for years. They don't compete on price/space typically, but they've been rock solid where other hosts aren't. |
| Sun 23 Nov | Ori Berger | I'm a satisfied http://34sp.com customer. I have several domains on their 2$/month program. I know many other people who use them (many through my recommendation), and they've all had a very positive experience.
Not affiliated in any way, just a happy customer. |
| Sun 23 Nov | Jan Derk | For 18 months now I lease a dedicated server at ev1servers and I can't remember being down ever this year. The big but is that their servers are unmanaged. They only do reboots and restores. The good thing is that their forums are great. If you are too scared of that Linux command prompt you can always hire one of the forum moderators to manage the server for you.
For normal hosting accounts I would stay away though. It's low priority to them and they put you on one of those old and very slow Cobalt Pizza boxes. You are better of with pair.com or futurequest.net for standard hosting accounts.
And the web site Mark is referring to is:
http://www.webhostingtalk.com
it is a great resource, which rackshack (now ev1servers) recently sold. So they no longer the own it. |
| Sun 23 Nov | Bored Bystander | I had Futurequest for several years and only left them when I set up a 'root' host at www.rosehosting.com. FQ was extremely reliable and responsive. However, they certainly aren't a price leader and they charge $25 (flat one time rate) for every domain you attach to a hosting account. |
| Sun 23 Nov | Joe Blandy | > Personally, I've been a satisfied Pair customer for years.
I'll second that. I've been with them for a little over 2 years and I've never had a problem. |
| Sun 23 Nov | J. D. Trollinger | The hosting industry seems to attract a lot of unsavory characters. Friends of mine got burned by the company described here:
http://www.snopes.com/inboxer/scams/bhcom.htm
You might also see these earlier discussions:
http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=24776&ixReplies=18
http://discuss.fogcreek.com/citydesk/default.asp?cmd=show&ixPost=3246&ixReplies=6 |
| Sun 23 Nov | jbarn | Ditto to the Pair recommendation from Blandy and MarkTAW. Pair is really excellent. Reliable servers, good customer service. |
|
| The Anti-Bionic Office | Sun 23 Nov | Crater Moon |
| I just got this link to Wired story about an experiment in office space design at an advertising agency that, according to the writer, was a dismal failure. Interesting to contrast with the Bionic Office design:
http://www.wired.com/wired/archive/7.02/chiat.html?pg=1&topic=&topic_set= |
| Sun 23 Nov | Sam Livingston-Gray | Awesome story.
<< Chiat had anticipated this pathetic human reaction, and was ready. He declared that 'nesting' - parking in any one place for more than a day - was strictly forbidden. In the 'Chiat High' he'd created, he acted as both principal and hall monitor. Says Rabosky: 'Jay would walk around, and he'd give you this look and say, 'Did you sit here yesterday?' And he'd make you get up and move.' >>
Sounds like someone never read Snow Crash, especially Neal Stephenson's description of working in Fedland. (= |
| Sun 23 Nov | John C. | And an interesting contrast:
http://www.siliconvalley.com/mld/siliconvalley/7281904.htm |
| Sun 23 Nov | Crater Moon | I'm not very excited about that siliconvalley.com story. It quotes executives about how much money it saves them. Nothing from the employee side of things. |
| Sun 23 Nov | Frederic Faure | I think that it was at Arthur Andersen in Paris that they went with this idea a couple of years ago. Sorry, I can't find any link, but I remember watching a documentary on TV about this. AA employees who needed to spend some time at the office, ie. when they weren't out meeting customers or working from home, had to make reservations at least 24h before showing up. Don't know if AA is still running things this way.
I seem to recall people didn't like using totally anonymous desks, and never having the same neighbors. Besides, what about the loss of information due to lack of face-to-face interaction with co-workers. |
| Sun 23 Nov | Dennis Atkins | Great article. Amazing no one sow the writing on the wall when that poor woman had to drag her files around the building in a little red wagon, looking for an empty desk.
Yeah, that's a great use of the time of a talented creative person.
Also amazing is the idea that high school lockers and going to classes is a productve way to produce products.
I remember in college I searched for several weeks until I found an unused professors office. I moved my computer, my radio, my coffee machine, a cot, blankets and my bookcase into that office and put a fictitious name on the door. While other students were scrambling to sign up for mainframe time, I just headed to my office, made some coffee and got my projects done. i always seemed to have more free time than the other students and in the end I graduated Summa Cum Laude and #2 in a class of 800. |
| Sun 23 Nov | Scot Doyle | dennis, that story brought a smile to my face :-) good show. |
|
| Stupid Users | Sun 23 Nov | Alice |
| Ive also being thinking about the whole stupid user thing. The underlying philosophy of GUI design seems to be to cater to the lowest denominator of stupidity.
You cant deny that some people really ARE stupid. But perhaps instead of just excepting this as an immutable unchangeable fact of life we should be trying to think of clever little ways to trick our users into becoming smarter?
Im still a complete newbie to the whole world of Linux and software design, slowly plodding my way through documentation. - and I must say that some of it is pretty damn confusing.
I think that documentation should be considered an essential part of an (open source) operating system, not some kind of optional add-on. What is the use of an operating system which nobody can understand?
Most programmers, however, if you ask them how they think the platonic OS would be designed dont even *mention* the documentation.
I have found in my attempts to read the documentation which exists for Linux that, often you must have read later chapters before you can understand earlier chapters, and ALL the documentation assumes that you have a basic grounding in general computer programming principles and mathematics.
This is okay for me because I do have a basic grounding in general computer programming principles and mathematics, but this is not true of most people.
Most people, for example, wouldnt have the faintest idea what a compiler is, or what the difference is between source code and an executable. Most people probably wouldnt even know the difference between a file and an executable, theyre both just icons on the desktop after all...
Also, most people dont have a clue what a parameter is. This is why they couldnt use a CLI if their life depended on it. They dont have a conceptual model in their mind of a function as a little black box with input going in one side, and output coming out the other.
I dont think its necessary for everybody to understand pointer arithmetic and integration by parts, but I think that in this day and age, people who use computers regularly should have some kind of a clue as to how they work.
Joel explained in his article that you have to make sure that your interface co-incide with your users model of how the program works. This is 100% true. But I think that as well as adjusting our programs to match the model which users have of how computers work, we need to adjust the model which users have so that it corresponds a little bit more with reality.
This cant be done by giving a user a Linux box without X, and telling them to type man man and work out the rest for themselves.
It has to be done in baby-steps and people who do have a clue are the people who have to break down the conceptual model into byte sized chunks which all the stupid users can digest.
I have this idea of an operating system, which an 8 year old (or a 30 year old) with no clues about how a computer works, can sit down at, and learn about computers whilst using one.
Since most readers dont read, it will probably have to be done with flashy animations and music and lots of diagrams etc....
So... To summarize: I reckon, if Linux wants to have a really funky GUI which totally kicks microsofts arse, then it has to be designed in such away that it is usuable by complete newbies, but at the same time forces its users to become more intellegent in an easy step-by-step way (rather than just confronting them with a cliff like learning climb and saying: climb or go-buy-microsoft)
If all the stupid users out there actually did have some kind of idea how their computers worked then I think they would get a lot more out of them and generally be happier. |
| Sun 23 Nov | ajs | This comes up a lot.
The correct answer is - Stupid programmer. Yeah, you behind the keyboard. Quit thinking you know how to do the users job. Actually go and do the users job, then go back and design your GUI.
It's called domain knowledge. Go get some.
If your users are brain surgeons, would you call them stupid? What about astronomers? Waiters? Mechanics? Receptionists? Nurses? Surveyors? Carpenters? IC designers? Graphic artists?
It's a big world out there, if you only know how to program, you don't know jack.
(I don't know jack either - but I know I don't) |
| Sun 23 Nov | Interaction Architect | I often hear people claim that they're not computer literate when trying to use some application or other. I think what they really mean is the application is not 'people literate'. |
| Sun 23 Nov | Mike | 'I think what they really mean is the application is not 'people literate'.' And yet other people can use the app easily.
Yes you should pay attentions to how users expect something to work, but you also have to accept the fact that there are a lot of dumb ass users out there to. You can take the 'no user left behind' mantra too far. |
| Sun 23 Nov | Mike Swieton | When someone asks me how I would design an OS, I don't mention documentation. That's because I consider it an expected part of the product. Not everyone omits that because they don't want docs, most of my coworkers omit it because *everyone* wants docs. But not everyone thinks they're OS should use the Fromatic Boogle instead of the Warkly Farkbag.
And I take issue with the assignment of all the stupidity on one side of the fence. Sure, many many bad user interfaces are the fault of bad program design. But many people also cannot figure out the application because they are dumb. There is blame on both sides.
I reject your suggestion that surgeons (for example) can't stupid. If a member of that profession can't use a given application, it may be because they are dumb. It may also be because the application is misdesigned, but it may not be, not always.
Sure, I could not do their job, but I should hope that if I tried, I wouldn't use a bone saw when a syringe was called for. Which is exactly what many of them do when using computers (not necessarily all or most, but at least one). Just because I can't do what they do doesn't make me dumb. And it doesn't mean that they can't be dumb.
I may be stupid, but that doesn't mean that no one else can be too. |
| Sun 23 Nov | sgf | It's irrelevant whether the users are stupid or not. They are who they are and they will decide to buy your application or not. If they can't use it, it's of no consequence that it's 'their fault'. They still didn't buy your app.
The stupid programmers are the ones who don't see this. |
| Sun 23 Nov | www.marktaw.com | Intuitive does not mean stupid.
Think of automobiles. A poor UI on the radio can kill people because they look at the radio instead of the road. A doctor could be just as susceptible as a burger flipper.
Again, referring back to Donald Norman's The Design of Everyday Things, every function should have a button so you don't have to go searching through menu's to find things. That button should also obviously do what you want it to do.
Computers rarely have buttons anymore, you right click, left click, double click on the same icon to bring up different menus.
The difference between a computer and a word processor is that a word processor is specailized and you can easily put a button for every function on it. An OS is supposed to be generic so that the same UI applies to all programs.
Microsoft and Apple deliberately standardized the user interface between programs so that a bold B meant bold and an italicized I meant italics. The standardization surely helped this become the universally recognized symbol for these things, but also that each button had one and only one purpose surely helped.
File / Edit / Preferences / Help etc. are standardized menus, yet users continually have to hunt for what they want to do in them. |
| Sun 23 Nov | Mike Swieton | It's not irrelevant whether the users are stupid or not. If all of the users are stupid, you must make things very very obvious. But what do you do if only 10 users are stupid? You cater to the biggest market, smart users.
There are many areas in which it's not possible to make it easy for an expert to use and easy for a novice, and easy for everyone in the middle. In these cases, you have to decide who you're going to leave behind.
It's just as dumb for a programmer to make an interface that is for the novice user when his market is experts as it is to make an expert interface for novices.
Making an experts-only interface does not make a stupid programmer; making such an interface in a novices-only market is stupid though. |
| Sun 23 Nov | . | Consider this contrast:
When users can't understand software, the programmers get blamed.
When people ask questions about the law, there's no hint of saying the lawyers are too dumb to make the law clearer. Instead there's a clamour of posts advising to 'see a lawyer,' implying the user is the dumb one. |
| Sun 23 Nov | no name | 'When people ask questions about the law, there's no hint of saying the lawyers are too dumb to make the law clearer. Instead there's a clamour of posts advising to 'see a lawyer,' implying the user is the dumb one.'
People don't say 'see a lawyer' because the law is something that just naturally needs lawyers or because people are 'too dumb' to understand it. They say it because any other advice will result in lawyers making life hell for the foolish person who didn't submit to them. A lawer will often give the same advice that some random person here would give, but an insurance company will only cover the legal liability if there's a lawer's receipt. Please note that I quite clearly stated the lawyer was not being consulted for their superior intellect or even for their knowledge of the law, so your assertion that 'see a lawer' implies that people are dumb is simply wrong.
It is not implying that people are 'too dumb' to understand the law, but instead acknowledging the fact that the law is a minefield and that consulting a lawyer is necessary not to avoid the mines but to ensure you can get your leg stitched back on (with a few scars) when the lawyer makes a mistake.
When people discuss what the law should be, rather than what it is, the most common idea is that the law is too complicated, and should be made simpler and easier to understand, even though practical means of achieving that are harder to come up with. |
| Sun 23 Nov | . | You mention insurance in one paragraph, but not in the other. However that's not generally the reason people are exhorted to see a lawyer.
In any case, working on that logic, users are often instructed to consult experienced support people, and businesses are often instructed to use experienced developers, but they don't, and still direct blame to programmers. (Oh, and Microsoft.) |
| Sun 23 Nov | www.marktaw.com | Oh great, now we have " " arguing with "." |
| Sun 23 Nov | ! | > Oh great, now we have ' ' arguing with '.'
Well, I say fuck 'em both |
|
| Linux Refactoring | Sun 23 Nov | Alice |
| What does everybody think about rewriting Linux, or parts of it (such as X perhaps) in a higher-level, object oriented language such as python? |
| Sun 23 Nov | Clay Dowling | I think that plan smells like old socks. X is slow enough already, let's not handicap it with a language that will add to the problem. |
| Sun 23 Nov | Alice | Which is more important:
a) The speed at which X (or the kernel) runs on the cpu
b) The speed at which a programmer writting an application for X (or Linux) can get their head around the API? |
| Sun 23 Nov | Mike | Which is more important:
a) The speed at which X (or the kernel) runs on the cpu
b) The speed at which a programmer writting an application for X (or Linux) can get their head around the API?
For the end user a
For the developer a - because you aren't going solve the x problem with a scripting language choice b is the developer thinking about getting x rewritten as easily as possible. Python might be a great language, but it does not have the performance you need for a gui server. |
| Sun 23 Nov | Frederic Faure | Besides, if Linux is going to make major in-roads on the desktop, who cares about a windowing system that can send its display on another host? This is 1970's technology :-) |
| Sun 23 Nov | rd | Frederic,
Well, Microsoft care for one. As Joel noted, XAML looks an awful lot like NeWS.
Sure, XFree86 might not be the ideal implementation. Better perhaps to adopt the Apple model by adding an X11 compatability layer to a native display.
But asking that Linux should abandon X11 altogether is a really silly idea, not least becuase it involves throwing away countless hours of work on windowing toolkits like GTK+ and QT. |
| Sun 23 Nov | Frederic Faure | I know that we have to stick with X because dumping it would mean rewriting just about every GUI-based Unix apps but still... it's kinda funny to see port 6000 open on a desktop host, which _no one_ will ever write too from the network :-) |
| Sun 23 Nov | Moose | I use Linux only as an hardware abstraction layer. On top of Linux and XFree86 I run Squeak. One of the fathers of Squeak is the man who invented the term 'object oriented': Alan Kay. You can download Squeak at
http://www.squeak.org |
| Sun 23 Nov | MS Developer | I *totally* support rewriting the Linux Kernel in Python. That's a plain good idea whose time has come! |
| Sun 23 Nov | Mike Swieton | I question whether or not the kernel needs rewriting. Is there some fundamental problem with it?
As for X, I also question that. I don't think X has problems that require a revolutionary change. The number 1 problem cited with X is the inconsistant actions of the applications. But that is not a fault with X doing something badly or being broken. It's a problem with X having never implemented something (common widget set). That can be added.
I don't think a rewrite is necessary. I also think a good rewrite is really not possible, or at least not feasible, if you wish to maintain backwards compatibility. Which you must, because there are many thousands of useful and good applications for X. |
| Sun 23 Nov | GP | By the way, rewriting something in another language has nothing to do with "Refactoring". |
| Sun 23 Nov | Slashbot | What does everybody think about refurbishing cars, or parts of it (such as the steering wheel) using lighter materials such as carbon fibres? |
| Sun 23 Nov | Ori Berger | X isn't slow. Used right, with the right drivers, it's about as fast as Win32 used right. The network transparency costs very little, and if you insist, you can use shared memory to completely eliminate the costs (losing the network transparency along the way, unfortunately).
Check out FLTK [ http://fltk.org ] - It's a graphic toolkit, that works on both Win32 and X. It makes full use of the features of both systems, and is fast and crispy on both. It's faster than any other toolkit I've tried on both Win32 and X, (except, perhaps, the K GUI). |
| Sun 23 Nov | CEO On the Take | I'm right with the idea that loads of programmers should spend their weekends and evenings rewriting the kernel in Python. For free. Do it. |
| Sun 23 Nov | Beth | Scripting languages are great for lots of things. Kernel programming isn't really one of them. |
| Sun 23 Nov | Slashbot | Don't rewrite the Linux kernel in Python. Start from scratch. |
|
| Biz with importers | Sun 23 Nov | Evgeny Gesin /Javadesk/ |
| Is anyone worked with large importers of electronics and computers,
which sell via third-party on-line stores?
- What average man-hours you spent into integrating with the
importers backend?
- Are they capable of providing order status acknowledgment (like:
awaiting payment, order shipped, order problem, etc.) and updating
order status in your automatic system?
- What minimal/average/maximum discounts do they offer?
- What was your ROI? (or the time to bankruptcy ;)
All stories are very welcome. |
| Sun 23 Nov | Evgeny Gesin /Javadesk/ | I meant not discount, but what percent (%) importers pay from "total" sales.. |
|
| Build tool for VB6 | Sun 23 Nov | ICBW |
| I just started working for a software company that uses VB6 as its main development environment. I had some experience with VB in the past, but need a lot of work on it to get up to speed. As to the desirability of learning VB6 these days, with the proliferation of .Net in the dev world, I will leave that to a different thread :-).
I worked previously in a Java shop. So first of all, I’m looking for a good tool (like Ant) to automate the build process. At this point, I need to find something that is free as the budget for tools seems to be non-existent here. Are there any recommendations for a tool to use?
Also, I would be very happy to get recommendations for any good VB resource sites and/or mailing lists. There are so many sites out there, learning which ones are good would be a big help and time saver for me.
Thanks! |
| Sun 23 Nov | Robert Jacobson | This site seems to be good for VB6 (and VB.Net) resources:
http://www.vbaccelerator.com/home/index.asp |
| Sun 23 Nov | Phil | http://www.positive-g.com/dailybuild/index.html |
| Sun 23 Nov | KayJay | As a VB Developer myself, I am most comfortable and have learnt a lot at http://www.vbforums.com |
| Sun 23 Nov | mb | nant apparently has a VB6 build component. if you've used ant, this would seem the natural place to go.
http://nantcontrib.sourceforge.net/help/tasks/vb6task.html |
| Sun 23 Nov | Sathyaish Chakravarthy | >Also, I would be very happy to get recommendations for any good VB resource sites and/or mailing lists. There are so many sites out there, learning which ones are good would be a big help and time saver for me.
The first thing you could do is to get familiar with the development environment. Roam around the VB6 IDE, open a standard project, click on the blank form and hit the F4 key to bring up the properties window. Browse through the form properties in the properties window and read along the propery descriptions at the bottom of the window. Alongside, open the MSDN and look for their documentation. Do this for all the intrinsic controls. The intrinsic controls are those that are present in your toolbox by default, i.e. without adding any external controls from the Project -> Components dialog.
Having done so, after a few days, read the Karl Moore columns/articles for VB beginners on VBWorld (http://www.vbworld.com). He makes everything seem as easy as cakewalk. Then you can subscribe to InformIT (http://www.informit.com) and read from the library, a host of useful articles and book excerpts. Besides this, you will find the following sites extremely useful:
(1) Dave McCarter's Visual Basic Tips and Tricks (http://www.vbtt.com)
(2) Rod Stephen's VB Helper (http://vb-helper.com)
(3) http://www.vbexplorer.com
(4) http://www.thescarms.com
(5) http://www.codeguru.com/vb
(6) http://www.vbip.com
(7) http://www.winsockvb.com
(8) http://www.vb2thmax.com
(9) http://www.mvps.org
(10) http://www.cgvb.com
(11) http://www.freevbcode.com
(12) http://www.codeoftheweek.com
I am sure I am forgetting many other interesting ones, but these are one of the few that come to mind and are extremely helpful for beginners.
One more good site is http://www.vbworld.com. So is the VB section of http://www.planetsourcecode.com.
Books:
==========
(1) If you're enrolled for a course, then your course book should be the first place to look.
(2) Mastering VB6 (BPB Publication)
(3) Visual Basic 6 Unleashed - by Rob Thayer - for COM, ActiveX control/DLL creation, and a host of other topics like TAPI, MAPI, SAPI, Winsock etc.
(4) A Visual Basic 6 Developer's Handbook/Toolkit (don't remember) - by Hank Marquis and Eric Smith
(5) Waite Group's Visual Basic Tips and Tricks
(6) Dave McCarter's VB Tips and Tricks (supplement to the site http://www.vbtt.com)
Then you could move on to subjects such as Win32 API programming. A good site for API reference with VB is http://www.allapi.net. Alongside, the following books will help you:
(1) Dan Appleman's 'A Visual Basic programmer's guide to the Win32 API' (the last edition was written for VB5 but it will help you along with VB6 too)
(2) Steven Roman's 'Win32 API Programming with Visual Basic' (One of the best sources I've found, very lightweight, you can read them at night like bedtime stories) This is O'reilly publication available from Shroff Publishers and Distributors.
(3) Later on, when you're about 2 years into VB, you will like to read Bruce McKinney's 'Hardcore Visual Basic' onlineat http://www.mvps.org. It was earlier published in the MSDN till April 2001. Its now been removed from MSDN and is only available at MVPS.ORG online. The hard copies are out of print although if you like one, you can get one from eBay at $300 (USD).
(4) Visual Basic Developer's Guide to COM and COM+ - by Wayne S Freeze (SAM's Techmedia publication)
Besides this, you'll want to buy some Bill Waughn's book on ADO. You can start learning quick if you participated in VB forum discussions. Here are the three best forums, IMHO:
(1) Extreme Visual Basic ( http://www.visualbasicforum.com)
(2) VBForums ( http://www.vbforums.com)
(3) Code Guru Forums ( http://www.codeguru.com/forum)
Other forums, that are not-so-good, IMHO:
(1) http://www.tek-tips.com
(2) Open ITx vb mailing list ( http://www.vb.ittoolbox.com)
(3) QuickTechUSA (http://www.quicktechusa.com/msgboardvb/wwwboard.pl)
(4) Custom Code Factory ( http://www.custom-code-factory.com)
Hope that helps. |
|
| Bayes filtering, invented by... | Sun 23 Nov | rOD Begbie |
| Thomas Bayes, shorely.
First applied towards spam filtering by Paul Graham.
Rod. |
| Sun 23 Nov | Phoenix | Actually, this publication from Microsoft Research predates Paul Graham's 'plan for spam':
http://research.microsoft.com/~horvitz/junkfilter.htm |
| Sun 23 Nov | Rob Mayoff | Jason Rennie published a paper on Bayesian filtering of e-mail in 1998, and has been working on his implementation of it (called ifile) since at least 1997.
http://www.watson.org/~jrennie/ifile/ |
| Sun 23 Nov | Crimson | Paul Graham himself mentions that there were others (specifically at MS) who worked on Bayesian filtering before himself. The problem wasn't the idea -- it was the implementation. I |
| Sun 23 Nov | Robert Jacobson | How sad that Microsoft was sitting on this idea for years, but couldn't develop a halfway decent spam filter for Outlook until Outlook 2003. |
| Sun 23 Nov | heh | > The problem wasn't the idea -- it was the implementation.
It wasn't the implementation or the idea, it was a matter of visibility. His essay about Viaweb and Lisp was widely circulated some time earlier.
Bayesian learning is about 15 years old. |
| Sun 23 Nov | CdR | Invented? No. Popularized? Yes, sure.
Popfile http://popfile.sourceforge.net/ was also around before Graham's article, and it's still among the very best. The main feature it has over any other (except ifile I suppose) is that it's not used just for spam vs. not-spam filtering but instead it can filter anything. You want all securities-related mail in a separate bucket? Or all mailing lists in the same bucket? It handles it beautifully.
You know popfile is the best the first time you receive email from someone you've never corresponded with before, and its still filtered into the correct bucket, based solely on content. For example, signing up on some site, and receiving the password and popfile just /knows/ where I would want such mails. |
| Sun 23 Nov | mathstench | 'Thomas Bayes, shorely.'
Thomas Bayes died in 1762. He came up with Bayes's rule. I.e. conditional probability. He didn't invent bayesian filtering. |
| Sun 23 Nov | as | It's always puzzled me why it's called Bayesian filtering when Paul Graham's article doesn't contain anything that even looks like an example of Bayes' theorem. |
| Sun 23 Nov | mathstench | "bayesian" in this sense is just an adjective that means "uses subjective probabilities". any technique that builds off of the idea that you update the likelihood that a given statement is true (i.e. that a message is spam) based on new evidence can be said to fall under bayesianism. |
| Sun 23 Nov | Matthew Lock | Credit correctly to go Paul Graham because after he published 'A Plan for Spam' there was an explosion of open source efforts to control spam by statistical means.
Graham never claims to have invented the idea by the way: http://www.paulgraham.com/msftpatent.html
By the way, curious that MS has a patent on some aspects of Bayesian spam filtering. |
| Sun 23 Nov | Justin Mason | Check citeseer -- there's a whole stack of papers that predated PG's work regarding the application of Bayesian classifiers to spam filtering.
But Graham's article certainly popularised it very nicely ;) |
| Sun 23 Nov | Matthew Lock | Probably the main factors were the interesting-ness of Graham's writing and the timeliness of him releasing the paper - just about the time when spam became a major headache. |
| Sun 23 Nov | Interaction Architect | Don't filter spam, just legislate it away:
http://rss.com.com/2100-1024_3-5110622.html?part=rss&tag=feed&subj=news
I'm serious...and don't call me Shirley. |
|
| JoS - Delphi... | Sat 22 Nov | Confused |
| I hear Delphi mentioned a lot here. How many professional Delphi programmers can there be out there and are most card-carrying JoSers?
Note, this is not a scientific test... :)
Monster.com has ~174 Delphi jobs [1] vs ~3290 [2]
Seems like this board has attracted most of them.
This isnt a flame against Delphi, just confused at how the number of people on this board rave about Delphi compared to the (apparent) demand (or lack thereof)
for Delphi programmers...
[1] http://jobsearch.monster.com/jobsearch.asp?q=delphi&sort=rv&vw=b&cy=US&re=14&brd=1%2C1862%2C1863
[2] http://jobsearch.monster.com/jobsearch.asp?q=visual+basic&sort=rv&vw=b&cy=US&re=14&brd=1%2C1862%2C1863 |
| Sat 22 Nov | Confused | sorry, comparing Monster.com hits for Delphi (174) vs Visual Basic (3290) |
| Sat 22 Nov | Bored Bystander | >> just confused at how the number of people on this board rave about Delphi compared to the (apparent) demand (or lack thereof) for Delphi programmers...
I 'are' one of the programmers to whom you're referring and your description of the attitude is pretty accurate.
Delphi developers have a 'siege' mentality for several concurrent reasons:
Delphi has been marketed, priced and positioned absolutely horribly from the start. Borland/Inprise literally snatched defeat from the jaws of victory. Most of us are extremely frustrated with this state of affairs. Borland seems to manage to sell enough copies to keep the brand alive but the market penetration in the real world has been weak since Delphi was announced.
Delphi is exceptionally productive for desktop applications, so (IMO) there is not the great demand for developers to compensate for a lame development environment.
Delphi tends to be picked by smaller companies that have well-defined functional reasons for choosing their programming tools. Smaller companies are extremely selective and spotty in their hiring practices. Whereas larger companies make the choice of programming environment a more political issue, and FUD factors ('nobody was ever fired for recommending Microsoft') come into play. So the market demand for Delphi skills has always been extremely weak and spotty.
Technically, Delphi gives you (insert 3 minute infomercial here) on a silver platter.
Basically, most of us are frustrated - it's a superior tool sold by a stupid clueless company that has demonstrated through actions that it doesn't understand its market at all.
So from that frustration there arises a sort of evangelical zeal to be heard. |
| Sat 22 Nov | Cletus | 'Basically, most of us are frustrated - it's a superior tool sold by a stupid clueless company that has demonstrated through actions that it doesn't understand its market at all.'
AMEN! Very well put. |
| Sat 22 Nov | Cletus | 'How many professional Delphi programmers can there be out there '
Perhaps, it's the same guy, with many alter ego's, posting under different aliases :) |
| Sat 22 Nov | Dennis Forbes | With all due respect to Visual Basic (...is that an insult?...) you'll find it under-represented in virtually all "advanced" software development forums. At the same time, fringe technologies like Delphi, Python, etc, get the lion's share of the advocacy. |
| Sat 22 Nov | Xxxxx Xxx | A typical software has a lifespan of several years. The
software tool company better not get bankrupt while
the software it is written in is being maintained.
Borland does not have my trust in this aspect. Whats
more, it can't even decide on what moniker to adopt. |
| Sat 22 Nov | Li-fan Chen | Some people don't use Monster |
| Sat 22 Nov | Confused | hotjobs.com 59 vs 732
dice.com 82 vs 1181 |
| Sun 23 Nov | Mike | As with many things in computing. Popularity is inversely proportional to quality. |
| Sun 23 Nov | Phoenix | Delphi is disproportionately popular in Central Europe and Russia. But I'm sure that didn't generate many sales for Borland :-)
Probably the reason is the long tradition of Turbo Pascal for DOS - for several years 'programming' meant 'Turbo Pascal' and nothing else. |
| Sun 23 Nov | Matthew Lock | I'm sure that anyone who did a Computer Science major up until the mid 90s (when a couple of years of Pascal was mandatory) felt that Pascal left a bad taste in your mouth. That certainly couldn't have helped Delphi. |
| Sun 23 Nov | Sum Dum Gai | Borland have unfortunately never seemed to really have a plan. There's a saying that goes 'Better a bad plan than no plan at all', but unfortunately Borland don't appear to have heard it.
Or their plan is so bad that it just appears they don't have one ... |
| Sun 23 Nov | one programmer's opinion | When Delphi first came out there sure seemed like there were a lot of young PC desktop developers who were interested in this product. The problem is that you can't just produce a superior software development environment and expect the corporate business to embrace it.
Most schools at the time taught VB, C++, mainframe technology, etc. -- not Pascal. In the early to mid 1990s, cheap programming labor in the United States primarily consisted of recent college graduates. Since many of those graduating students weren't officially (by taking a class) exposed to Delphi while in school ....
Imo, among many other things Borland should have given their product away for free to all educational type of institutions. Also, I think it would have helped Borland if they had initially dumped the product onto the market at a severely discounted price.
My feeling is that Delphi is primarily being used a lot nowadays by hobbyists and shareware type software developers (i.e. people who are independent in some manner) in the United States. This type of software developer is much more likely to visit a forum such as this one then say your typical overworked, stressed out, business application developer. The last thing your average joe programmer wants to do is learn yet another programming language and set of development tools. |
| Sun 23 Nov | Kyle Cordes (kylecordes.com) | Delphi is also quite popular among vertical market software vendors. Such companies tend to have a small number of developers, and also tend to keep quiet about their use of Delphi. They may be perfectly content that their competitors and customers assume they are using something else. |
| Sun 23 Nov | Clay Dowling | The rabid advocacy comes from another factor as well. As far as a development model and environment go, Borland does understand what's needed, and Microsoft doesn't. Any of the Borland tools are easier to use and produce a good looking app than anything Microsoft puts out.
If you've tried to use Visual C++, you'll understand. That product is exceptionally non-visual. Snag Delphi or C++ Builder and you'll see that it's pretty trivial to build a good looking, even driven app. Borland's tools knock Microsoft's tools down and take their lunch money on a daily basis. |
| Sun 23 Nov | Sunish | Delphi gives the power of VC and ease of VB for the developer, but alas in how its marketed its neither the power of VC or VB
Mostly delphi is used by one man companies who don't at all recruit people via monster or whatever |
| Sun 23 Nov | Robert Jacobson | I'm a VB.Net/C# developer. I have no experience with Delphi -- it sounds like a fine language, but I don't have a compelling reason to switch.
A few months ago I had some legacy Pascal code that I wanted to play around with, so I downloaded a trial version of Delphi from Borland. Being used to Visual Studio, the Delphi IDE looked rather... well... quirky. The strangest thing, IMO, was how instead of using a standard MDI interface, it had one window for the menu/toolbars and separate, independent windows for code modules. (Maybe there's a way to get an MDI interface, but I couldn't find it.) It gave me an unpleasant first impression.
Just my two cents... |
| Sun 23 Nov | jcm | Being one of those 1 man shop already mentioned on this board, I feel strongly toward Delphi and the productivity boost it gives me. I can say though that I am impressed with the job Borland is doing. And in fact, in a year or two, as .NET goes mainstream probably will use Delphi Octane to migrate my code to .NET and embrace C#.
Time will tell. Borland sucks, Delphi clearly not. |
|
| going independent (sort of) | Sat 22 Nov | indie |
| Im close to landing my first independent contracting gig (part-time, Im still maintaining my day job). Anyone out there have advice, dos/donts, links to resources, etc. ? |
| Sat 22 Nov | Li-fan Chen | I think a little more detail would help?
Are you to be elected the president of the japan? Or the janitor for a small company? |
| Sat 22 Nov | Confused | gee, this is a software forum.....
frequented by programmers.....
hmmm.... |
| Sun 23 Nov | hoser | Most employment agreements prohibit moonlighting. |
| Sun 23 Nov | Simon Lucy | That would include all those policemen working as bouncers in bars then... |
| Sun 23 Nov | Dustin Alexander | 1) Don't undercharge.
This will destroy your life and your relationship with your clients. Most good consultants prefer to lose clients rather than undercharge, because they realize the damage to their careers and reputations this can cause.
2) Be realistic.
Be more realistic than you are when quoting for your day job. You are NOT going to be able to work many 16 hour days and through many weekends in a row for long. Be realistic about your workload and take it easy. Make sure your client is aware that you have other obligations and is ok with taking the backseat to other elements in your life.
3) Make sure its legal.
Make sure your current employer will have no grounds to go after you or even fire you for your side job. It can be one hell of a blow to have all these elements of your life coordinated and then find out you've been assassinating yourself at your day job.
4) Figure out where you want to go NOW
If you want to do this for the rest of your life, one client will not do it. The sooner you can figure out marketing and the political game, the better you will do in the long run. You are now building a business, not just working for someone else. Focus on all the aspects of building that business. Read some books, take some classes, and pay attention to the little details.
5) Cover Yourself
Get bonded. A good 1M bond can cost as little as $500 and will save you a lot of concern if the client turns out to be a feature creep specialist or you make a mistake. Liability is one of the number one overlooked issues when going into business for yourself.
6) Get a contract.
Get a contract. Get everything, including all expectations, signed off on and develop a method early on to get client acceptance. This is much more important now than when working for a salary, especially when you may be dealing with a smaller project that is more subject change.
There's a few lines in an eternal bin of device.
Many years ago, when I was getting into this business, a wise man once told me: It takes three years to build a successful business. No man can or should do it in any less. The first year you will spend screwing yourself. After that, you will spend the second year getting screwed by your clients. It is only in the third year that you will have the wisdom to know your own abilities and the cynicism to understand those of your clients. |
| Sun 23 Nov | Dustin Alexander | hmm s/device/advice. Strange that. Must be too deep in the keyboard drivers this morning. |
|
| Is .NET overkill for Desktop Apps? | Sat 22 Nov | Cletus |
| I write desktop and small utility applications in Delphi for the company I work for. The nice thing about using delphi is that the apps compile to a single exe (no deployment hassles, dll hell etc), OO framework, and generally the apps are pretty fast. Some of the utitlity apps are small enough that can still fit on a floppy. We may have to start look into converting our desktop apps to .NET, so that we can be .NET compliant and have one code base (server-side apps are in .NET). I dont mind, and I am not complaining, if this is going to keep me employed, but I ask myself what benefit is this for the consumer of the software (internal and external customers)? If a user of the software wants a copy of some of the software, all I have to do is email them an exe (usually 2mb or less) or put it on a floppy and hand it to them. Now in the .NET scenario, I have to make sure the user has the runtime engine (20 MB install), the latest version of IE, the latest windows updates. Plus, I dont know if there will be any noticeable performance gains in a .NET app. All in all, it seems like .NET is overkill for desktop development. I can be totally wrong, and I am willing to be corrected.
I am not trying to bash .NET as a development enviroment. What I have learned so far, it seems like a very elegant framework (similar to Delphi/VCL) and I look forward to learning more and working with it. I am just trying to understand what the benefits are for using .NET for utility and shrink-wrapped applications. |
| Sat 22 Nov | Mark Hoffman | 'I have to make sure the user has the runtime engine (20 MB install), the latest version of IE, the latest windows updates.'
There is a little hyperbole there...They don't necessarily have to have the latest version of IE and they don't have to be fully patched. They do need the .NET Framework installed. In the future, this will be installed with the OS. For now, yeah, it's a separate install.
I don't really look at the choice of development tools in the 'what advantage does this have to my customer? viewpoint. If the application can easily be installed and run on my target market's computers and answers their needs, does it really matter what development tool it's written in?
If having your clients install the Framework is going to be a burden, then by all means stick with Delphi. |
| Sat 22 Nov | Dennis Forbes | If the customer has the framework, which is getting closer and closer to being an acceptable assumption, .net can actually yield some tremendously tiny "binaries" - An interactive modal dialog app with a couple of labels and buttons that set value yields a release "binary" of 6.6KB. |
| Sat 22 Nov | runtime | You say you 'must' switch from Delphi to .NET. But if you are already succcesful in Delphi, WHY bother switching? You have Delphi code that works. You would have to rewrite from scratch on .NET (and you know how popular that is on THIS web site). :-D
Sure, your server-side software might be .NET, but are they maintained by the same developers? How much code sharing will their actually be? Is it enough to warrant the extra costs of rewriting and deployment headaches? |
| Sat 22 Nov | Frederic Faure | Besides, if you want to build web applications to paying customers, I understand that Delphi can build ActiveX controls. If they don't mind being restricted to an IE-compatible browser, I think you should give it a shot before diving into server-side scripting with ASP.Net. |
| Sun 23 Nov | Kevin | Um, you do know that Delphi 8 for .NET was released last week, right? |
| Sun 23 Nov | Mitch & Murray (from downtown) | Delphi 8 for .NET was _announced_ last week, not _released_. It will be a while yet before it is finalized. |
| Sun 23 Nov | C# fan | I finished an application (3000 LOC C#) a week ago. I worked with the client feedback. I think I sent +-20 versions by email. The actual exe is 50k.
In this case, a tiny exe + a big runtime payoff. |
| Sun 23 Nov | Cletus | 'I think I sent +-20 versions by email. The actual exe is 50k.
In this case, a tiny exe + a big runtime payoff.'
This looks promising. If I understand correctly, there is a one time 'penalty' (for lack of a better term) for the user in downloading the runtime once and then distributing applications become quite manageable.
Thanks to everyone for all of your feedback. |
|
| Microsoft "Empower" Program | Sat 22 Nov | Curious entrepreneur |
| Has anyone tried this program from Microsoft ? Are there any bad aspects to it ? |
| Sat 22 Nov | Anon. Coward | Have you looked at the main page of Joel's website? He gave a long review just a couple weeks ago, and it's still there. |
| Sun 23 Nov | Simon Lucy | Currently the US Empower program is being discounted at 50%, $375. I'm about to find out if the UK are going to do the same. |
| Sun 23 Nov | Kentasy | Discount ? Wow. I already thought it was a good deal. In fact, it seems 'too good to be true' so I am wondering what could be bad...
There is a 12 month deadline of course and the testing requirements, but both of these can be good as well by setting a goal and minimum quality requirements.
Thanks Simon for the heads up on the possible discount... |
| Sun 23 Nov | Nick | It's a trap. Read the fine print:
1) All licenses expire in 1 year.
2) You need to get your app Win certified.
3) You need to join a MS partnership program.
And then estimate the real cost. Thanks, Joel. |
| Sun 23 Nov | Tim Sullivan | > 1) All licenses expire in 1 year.
The membership expires in one year, as do all other standard MSDN subscriptions.
> 2) You need to get your app Win certified.
No, you don't. You need to make a 'reasonable commercial effort' to do so. The program only needs a 'verified' test, which is $800 for the Windows XP test.
> 3) You need to join a MS partnership program.
No, you do not. Again, you need to make a 'reasonable commerical effort' to do so, assuming you pass certification, which you may not. In any case, it's $2500.
So, for $3675 (of which only $375 needs to be paid up front, the rest are more or less discretionary - 'we cannot afford it' is a good reasonable excuse why you can't get tested) for software worth (5 * $2,199), or $10,995.
It's not a trap. It's a deal, any way you cut it. For $375 you get 10K worth of software, unless you've got a lot of money for testing. I don't know about you, but sign me the hell up. |
| Sun 23 Nov | Robert Jacobson | Thx for the details Tim. Just out of curiosity, schedules tend to slip -- what happens if your program actually is released in 24 months instead of 12? Does Microsoft bill you for the software, or take your firstborn child? |
|
| Stupidity Video | Sat 22 Nov | Saturday the 22nd |
| http://www.softwaremarketsolution.com/files/StupidityInterview-147kbps.wmv
Has Chapman talking about book, marketing stuff. Very funny segment on Dalai Lama. Talks about Joel. |
| Sat 22 Nov | tapiwa | Jeez, a 50Meg download... Has anyone else got a smaller version, or indeed a transcript? |
| Sat 22 Nov | tapiwa | Have just been to their websites ...
http://www.softwaremarketsolution.com/
That there is one UGLY website. |
| Sat 22 Nov | Saturday the 22nd | Why download? Streaming format.
The link is at www.insearchofstupidity.com.
Didn't look at the other site. Not sure how pretty it is but has a lot of good stuff on it. Never knew much about focus groups. |
| Sat 22 Nov | Evgeny Gesin /Javadesk/ | I downloaded the video. There are some funny cartoons. |
| Sat 22 Nov | no name | Great information humorous stuff but who's basement did they shoot it in and he could be the geekdom poster boy. |
| Sat 22 Nov | Stephen Jones | Streaming video at 147kbps - not really on for a dial up or ISDN connection. |
| Sat 22 Nov | Frederic Faure | Speaking of which... do you know of a good editing application to edit and convert WMV files to eg. AVI or RealVideo? |
| Sat 22 Nov | Tayssir John Gabbour | Very entertaining video, good use of the web for excerpts. But is there a rational reason not to have excerpts on Amazon? Many Apress titles seem to take advantage of them. After investing time reading them, customers probably also look for book websites. |
| Sat 22 Nov | Frederic Faure | I no longer get any sound around 7:30 in the video. |
| Sat 22 Nov | Fairlight |
The Wordpro & Wordpro 2000 annecdote is actually
quite funny. |
| Sun 23 Nov | no name | Man, that guy comes off as an arrogant moron for the most part. |
| Sun 23 Nov | Simon Lucy | Hmmm, arrogant possibly, moron certainly not. I'd guess the point about institutional memory kind of missed you. |
| Sun 23 Nov | Fairlight |
A lot of people are arrogant if your definition of arrongant
is knowing your subject well. |
| Sun 23 Nov | Sunday the 23 | 'Man, that guy comes off as an arrogant moron for the most part. '
So YOU'RE the guy who put the Dalai Lama on that poster! |
| Sun 23 Nov | | IMO, hindsight is 20/20 - if this guy had the insight into why these projects failed (for example, at micropro) while they were in the process of failing and turned the companies around or pointed it out to management, etc - then I would give him more credit.
For example, today it's plain as day why the .com implosion occurred. Anybody with a brain can see that. But how many startup companies realized (at the height of the .com boom) that they would have to figure out a way to be profitable in a short order or close its doors? There may have been a few, and those companies are most likely still in business. Does that make me an expert or really intelligent? No.
In conclusion, it's not hard to look back in time and point out other people's mistakes. It's a completely different thing to realize the mistakes in 'real-time' and try to change them. If this guy was so insightful, he might be the CEO of MicroPro today for saving the company 20 years ago and it's flagship product WordStar XP would be kicking Word's ass. ;-) |
| Sun 23 Nov | Simon Lucy | I remember the Micropro debacle and as an OEM we told them it was an impossible situation that Wordstar 2000 couldn't use the huge printer database that Wordstar had.
But as was said in the presentation, internally Micropro had a complete war between those that had developed Wordstar 3 and Wordstar 2000. Nothing anybody said made the slightest difference to them.
At the same time I was porting Microsoft Word, which had fewer features and was much harder to port than WS and it was around that time that it started to make inroads into the market. |
| Sun 23 Nov | Fairlight |
Simon Lucy :
Have you worked with Richard Brodie and Charles Simonyi ? |
| Sun 23 Nov | Saturday the 22nd | 'if this guy had the insight into why these projects failed (for example, at micropro) while they were in the process of failing and turned the companies around or pointed it out to management, '
Might help if you read the book. |
|
| VB.Net Code Help in logging user activity. | Sat 22 Nov | JD |
| Hi All,
I am trying to make application similar to Worktime.
http://www.nestersoft.com/worktime/
[No no, I am not trying to create a competing product but I want to create a simple application for my personal use + learn more of .NET]
Now, requirement is that this tool should capture the time user has spent on particular application. I looked in to Process class under System.Diagnostics namespace but it can tell me which processes are running, does it have window title etc. But I coudlnt find property which indicates that this process is currently receiving user input/focuc.
Is there any object which gives me details about the application which user is interacting with? Also get event indicating that user has started using another application??
Any links/resources/sample code will be really helpful.
JD
http://jdk.phpkid.org |
| Sat 22 Nov | | Only one window at a time can receive focus. So check which application is active, as that is the window receiving focus.
Then time it. |
| Sat 22 Nov | JD | And that is what I want to know. How do I know which application is 'active'?
Let me relook at process class properties/methods.
JD
http://jdk.phpkid.org |
| Sun 23 Nov | JD | It's hard for me to believe that no one here as any pointers/suggestions to offer??
Guys, please help me!!!!!!
JD |
| Sun 23 Nov | Christopher Wells | How about the Windows API function called "GetForegroundWindow". |
| Sun 23 Nov | JD | Yep,
I just found it before I could check the this forum again!
I will re-state that my aim is to find how much time user has spent on each of the window he has opened.
I am using timer control with interval of 1 second.
I am capturing foreground window and checking if I already have that 'Window Title' in my list. If yes, then I add one second to the time spent for that particular window.
Here's how I have done as of now.
Declare Function GetActiveWindow Lib 'user32.dll' () As Integer
Declare Function GetWindowText Lib 'user32.dll' Alias 'GetWindowTextA' (ByVal hwnd As Integer, ByVal lpString As System.Text.StringBuilder, ByVal cch As Integer) As Integer
Declare Function GetWindowTextLength Lib 'user32.dll' Alias 'GetWindowTextLengthA' (ByVal hwnd As Integer) As Integer
Declare Function GetForegroundWindow Lib 'user32' () As Integer
Private Sub tmrPoll_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrPoll.Tick
Dim hwnd As Integer = GetForegroundWindow
Dim sBuild As New System.Text.StringBuilder(GetWindowTextLength(hwnd) + 1)
GetWindowText(hwnd, sBuild, sBuild.Capacity)
Dim iSeconds As Integer
If htApps.ContainsKey(sBuild.ToString()) Then
htApps.Item(sBuild.ToString) = htApps.Item(sBuild.ToString) + 1
Else
htApps.Add(sBuild.ToString(), 0)
End If
End Sub
Have I picked up the correct way OR you think that same thing can be achieved in much better way?
Kindly share your views,
Thanks,
JD |
|
| GUI design (Linux) | Fri 21 Nov | Alice |
| I have been thinking about how to design a GUI for Linux. I know youre all microsoft people so you probably dont care, but this is what I thought:
Why not have multiple modes for the GUI, depending on the different types of user?
1. a mode for people who only ever use their computer for word processing.
2. a mode for people who only ever use their computer to play games
3. a mode for people who only ever use their computer to surf the net and send email and chat etc...
4. a mode for computer programmers
5. a mode for system administrators
6. a mode for graphic artists
7. a mode for musicians
8. a mode for business people
etc...
So the layout of the desktop and what features are available depends on what mode youre in. Then you make your imaginary characters and get designing. Things irrelevent to your purpose are invisible so that theyre not distracting.
Of course there should ALWAYS be abuser mode. IE the shell (or X with 4 x-terms running on on of the virtual desktops, and documentation open on the other 3) |
| Sat 22 Nov | Damian | OK
I am a musician as well as a programmer that runs a business and also does some system administration.
What mode should I use ? |
| Sat 22 Nov | HeWhoMustBeConfused | The best place to start designing a GUI for Linux is to get rid of X!
That steaming pile of crap is the biggest impediment to the development and acceptance of the Linux desktop. |
| Sat 22 Nov | Chris Hoess | Mmmmph. I think this idea is likely to crash and burn for the same reason as 'novice' vs 'expert' user interfaces; see http://www.definedesign.org/article.php?op=Print&sid=120 and note particularly that 'we are not novices or experts with regard to whole systems or applications, but go through the learning and automatic phases more or less independently with regard to each feature or set of similar features.'
I believe the same is likely to apply with regards to the 'modes' you've put forth here; people may have one mode that's their primary mode of use, but they want to be able to painlessly do many other things as well. (See also eMachines, demise of, for an attempt to attract users who 'only use the computer for email'.) |
| Sat 22 Nov | hoser | Sounds like a job for Microsoft Bob. |
| Sat 22 Nov | Ron E. | Sounds like 'Perspectives' in Eclipse/WSAD. |
| Sat 22 Nov | Eric Debois | I think this is the completely wrong approach from a usabillity perspective.
The desing should be simplified, not specialized. Often, I think, the things that annoy the pro and confuses the noob are one and the same.
Boil things down to core functionality and the noob will have a sporting chance to actually learn and understand how it works. The pro will appreciate the lack of fluff and bloat.
my 2c |
| Sat 22 Nov | Cowboy Coder | I think the problem is the limited scope that you are suggesting that users desire. For example:
'1. a mode for people who only ever use their computer for word processing.'
Do you remember when the typewriter market was falling off but before the widespread adoption of PC's? There were word processors on the market that did just that -- gussied-up typewriters, really. When PC's became affordable for businesses and the mass market, word processors went the way of the typewriter. You one will want to spend $100's on a fancy typewriter. |
| Sat 22 Nov | Stephen Jones | But how often do we actually see the desktop nowadays.
When I upgraded to W95 I thought it really great to be able to have all these icons to click on the desktop, but with the increase in hardware specs I now find I've always got a slurry of programs open, and scarcely ever see the bare desktop.
The big problem you have with the Linux GUI is basically that you have a whole pack of cards tottering there. You've got the shell, and then the X Window manager on top of the shell, and then KDE or GNOME and then the application. Compare that to NT/2K/XP where the video driver has ring 0 access.
Anyway Linux desktops are skinnable, and you can have four different ones running tabbed at present. The complaints are much more to do with unresponsiveness, unreliablity and difficulty to code for. |
| Sat 22 Nov | Blizbee | 'The best place to start designing a GUI for Linux is to get rid of X!
That steaming pile of crap is the biggest impediment to the development and acceptance of the Linux desktop.'
So true. It bears all of you reading it again.
..and again |
| Sat 22 Nov | Chris Andrews | If you want your video driver to be in ring 0, you can have that on Linux too - Nvidia's X support runs in-kernel; probably others do too.
Thing is though, as soon as you introduce third-party code to the kernel, you're asking for trouble - and it doesn't matter if it's Linux, Windows or the Mac. The only proper crashes I've had on OSX have been while running random extra kernel code, and my experiences on Linux and Windows are similar.
It's a shame that current systems don't make more use of the various levels of privilege available, so less-trusted drivers could be isolated. |
| Sat 22 Nov | Alex | 'The best place to start designing a GUI for Linux is to get rid of X!'
And why is this, and what do you think is going to replace it? Seriously, why do you think X is so useless? BTW don't bring up the network overhead troll, that's not true, when running on the same machine the client and server don't use network sockets to communicate. |
| Sat 22 Nov | Marx | I've heard there is a great alternative to Linux, it's called UNIX, anyone heard of it? |
| Sat 22 Nov | Tim Sullivan | > what do you think is going to replace it?
Apple did a pretty good job of replacing it in Mac OS X. I suspect that was key to making the OS usable with a GUI.
As for why it sucks, there is a whole chapter about it in chapter 7 of the Unix Hater's Handbook: http://research.microsoft.com/~daniel/unix-haters.html |
| Sat 22 Nov | hoser | 'BTW don't bring up the network overhead troll, that's not true,...'
When the X server is on the same machine as the X client, the 'unix sockets' are used in place of TCP sockets. There is a performance improvement of about 2:1 over TCP, but still slow. (Unix or local sockets are like a named pipe, with a better interface).
This thread is so filled with inaccurate and false statements, its not even worth unwinding. |
| Sat 22 Nov | . | Alice, go do that development (of the multiple UI's) and get back to us when you're finished and have put Microsoft in its place. Thanks. |
| Sat 22 Nov | Alex | As has been said many many times before, the network transparency does not affect the local transport. The X team amongst others have done tests (you know, where you measure things), and the implementation (using unix sockets, which are massively efficient data-transports, and shared-memory (no transport at all)) is as fast as you can get. It's within the theoretical margin of error of the peak performance of the system. Nothing goes faster.
I can't say this any simpler. X is massively efficient on the local channel. Direct-X on the PC is a different name for the same thing - an API into the low-level drivers.
You might argue that the low-level drivers are in need of optimisation, and I might agree in some cases, but that would still be the case for any new system. X itself is pretty bloody good at getting the maximum performance out of any hardware you throw at it - try running the 2-D blit in X11perf, then multiply the area * bitdepth * fps, divide by your AGP bandwidth and read the number you get .... You'll be surprised if you're running nvidia or ATI cards. Even venerable matrox cards push the bandwidth limit ... |
| Sat 22 Nov | DanG | Alex did you cut and paste that from slashdot? Or were you the author of the exact some post on slashdot? |
| Sat 22 Nov | Li-fan Chen | Stanford's Life Stream is at one extreme of personalization. Where the navigational system will probably make the life behind you (yesterday, day before, etc) and the project you deal with populate the day ahead. You'll have threads that are very personalized to you that exist throughout time and you can just fast forward and rewind. On the other hand you can have a gui everyone must use like Mac Desktop. Some how the designers of the future will probably settle on something in the middle. |
| Sun 23 Nov | hoser | Alex,
Indeed you may be correct. I'll take a look into it. Though, I have benchmarked X versus linux framebuffer, and X compares very poorly for the exact same operations. The framebuffer operations are nearly 2x faster (2D operations).
But, as it is, I have some experience with X driver development (for a proprietary chip set), and I'll have a chance to do some measurements of my own in the near future. |
| Sun 23 Nov | Alice | Wow! I'm suprised that 19 people replied to my post in only a day.
Firstly. People DO spend riddiculous amounts of money on glorified type writters. Most of the people I know who use computers ONLY use them for word processing and email. Even websurfing is relatively rare.
Secondly, there should be an easy and obvious way to change modes, so if you are a business man and a musician then you can switch between the two modes. How often do you *really* compose music and do stock market forcasts at the same time?
Linux is already multi-everything so you could always have musician mode running on one virtual X terminal and business mode running on another one. |
| Sun 23 Nov | ajs | I have developed applications with different interfaces for different users. They actually work quite well.
One problem with software is the 'one size fits all' interface, usually described as a steaming dog turd.
One system I did had one screen for sales, another for accounts, and another for technical. (You could easily change screens if you wanted to). Each screen had slightly different info. A good example was contact info. Accounts wants to ring the person who pays the bills. Tech want the person who knows where the fuse box is. Sales wants to call someone to take them to lunch. The company needs all three contacts, but individuals don't.
It's easy to add new screens for different classes of employees.
One I'm working on now has 2 data entry screens, a dummies one and a normal one. The dummies one is for someone just off the street (temps), where you can plonk them down with the minimum of training. No weird jargon, mouse driven, etc. It's slow, but ok.
The normal screen is 100% keyboard. No point hiring a fast typist if they need to touch the mouse. Fields autotab when full. Text is autoselected. For a fast typist, to correct the previous field they hit shift-tab, and re-type it. None of this trying to correct it like in the dummies screen.
The dummies screen is also good for showing at trade shows and to the CEO. See, it's user friendly! The normal screen isn't, but that's the point. Once users get familiar with the job (not the application) they move from the dummies screen to the normal screen. |
| Sun 23 Nov | www.marktaw.com | Computers are no longer typewriters, they're massive information storage databases and communications tools. (read: you use it to get on the internet) Word processing is the least of their functions.
Instant messages, email, web browser. These are the hub of the modern day computer. The typewriter, unless you were a secretary, stayed in the closet most of the time and came out two or three times a year.
Perhaps if you want to change the UI for different sets of users, you should think of modifying the UI depending on whether or not what you're doing is online, or actually is paperwork. |
|
| .net benchamarking | Fri 21 Nov | Marx |
| Hi coders,
Im a late adopter to .net and Im astonished at how slow its execution code is.
To be fair its a great IDE and, yes, its a powerful and flexible environment to work in, but what good is that when the outputted code is so lame?
I was recently tasked with writing an analyser for IIS log files. It involves a lot of file reading of files, a bit of file writing and tons of string analysis.
I wrote it in VB6 first and was not suprised that the execution time was a bit slower than Id have liked, but it did the job. I wondered if a .net version might improve things so I rewrote it in .net - a complete rewrite - not a VB6 to .net conversion.
Shock ! it takes, on average about 10% longer than the VB6 version to crunch the data files, and thats not counting the long wait for the apps GUI to make an appearance. on my desktop
I was interested now, so I dug out my (dusty) old copy of Delphi, installed it, struggled for hours with the syntax, cos Ive forgotten most of the Delphi/Pascal I ever knew, but in the end I got it working and it is 3 to 4 times faster than the VB6; furthermore, Ive not yet looked to optimize it, and as my Delphi skills are not great I suspect there is room for improvement in there.
DEV TOOLS
VB app in VB6
.net app in .net 2003 with Framewrok 1.1
Delphi app in Delphi2 - yes, version 2 - nearly 8 years older than my version .net !
HARDWARE
Pentium 2.6 with WinXP Pro
Im interested to know if anyone has had similar experiences; there must be loads of us porting perfectly good VB6 code to work under the .net framework. Is it worth it? |
| Fri 21 Nov | Johnny Bravo | I doubt it's fair to compare Visual Basic (.Net) to Delphi. Visual Basic does not produce machine code, while Delphi does.
If you happen to understand German, there's been a comparison of C/C++, C#, Delphi and Java lately, i.e. execution time of machine code/intermediate code, using the usual IDEs and compilers, with standard tasks (object creation, recursion etc.). Interestingly C# and Java did fall back behind the other two that far, sometimes being even faster than compiled code.
For what it's worth. |
| Fri 21 Nov | Johnny Bravo | Forgot to mention it was in c't magazine. |
| Fri 21 Nov | Marx | CORRECTIONS
'...involves a lot of file reading of files...' should of course, read '...involves a lot of file reading...'
And I know how to spell 'Framework' - honest ;) |
| Fri 21 Nov | Robert Jacobson | My experience has been the complete opposite -- code runs many times faster in VB.Net than VB6. Obviously, your milage may differ depending on what your code is doing and how it's implemented.
There really isn't any objective way to measure whether Language A is faster/slower than Language B, since any test will merely show how fast that particular code runs. (I remember one lovely flamewar between C# and Java folks over which was faster for making some obscure regular expression calls, and the results were completely skewed by how the code was implemented.)
I'd be willing to bet, however, that you could get dramatic improvements by profiling your code and optimizing the most time-consuming portions.
DevPartner Community Profiler (free):
http://www.compuware.com/products/devpartner/profiler/
'Performance Optimization in Visual Basic .NET'
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vbtchperfopt.asp
'Writing High-Performance Managed Applications'
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/highperfmanagedapps.asp |
| Fri 21 Nov | Cletus | 'I was interested now, so I dug out my (dusty) old copy of Delphi, installed it, struggled for hours with the syntax, 'cos I've forgotten most of the Delphi/Pascal I ever knew, but in the end I got it working and it is 3 to 4 times faster than the VB6; '
A buddy of mine had a similar experience in converting a small utility graphics application (originially created with delphi) to .NET. The .net app was 3 to 4 times slower at rendering then the previous application.
It might have something to do with the following :
The .NET Abstraction Pile
http://software.ericsink.com/Abstraction_Pile.html |
| Fri 21 Nov | Marx | Hi Johnny, I appreciate your point, and thanks for the links.
But, that does not really address what I meant, which I should make clearer.
If you accept that .net is slow to run, then what is it good for? It might be nice to dev in, I like it, but the end-users won't be impressed. |
| Fri 21 Nov | Rick Childress | Marx,
What framework classes are you using to read, write and manipulate the files? |
| Fri 21 Nov | Robert Jacobson | Cletus, the .Net Framework uses GDI+ for rendering, and the GDI+ drivers aren't hardware accelerated. Unfortunately, that means that a graphics-heavy application in VB.Net or C# for now may be more sluggish than one in another language.
http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&selm=eN32%23sBqBHA.2128%40tkmsftngp07
(Complete thread) |
| Fri 21 Nov | Cletus | 'If you accept that .net is slow to run, then what is it good for? It might be nice to dev in, I like it, but the end-users won't be impressed. '
Oh, but you can tell your customers that the application is '.NET' compliant now :) |
| Fri 21 Nov | Johnny Bravo | .Net itself is not 'slow'. What exactly do you mean?
If you mean the intermediate code produced by Visual Studio .Net's IDE, or the free SDK compilers (which is the same) which then gets executed in the CLR: actually such code is optimized beforehand or during runtime so there should really be not a bottleneck there.
I know some peps here will jump on me for this example but take a look at the Quake 3 port from C/C++ to Managed C++ in .Net. It's frame rate dropped only by 10%, so obviously it's neither the .Net Framework's libraries nor the CLR which are 'slow'.
Perhaps you could give us some more details of the application you ported. |
| Fri 21 Nov | Mitch & Murray (from downtown) | That's a Quake 2 port. The Q3 source has not been released by the Great Carmack (yet). |
| Fri 21 Nov | Marx | Rick,
I don't have the code with me, but I *think* I used the .net StreamReader. I don't think the file i/o is the bottleneck - but I've not profiled it. My gusess is it's the string analysis, I have to check for a substring many times per line, with a variable substitution for part of the string test.
Another point that might be of interest is that I'm using the ASP File System Object in the VB6 app, rather than VB's native file i/o statements and that improved the VB6 performance dramatically.
And, LOL Cletus, that is so true |
| Fri 21 Nov | Marx | Johnny wrote
>.Net itself is not 'slow'. What exactly do you mean?<
I mean that the runtime of the .net 'exe' is slower than I expected.
TYI I used Visual Studio .net
And, WOW, what a response, looks like someone (me) opened a can of whoopass - let's not have a flame now all you .net evangelists ;) |
| Fri 21 Nov | nojuan@nowhere.com | If your doing lots of string manipulation, one thing to look out for is to use StringBuilder, instead of String. Everytime you do anything with a string a new one gets allocated which can result in a huge number of objects being created. |
| Fri 21 Nov | Johnny Bravo | Marx,
it might be viable to examine your code for possible replacement opportunities of intuitive string operations with regular expressions. Depending on the task at hand that might give you another performance boost as regexes can be compiled for faster repeated execution, and are lighter on execution overhead than general string methods. |
| Fri 21 Nov | Marx | RegEx is a thought I don't know it would be faster than the InStr/IndexOf functions I'm using now, but all things being equal I could also use the RegEx functions in the VB6 app, I'm already referencing the ASP library, so I'd guess that any improvements would go across the board and apply equally to the .net and VB6 performance equally. |
| Fri 21 Nov | Guy Incognito | It would be interesting to see your code (and a sample data file). It's very possible your doing something that could be optimized. Profiling it first is an important step though, otherwise your taking shots in the dark. |
| Fri 21 Nov | Dennis Forbes | Note that from what I've heard about the Quake 2 ".net port", it primarily consisted of a huge swath of unmanaged code with a small subsection of managed code, though someone really got their 15 minutes for that. |
| Fri 21 Nov | Dennis Forbes | As a sidenote, .net was never meant to be a barnburner and was really intended for the java/ASP/VB crowd where any performance is adequate (and where you can say 'Uh...it has a recompilation optimizer...' and the minions will parrot it without ever doing a single empirical benchmark set to see for themselves. The overwhelming majority of .net advocates have never done any sort of benchmark, and just take claims of greatness at face value). Having said this, early on I was working on a performance critical project that basically acted as a message processor for MSMQ. Of course a .net evangelist coworker simple _believed_ (in the religious sense) that .net would represent all that was good in the world, and it would surely be the fastest thing since sliced bread (oh, and it has 'native' access to MSMQ versus the 'bulky' COM access...you know, apart from the fact that the 'native' framework calls are simply stubs just like the COM stubs). I threw together two benchmarks, one in Delphi 5 and one in .net (C# using all best practices) and the Delphi 5 code absolutely trounced the .net code.
None of this is meant to deprecate .net: It truly is a great environment, and the functionality in the Framework is simply extraordinary (though there are still some amazing gaps, like most graph technologies). And of course comparing it to the interpreted ASP is night and day. |
| Fri 21 Nov | Clutch Cargo | Someone once told me that publishing .Net benchmarking (or benchamarking) results was a violation of the license. |
| Fri 21 Nov | Robert Jacobson | >Someone once told me that publishing .Net benchmarking (or benchamarking) results was a violation of the license.<
There's actually a clause to that effect in the Visual Studio EULA. It's completely stupid and almost certainly legally unenforceable. |
| Fri 21 Nov | Robert Jacobson | BTW, I might fall into the .Net evangelist camp, but it's silly for anyone to assert that any one language (or framework) is 'the best' for all situations.
I used to work in the printing industry, where we had the adage 'you can have it done quickly, done right and done inexpensively -- pick any two.' Picking the right language for a job is the same situation -- you can maximize ease of development, professional results (fewer bugs, better GUI, etc.) or maximum performance, but not all at the same time.
If performance is your chief criteria, like if you're developing the latest 3D game or number-crunching scientific application, of course you should use a compiled language like (unmanaged) C++. If you're developing a typical business app where you want to get a product to market quickly and as professionally as possible, where performance isn't critical, C++ isn't the best choice.
Applications running on the .Net Framework aren't going to be quite as fast as a C++ app, but are certainly within the same ballpark -- which is good enough for most needs. |
| Sat 22 Nov | Chris Nahr | Well, I did some small benchmarks of my own and found that C# 1.0 and Managed C++ were about 10-20% slower than unmanaged MS VC++ 7.0 on average, and around 50% slower in the worst case (numerical algorithms).
However, this only refers to computational performance. If you have lots of I/O going on (GUI, disk, keyboard) there won't be a noticeable difference.
Also, memory allocation is extremely fast in .NET. I haven't benchmarked it against unmanaged code but I did notice that avoiding memory allocations makes practically no performance difference in .NET. |
| Sat 22 Nov | Marx | >Someone once told me that publishing .Net benchmarking (or benchamarking) results was a violation of the license.<
Crikey, will the MS Police be paying me a visit for speaking without license?
There's some interesting stuff been postedin here, on a bit of a sidenote, I got to wondering about the Delphi compiler(s) - did Borland continue tweaking.optimizing the compiler: is an app compiled in Delphi 5 'faster' (I'll put 'faster' in quotes since it looks like I'm not allowed to say it otherwise ;)) than one compiled in Delphi2 ? |
| Sat 22 Nov | Marx | Denis wrote:
Denis I think we'd all agree that it's best to use the best tool you have for the job, allowing for the real-world considerations, for example my skills in Delphi are not great, my C is worse and my TASM/MASM non existant.
But back to VB, one of the reasons I posted was that I was amazed to see slow old VB out-performing the all new .net
I accept all the points made re profiling and optimization, perhaps .net's string builder would boost the .net app, and perhaps I've not used the best methods available under .net, but what I have ended up with is a near equivilance of code between the VB6 and .net apps with each using their 'native' functions - excepting that the VB6 app uses the ASP File System Object (which proved faster than VB's native file handlers). And, as I said slow old VB6 out-performed .net and Delphi2 a 7 year old tool out-performed both by upto 4 times. |
| Sat 22 Nov | Robert Jacobson | Marx, your experience is very, very atypical. Every benchmark I've seen, coupled with my own experience, shows that VB.Net is usually many times faster than VB6.
The bottleneck is probably with your code. If you optimize it you will see different results. Simply complaining that 'my unoptimized code is slow' is a tautology. |
| Sat 22 Nov | Robert Jacobson | Also, you can't compare "identical" code between VB6 and VB.Net. The danger of VB.Net is that it looks very similar to VB6, but is actually a completely different language -- and has to be opmized diferently. You can't make an "apples to apples" comparison If you would just show us your code, we could probably identify the bottlenecks very quickly. |
| Sat 22 Nov | Marx | Rob, fuck the science
Let's get real world - how do I make a SLOW .Net app beat a 7 yr old Delphi app ? |
| Sat 22 Nov | Marx | Do tell me, I'd like to hear |
| Sat 22 Nov | Gwyn | I switched to VB.NET last year and did some benchmarking on varioius small units of code. I did some particular investigation into the performance of VB Collections as opposed to arraylists and hashtables to determine whether my 'super collection' class (one where the keys can be retrieved for example plus lots of other goodies) which actually uses an arraylist and a hashtable would be feasible or not...
I found .NET blistering fast. It was about 10 times faster than VB in the collection testing and in all other aspects in my client server development it's been all I expected and more. |
| Sat 22 Nov | Cletus | ' did Borland continue tweaking.optimizing the compiler: is an app compiled in Delphi 5 'faster' (I'll put 'faster' in quotes since it looks like I'm not allowed to say it otherwise ;)) than one compiled in Delphi2 ?'
Marx,
Your best bet to get an answer for your question would be to post your question on the Borland Newsgroups. There are a lot of knowledgeable people on the newsgroups who could answer your question specifically. |
| Sat 22 Nov | Robert Jacobson | Marx, your original question was 'why is my VB.Net app slower than my VB6 app.' Several people (including me) have given you pointers about how to optimize your code, and have even offered to look at your code to find the performance bottlenecks. Instead, you just keep complaining about VB.Net's supposedly poor performance while stubbornly refusing to do any to improve the your code's performance.
If you genuinely want help, email the code to me or post it online someplace. Otherwise please drop the subject -- you asked for our help, we offered it, and you ignored it. |
| Sun 23 Nov | Guy Incognito | If your looking for an in-depth benchmarking essay that compares C#, Java, and C++ (various compilers), check out this free download from Windows Developer magazine (free registration unfortunately required):
Does C# Measure Up:
http://www.wd-mag.com/wdn/webextra/2003/0313/ |
| Sun 23 Nov | Guy Incognito | Marx,
In Delphi 2, are you using an 8 bit ANSI character string (Char or ANSIChar) or a 16 bit Unicode character string (WideChar)?
Since you admit that your code is doing a lot of string parsing/manipulation, the differences in how strings are treated (allocated/referenced) between runtimes (managed/unmanaged) is going to play a significant role in the speed of each implementation. |
|
| GetEnvironmentVariable API Call Broken in WinXP? | Fri 21 Nov | Norrick |
| I know, I know, this is not a tech support orum. But there are so many sharp coders here, I figure this is worth a try.
I have inherited an application that uses the GetEnvironmentVariable API to identify a machine for purposes of authenticating that a certain application can be accessed from that machine. For those unfamiliar, heres the code that makes this call:
***START***
Declare Function GetEnvironmentVariable Lib kernel32 Alias GetEnvironmentVariableA (ByVal lpName As String, ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Function GetClientName() As String
Dim strBuffer As String
Dim iLenBuffer As Integer
Dim retval As Integer
On Error GoTo Err_GetClientName
strBuffer = Space(255)
iLenBuffer = 255
retval = GetEnvironmentVariable(CLIENTNAME, strBuffer, iLenBuffer)
If Len(Trim(strBuffer)) <> 0 Then
strBuffer = Left(strBuffer, Len(Trim(strBuffer)) - 1)
Else
probably no client name
strBuffer =
End If
Exit_GetClientName:
Exit Function
Err_GetClientName:
MsgBox Err.Description, , Error in Function modUtil.GetClientName
Resume Exit_GetClientName
Resume 0 .FOR TROUBLESHOOTING
End Function
***END***
In Windows98, the following entry must be made in AutoExec.bat before making the API call:
SET CLIENTNAME=FOOBAR
When you make the API call, bam! The string FOOBAR is returned.
On an XP machine, the code runs and bam! An empty string is returned.
OK, I think to myself. XP doesnt really use AutoExec.bat, it uses AutoExec.NT. Ill set the ClientName in that file instead! But that doesnt work either.
I notice that on XP, every so often the call will return the string Console. Aha! I said. On XP this API call is looking in the registry, not in a .bat file. SO I searched the registry for every place where the string Console existed, and one by one replaced them with FOOBAR and re-ran the code. I still got nothing.
Ten I wet to Control Panel > System > Advanced > Environment Variables and added a system variable named CLIENTNAME with a value of FOOBAR.
That did not work either, and now I am out of ideas.
Is there anyone who owns the API to the degree that they can tell me where exactly GetEnvironmentVariable is looking to get the value it returns? I am well and truly stumped. |
| Fri 21 Nov | Rob Warner | Did you reboot after adding the environment variable to the control panel? |
| Fri 21 Nov | Philip Dickerson | This particular section of code is incorrect, although I don't know if it's causing the specific issue that you are seeing:
retval = GetEnvironmentVariable('CLIENTNAME', strBuffer, iLenBuffer)
If Len(Trim(strBuffer)) <> 0 Then
strBuffer = Left(strBuffer, Len(Trim(strBuffer)) - 1)
The GetEnvironmentVariable method, like many API calls, returns 0 for an error, or a non-zero buffer length if it succeeds (note that the buffer length returned by the API may be larger than the length of the buffer passed in, meaning that the buffer is not large enough).
The code above should be similar to:
retval = GetEnvironmentVariable('CLIENTNAME', strBuffer, iLenBuffer)
If retval <> 0 Then
strBuffer = Left(strBuffer, retval) ' NOTE: this may need to be 'retval - 1' if the return value buffer length includes the trailing null terminator character
Else
' no CLIENTNAME found, should also check LastDllError and see if it's equal to ERROR_ENVVAR_NOT_FOUND. |
| Fri 21 Nov | Philip Dickerson | If you really want the actual client machine name, you may want to use one of the API methods GetComputerName or GetComputerNameEx. This retrieves the NetBIOS name or DNS name of the computer, and does not depend on any environment variables. |
| Fri 21 Nov | GuyIncognito | 2 suggestions:
1) Return a value from the function by assigning a value to GetClientName:
GetClientName = strBuffer
2) Try to query a known environment variable such as 'TEMP'. |
| Fri 21 Nov | GuyIncognito | I agree with Dickerson, but the %CLIENTNAME% environment variable should return a similar value. I'd tend to go with Dickerson's suggestion though because it is heavily documented whereas the list of valid Windows enviromental variables doesn't seem to be. |
| Fri 21 Nov | Chris Tavares | Oh, by the way, you do NOT need to reboot an NT class machine (NT, 2000, XP) just to set an environment variable, like you did under Win9x. |
| Fri 21 Nov | Insert half smiley here. | GetEnvironmentVariable gets its information from the environment variables :)
Did you restart the IDE after changing the environment variable?
(The IDE won't get the updated environment until you run it; your program runs as a child of the IDE, and children inherit the environment of their parent.) |
| Fri 21 Nov | Norrick | Dickerson wins...IF his code will return the computer name of a machine accessgin the app via Remote Desktop Connection.
Since this is an inherited app and there was no documentation, I've talked to everyone who had a hand in the project - nobody knows why the original developer did it this way. And the original developer is nowhere to be found. |
| Fri 21 Nov | Norrick | '1) Return a value from the function by assigning a value to GetClientName:
GetClientName = strBuffer'
The function does do that, but I accidentally clipped it out when I pasted it in here and tried to format it nicely. My bad. |
| Fri 21 Nov | christopher baus (www.baus.net) | Chris is right. Don't reboot. Microsoft finally got environment variables right in Windows 2000. You don't even need to restart explorer anymore!! Hip, Hip hooray! |
| Sun 23 Nov | Simon Lucy | At a guess it was done that way in the first place to work in multiple environments, DOS, Novell networks, Lan Manager, etc, etc.
From, umm NT I think, onwards environment variables became case sensitive, though some early shells capitalised them on input. Is the casing the same?
The original environment was a pointer to a list of null terminated strings you had to navigate yourself (DOS programming was such fun), but the API call should abstract you away from that. |
| Sun 23 Nov | Simon Lucy | Oh, I should read more carefully.
Autoexec.nt only gets run at the beginning of a console session, its not run on startup. If you want to set an environment string on startup then you need to jimmy a small app that's referenced in the Registry.
Or, if its a constant for that machine then you can set the environment string using Control Panel/System. This can be either for the whole machine or just the current user. |
| Sun 23 Nov | Mike Treit | 'From, umm NT I think, onwards environment variables became case sensitive...'
That's not true - environment variables in NT are not case sensitive. Most enviornment variables are stored in the registry, which is case-insensitive...if you try to create a new environment variable with a different case than an existing one, it simply overwrites the existing variable. |
|
| IT is being moved to the 5th Floor | Fri 21 Nov | matt |
| Ive just recieved word that our department is to be moved from our dimly-lit tech enclave of engineering, tech support, and QA, to the blarinlgy lit, noisy 5th floor, shared by accounting, marketing, and suits of all sizes and colors and shapes.
I must admit this is making me a bit unhappy. I avoid going down there whenever possible. I just took this job a few months back, and a part of my decision was based on the work environment- one which is radically changing.
What to do? |
| Fri 21 Nov | It's all about you |
While I feel your pain, at some level, these 'woe is me' posts are getting a bit tiresome.
I would have thought your choices were clear: quit, suck it up, or get involved and try to build the environment you think is best for the group.
Note that whining about it on a technical web board isn't among the choices. |
| Fri 21 Nov | matt | Forgive me. Whining was not my intention, rather to start a conversation of working conditions and arbitrary changes to them. I see now that I am petulant and a whiner. Thanks for your help. |
| Fri 21 Nov | It's all about you | Now you're whining, sarcastically. |
| Fri 21 Nov | tapiwa | Man must cease attributing his problems to his environment, and learn again to exercise his will -- his personal responsibility.
-- Albert Schweitzer
A strong, successful man is not the victim of his environment. He creates favorable conditions. His own inherent force and energy compel things to turn out as he desires.
-- Orison Swett Marden |
| Fri 21 Nov | It's all about ME | I'm boring, unsupportive, and argumentative! Look at me! LOOK AT ME! |
| Fri 21 Nov | Kyralessa | I can beat that.
Our university contracts with a local hospital (which used to belong to us, but is now entirely a separate entity) to run our e-mail. Said hospital is switching to a new e-mail system which, among other things, requires a SSN from each person with a mailbox. So after deliberation and consultation with the legal department, our business manager and our department head submitted all our SSNs to them. No consent from any of us; not even any notification to any of us. I only found out about it by accident.
So...how would you respond to that? |
| Fri 21 Nov | Kyralessa | No, using fake SSNs is not an option; they already tried, and this hospital's system spit them back out as invalid. |
| Fri 21 Nov | It's all about you | We used to live in a hole in the ground. Then we got tossed out and had to go live in the lake. |
| Fri 21 Nov | wtf | I've never heard of such an email system. Who makes it? And what do hospitals know about running email, anyway. How bizarre. |
| Fri 21 Nov | tapiwa | WTF... I hear you... What the fcuk??
So this email is only for use by americans huh? Rest of the world does not do SSNs!! |
| Fri 21 Nov | Nate Silva | They gave your SSN to some random e-mail admin without your permission?! |
| Fri 21 Nov | www.marktaw.com | University students are now being identified by their SSN and it's printed on their ID card. Lose your ID card and someone has your name and SSN.
Actually, I think this was a big news item a few years ago. |
| Fri 21 Nov | Chris Tavares | At least in Connecticut there's a state law requiring that organizations CANNOT use your SSN in a way that can be traced back to you. Drove the University of Connecticut nuts for a while.
Considering it's a hospital you're dealing with, I wonder if you could sue under HIPAA? |
| Fri 21 Nov | John C. | What a strange design decision. There are lots of Americans who do not have SSNs, as I learned to my dismay when implementing a medical billing system many years back. Plus lots of resident non-citizens without work authorization, such as students. |
| Fri 21 Nov | www.marktaw.com | 'Making a 9-digit number up at random is a bad idea, as it may coincide with someone's real number and cause them some amount of grief. It's better to use a number like 078-05-1120, which was printed on 'sample' cards inserted in thousands of new wallets sold in the 40's and 50's. It's been used so widely that both the IRS and SSA recognize it immediately as bogus, while most clerks haven't heard of it. There were at least 40 different people in the Selective Service database at one point who gave this number as their SSN. The Social Security Administration recommends that people showing Social Security cards in advertisements use numbers in the range 987-65-4320 through 987-65-4329.'
It's scary, when I was trying to find this information on Google, ALL of the ads were how to a) find someone through their SSN or b) find someone's SSN. |
| Fri 21 Nov | Lou | It is possible that the Hospital is using the SSN to uniquely identify the recipient of the email for HIPAA reasons. As for being able to sue under HIPAA, they would have to disclose your SSN to someone outside of the organization for it to be a problem. There may be a valid reason for these HIPAA partners to be doing this (though I can see the cause for concern).
And do note that federal regulations coming down next year will require SSN to stop being used as an identification mechanism. It is causing quite a headache. |
| Fri 21 Nov | pdq | There is some logic to the format of SSNs. The first three digits depend on the state. |
| Fri 21 Nov | Oh my | Kyralessa, tell the ACLU. |
| Fri 21 Nov | mb | not the ACLU. Just ask the legal department if they now assume all liability for identity theft, since they gave out your identifying information without asking. |
| Fri 21 Nov | Oh my | Matt, I was once in a situation such as you describe. After we moved, it was almost impossible to do the thinking work we needed to do because of the raucous noise and backslapping that used to on around us.
One day I was trying to work something out while a bunch of business guys and managers were standing nearby waiting to enter a meeting room, yacking on and on, and I walked over to them and told them to shut up. They did.
Until then, they had thought we were quiet because we were so impressed with their exciting lives.
Our work involved mathematical financial software for trading. |
| Fri 21 Nov | no name | "All about you", you're lucky, at least you've got a lake. |
| Fri 21 Nov | Kyralessa | Currently I'm working on obtaining, from our university legal department, a written justification of why they advised our staff that it was perfectly OK to disclose all these SSNs without any consent or notification. I expect to know more on Monday.
(Note that the hospital to whom the SSNs were disclosed is a separate business from us. But I don't think this falls under HIPAA because the numbers were disclosed TO the hospital FROM the university. I haven't ruled HIPAA out yet. But I suspect that, like the ADA, it's only enforceable by private or public lawsuit; anybody know?)
And meanwhile I am updating my resume. |
| Fri 21 Nov | Darcy Horrocks | >I'm boring, unsupportive, and argumentative! Look at me! LOOK AT ME!
true irony relies on _contrast_
repetitive bleating of brittle snoidisms exponentially degrades the humour
> It's all about ME
quite |
| Fri 21 Nov | Matt Latourette | 'Note that the hospital to whom the SSNs were disclosed is a separate business from us. But I don't think this falls under HIPAA because the numbers were disclosed TO the hospital FROM the university. I haven't ruled HIPAA out yet.'
You can go ahead and rule HIPAA out. It doesn't apply here. The university did not acquire your SSN by providing health care to you. Your SSN is not Protected Health Information in this context and the information disclosure is not governed by HIPAA.
I am not a lawyer. This is not legal advice. |
| Fri 21 Nov | Mr. Fancypants | Burn down the building -- but don't forget to take your red swingline stapler with you before you go. |
| Sat 22 Nov | Bill K Ramsey | Some here seem to consider this frivolous. I went through this exact same thing with my current employer. When I started, the MIS department was on the 3rd floor. We had a cluster of offices to ourselves, which tended to make the 'group consciousness' (yes, I see you back there rolling your eyes) more cohesive.
After my first year we were moved to the 4th floor (with analysts, marketing/sales,etc). It **completely** changed everything.
Physical location *does* make a difference. No, I didn't quit. I like the company and the job. But it did change things substantially. |
| Sat 22 Nov | Katie Lucas | I used to work in environments where people would have noisy group meetings nearby. I started, eventually, joining in. Of course along the way I'd have to get them starting to explain all the background to the meeting...
People do get the message after a while... |
| Sat 22 Nov | realist | I've really gotten over the whole work enviroment issue, I once wrote a consignment system for a trucking company where the IT team were housed in the truck weighing station. Every ten minutes a 40 ton (ton not tonne) truck would roll onto the scales and our screens and chairs would rattle while the weighing was done, not to mention the roar of noisy 8-10 litre diesel engines as it roared off.
Impossible to work in, No. Difficult, Yes.
After working for 8 months (team of 3) on this software the week we finished UAT the company got sold and our software ended up gathering dust on a CD softwhere in somebodies top draw.
Maybe this is what happens to companies that put developers in a truck weighing station! |
| Sun 23 Nov | Dennis Atkins | Realist,
How complex was the software that took 24 man-months to write in the weigh-station? Do you think they would have saved money r |