last updated:06 Aug 2003 15:11 UK time
|
 |
|
(Comments added for week ending Sun 26 Jan 2003) | View Other Weeks
|
|
| Can I make money writing shareware? | Sun 26 Jan | programmer |
| There is an interesting article over at OReilly on software strategy.
http://www.macdevcenter.com/pub/a/mac/2003/01/24/dev_osx.html
Is writing shareware for a living a viable option? Should I make use of open-source in my products?
There are more and more free tools out there, biting into the commercial market, can shareware authors survive without the resources that commercial software vendors have? |
| Sun 26 Jan | not my regular made up name | Not unless you have specialized knowledge. The market is flooded with shareware or freeware in all of the 'popular' categories (mp3 players, ftp clients, ...). Your only hope is that you have some sort of specialized knowledge (hyrdrodynamics, tax regulations, ...). But in that case, you should think about a full fledged commercial product instead of shareware. |
| Sun 26 Jan | programmer | Yes. I agree with you.
The article highlights how the rise of open source can be a good thing for your commercial business. Think Apple OS X! It also raises the question of whether you should or should not open source your code. Look at Real.com.
Most commercial offerings have more polish than their OSS counterparts (Photoshop vs Gimp), but for smaller utils, which has for a long time been the domain of shareware authors, it's quite easy for people to take OSS code and polish it up. I'm thinking of things like you mentioned, FTP tools, text editors, mp3 tag editors, etc. Is there still a market for this kind of software when so much of it is available for free?
Is the platform important too? Mac and Windows platforms have a lot of shareware - but for Linux, well, there is virtually no shareware in existence.
Joel, do you think Fog Creek could have worked as shareware? Could it have worked based off an OSS core? Will there come a point, when competition is fierce, when you decide to open source parts of your code? |
| Sun 26 Jan | Gregg Tavares | I tried the shareware thing once http://greggman.com/thumbs. I didn't try to do it for a living, just for fun and the see what it was like. What I found was I'm a programmer and to be succesful you need to spend more than 1/2 your time doing non-programmer stuff. Writing docs, making a webpage, putting up a support forum, answering users questions, getting your software on the sites, trying to get it noticed, advertising, etc.
Some small things you probably don't know
download.com wants $3K a month to push your title to the top of the search results list.
tucows.com will not list your product if it's not already successful
tucows.com requires you to have a webpage with customers service and a support forum to list your product.
My point is, I think most programmers first getting into shareware thing they'll just write the software and it will be done and the cash will roll in. That's not usually the case. Unless you have the total unfulfilled niche product your software has to be as good as commerical software including all the support, docs, site, customer service, etc. That effort basically requires an effort similar to running a real software company.
If you are willing to do that you chances of success are probably about the same as starting your own company. |
| Sun 26 Jan | | Gregg,
That 'hand' on your web page is real freaky! :) |
|
| MySQL Adds Subselects | Sun 26 Jan | Matthew Lock |
| Finally it took like 5 years....
MySQL Version 4.1 includes support for SQL subselects, also called subqueries or nested queries, a powerful feature that lets users search complex data with ease and efficiency. With subselects, users can achieve query consolidation by nesting one query inside another query, creating a resource otherwise unavailable for searching in a single statement. Subselects allow users to query within a result set, creatively limit the result set or correlate results with an otherwise unrelated query in a single call to the database.
http://www.mysql.com/press/release_2003_05.html |
| Sun 26 Jan | Will Glass-Husain | It's supposed to be significantly faster too, due to built-in caching of results for similar SQL queries.
eWeek magazine did an elaborate benchmark study last year with mySql (pre-production version 4) vs Oracle vs MS Sql Server. Oracle and MySql were neck and neck.
http://www.eweek.com/article2/0,3959,293,00.asp |
|
| EFS Data Recovery | Sun 26 Jan | somebody |
| Recovering data from EFS is easy as long as you backup your certificates. Run certmgr.msc and youll be able to export and import certificates. Export your user certificate to some sort of safe external storage. When you move to a new system, import this certificate and youll be able to access the encrypted files.
I did a quick search and found this article that seems to have some good info:
http://www.compulink.co.uk/~davedorn/computing/windows/xpencrypt1.htm |
| Sun 26 Jan | Joel Spolsky | I appreciate the thought but the only way I can follow those instructions is to go backwards in time :) |
| Sun 26 Jan | somebody | That's why I said 'as long as you backup your certificates' : ) Hopefully you'll find this information useful in the future. At the very least, others who use EFS who read this will learn to backup their certificates. |
| Sun 26 Jan | Stephen Jones | Were you logged on to the domain when you set up the EFS files. If you were the recovery agent would be the domain administrator, so you could log on as domain administrator and recover the files that way. |
| Sun 26 Jan | crusty admin | One should not blindly use features of an OS without an understanding of what they do. Unfortunately, with EFS this is a hard lesson learned almost daily at microsoft.public.security |
|
| diplomacy | Sun 26 Jan | PC |
| Im currently reading How to Win Friends and Influence People, by Dale Carnegie, having seen it recommended on this forum.
Ive read lots of self-help books but had overlooked this one, maybe because of something about the title. But it seems to me, so far, that this book is more profound and helpful than many others, since it highlights a small number of fundamental facts about human nature.
The central facts of human nature are, more or less: each of us deeply desires attention and appreciation; each of us pays far more attention to our own selves than we do to others; we all strive to see ourselves as kind, considerate, intelligent, trustworthy, etc., and will defend that image with all our strength, however inaccurate it may be.
The trick to getting along with others, and having a more pleasant and successful life, is to refrain from attacking other peoples egos and refraining from defending your own. This must be extremely hard at times, because it goes against our basic instincts and emotions. For example, even if you are absolutely sure you are right, you have to admit that you may be wrong. Emotion and instinct, not logic, are the keys to human relations.
Im not saying I never heard of or thought of any of this before. But Im thinking about it a lot right now, and Im going to try it out and see what happens (Im having trouble getting along with certain cantankerous individuals).
Has anyone read the book and experimented with the techniques?
I usually think logic is more important than anything else. Looking back, I can see times when I might have gotten more recognition and appreciation if I had considered that logic is not enough. |
| Sun 26 Jan | Nameless In USA | Mr. Carnegie's book 'How to Stop Worrying and Start Living' has helped me out a great deal. The book you mention, 'How to Win Friends and Influence People' has also helped me to deal with people. |
| Sun 26 Jan | TK | Think of the best bosses you've had, the most pleasant aquaintances, even some folks you've met briefly at a meeting or party. When you meet with certain folks, you nearly always feel better. This probably comes naturally to a few folks, but it's something you can learn if you really want to.
My very best boss, Ed, was like that. He readily admitted to a constant study of how to get along with people and he certainly did. He could ream you a new one and make you feel great at the same time.
A good anecdote: Ed had just taken over a new postion and a new group of systems folks. Shortly, he met with another group about a contentious and long standing problem. Right after the meeting I ran into one of my friends from the other group who attended that meeting. He said, 'Ed was great, We mad more progress that we have in 2 years.' Then I talked with Ed who said, 'I was just terrible, I made everybody mad, they are going to hate me.' Ed never stopped trying. |
|
| Dell server | Sun 26 Jan | Voice of rationality |
| Joel,
What a week! I sympathize-- Ive always been in small companies and have done sysadmin work for my machine, the company servers and usually everyone elses machines for my entire programmer/ manager/ entrepreneur career. And dealing with the telcos are the worst part.
By the way, no Xeons until Jan 31? Dont believe it. I ordered a Dell Poweredge rack server (Xeon 2.4 gHz) on Jan 16 and got it on Jan 22. |
| Sun 26 Jan | Joel Spolsky | Dell must hate me. *sob* |
|
| Syntax, Idioms, and Japanease | Sun 26 Jan | Ori Berger |
| Benji raised the issue of an improved syntax for C++. I strongly disagree with the idea that code readability should be measured in some absolute terms, or by the (relatively objective) non-professional-programmer bystander.
Code should be concise, and verbosity improves clarity only for someone who is not versed. If you work on an ADA project, you very quickly develop strong dislike towards overly verbose languages. That has been my experience, and of many others, anyway. VHDL (an ADA inspired language for hardware design) is infinitely more readable to an untrained eye than Verilog (a C inspired language for hardware design[1]). At least, it seems that way initially, but soon enough you notice that without proper training, you cant make any real sense of code written in either (and it takes you much longer with VHDL to figure that out), and when you do have proper training, the readable syntax of VHDL gets in the way of expressing details concisely and clearly. It may come as a great surprise to you, but C is vastly more popular than ADA and Verilog than VHDL. While the complexities of hardware design strongly stress the need for proper training, it is not less true for pure software.
You cant escape knowing all the little details; if the source says a logical-or b rather than a || b, you still have to be aware that it short circuits, or otherwise you wont be able to read the code. Similarly, you still have to remember that a divide b behaves differently when both arguments are integers than it does if one of them is floating point -- e.g., a divide (a divide 2) will be exactly 2.0 for floating a=1.0, but a division by zero for int a=1 - and it will be approximately 2.0 for many other floating point numbers. And I dont think you would want the operators to be called a shortcircuit-logical-or b and a integer-divide b; And if you do want to call the operators that, you DO know that shortcircuit is a term that some people will require further explanation, along the lines a logical-or-that-evaluates-second-only-if-first-false b. Every programming language has its idioms, and some languages (K, Lisp) even have meta-idioms that guide the creation of new idioms. Its an inherent feature of the software world.
So you might as well spend some time and get used to the syntax. At the extreme, there are languages like APL and K which reduce program lengths 100 to 1000 fold. They look unreadable to anyone not versed in them, but once you get it (not an easy task), they are much more readable. Reading a K line may take 10 times as much, even if you are versed, but if its 1000 times shorter, dont you think the tradeoff is justified? Plus, theres much less place for bugs to hide :)
I recently read an article by a japanease fellow that mourned the decaying use of kanji. That struck me very odd, as I always thought the japanease moving to a phonetic system was making things better for them. His complaint mostly revolved around I can read kanji more than 10 times as fast as I can read the phonetic alphabet (whose name escapes me at the moment. kana, maybe?).
The philosophical debate whether increased complexity justifies the increased barrier to entry for a natural language is one I do not want to get into (at least not in this forum). However, software people are supposed to be professional (yeah, right), and are supposed to make software that works and that can be supported by a software professional. It wont ever be supported by joe user, because of bugs like divide and logical-or. So I think there is _every_ reason for kanji-like programming languages (e.g., K).
You can find a shallow introduction to K in:
[ http://www.kuro5hin.org/story/2002/11/14/22741/791 ]
A few examples of how concise (and strange looking, until you get used to it) K is, can be seen in
[ http://nsl.com/papers/papers.htm ]
And I quote, from the N queens link (a generalization of the 8-queen problem):
qn:{[n],/nq[n;w-1;w+1]w:!n}
nq:{[n;l;r;v]
:[n=#v;,v;,/{nq[n;-1+l,x;1+r,x]v,x}(!n)_dvl v,l,r]}
Would have fit in just two lines if this editbox was slightly wider. An additional line,
bd:`0:_Q(!8)=/:p
prints a solution neatly as an 8x8 board.
As for kanji examples .... sorry, I dont speak japanease :) |
| Sun 26 Jan | Frederic Faure | Japanese _is_ much much easier to read with kanji (chinese characters) because this language happens to have very few founds, and thus, filled with homophones, ie. words that sound the same, and will be written the same way if using a phonetic writing system, while there is no ambiguity when using kanji, since they represent symbols, not sounds.
Hence the (at first look) funny idea that a symbol-based writing system is easier to use than a phonetic system. |
| Sun 26 Jan | Matthew Lock | I'm a Japanese speaker and let me tell you that Kanji is hard to learn, but not as hard as you might think.
Although there are around 2000 characters to learn before you can read a newspaper the characters are not all completely different but made out of 80 sub characters (called radicals).
For example the character for 'like' is made from joining mother and child.
As for the homophones it's only a problem in theory. In practice Japanese have no trouble making their meanings clear when speaking. Only a very cryptic and silly sentence would be ambigious in speech but clear in Kanji. |
| Sun 26 Jan | Matthew Lock | I also feel very strongly that code should be concise because:
a) less typing
b) less lines means you can read more code on the screen
c) easier to remember
Compare the use of localtime in perl...:
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
Against localtime in C...
#include
struct tm * localtime( const time_t *timer );
struct tm *_localtime( const time_t *timer,
struct tm *tmbuf );
struct tm {
int tm_sec; /* seconds after the minute -- [0,61] */
int tm_min; /* minutes after the hour -- [0,59] */
int tm_hour; /* hours after midnight -- [0,23] */
int tm_mday; /* day of the month -- [1,31] */
int tm_mon; /* months since January -- [0,11] */
int tm_year; /* years since 1900 */
int tm_wday; /* days since Sunday -- [0,6] */
int tm_yday; /* days since January 1 -- [0,365]*/
int tm_isdst; /* Daylight Savings Time flag */
}; |
|
| Field Data Collection Application | Sun 26 Jan | Yaniv |
| Hi all,
I have to develop a mobile data collection application which will be deployed on handhelds and the data collected will be synced to a central database server via modem on the handheld.
I have done the similar stuff using Palm devices. But this time the field condition is very rugged and the filed people are not very computer savvy. I am afraid that the Palm wont be very durable in these conditions. I have looked online and all the rugged handhelds I could find are very expensive, like $1000 a piece. But if I use Palms, I could buy one for $100.
Has anybody here implemented a similar field data collection system? Any ideas or thoughts? Thanks for all your inputs. |
| Sun 26 Jan | JWA | Hi Yaniv,
In my former engineering consulting company we used to use handhelds for field data collection. I built a number of different systems, using a number of differnet devices. From my experience, we ended up finding that standard devices worked best, and were certainly more cost effective. They're fairly tough to begin with, barring extreme moisture.
The biggest issues that we learned were 1) Use a device with a color screen. Field technicians don't like having to deal with the ugly and sometimes hard to read mono displays. 2) Field techs by far were more productive, comfortable, and happy with WinCE/PocketPC based systems. What little computing knowledge that they have is based on their Windows desktop systems. That's how computing makes sense to them, so by and large that was what they were most comfortable with.
If the devices are going to get wet, then you need to go rugged, or at least a rugged case over a normal PDA. Otherwise I'd recommend going with the smallest, lightest PocketPC device around. The smaller and less obtrusive, the better for the techs. The new Toshiba is nice, about the size of a Palm V, but it doesn't have a modem or compact flash card slot. I understand that Compaq has a new small iPaq coming out, but I don't know the specs.
The other way to go is to standardize on one of the original iPaq models and then buy them all used or NOS from eBay or the like. It's much cheaper that way, and when one goes down, it's cheap and easy to replace.
Oh yeah, make sure that you are using a unit with a reflective screen. It makes a big difference in varying light conditions in the field. Also, we found that saving data to a compact flash card during operation was better, as a protective measure. If something does happen to the unit, it's much easier to move the card to a new machine and keep going. If it's in the unit's data store, it could be much harder and result in some lost data.
Hope that helps, let us know how it turns out.
Regards,
--Josh |
|
| Backup costs per user | Sun 26 Jan | Dirk |
| Hi,
we have currently an internal discussion about the costs for a new decent backup solution. The expectations about what such a solution should cost vary somewhat and i just wanted to get a quick overview about what other shops pay for their safety net.
We are a game developer so we have quite a lot of assets to backup. Our perforce depot is currently just that bit above 20gigs so our current tape drive is getting too small. Server backup would require around 80-90gigs, and backups with client machines would add 10-80gig per client, if we start to backup them, whats currently not done (all our assets are on the server or most probably even under revision control).
We have an exchange server running that should also be backup up and are about 20 developers, with growing tendency.
So how much money should we spend on a backup solution (hardware, software, mediums), how much should we plan for? Are there any numbers floating around such as: plan for x dollars per user? |
| Sun 26 Jan | ludoo | Hmmm it's not really an answer to your question, and I may be abit naive, but why don't you give Amanda a try before spending lots of money on a commercial solution?
If you have a smart Linux sysadmin or can get one, Amanda can centralize your Win/Linux/whatever backups at no license costs..... |
| Sun 26 Jan | Dirk | Oh, most of the costs are not the software but the hardware. One of our current solutions would be an Ultrium2 autoloader. Together with software and tapes we would top 10000€, quite a bit. But most of this sum comes from the autoloader. The software is just about 2000€ (a few hundred more or less)... |
|
| Murphy's Law | Sun 26 Jan | Stephen Jones |
| Well, at least Joels article has given us the explanation of where those 2 days went to (and here was me thinking he went on a binge around all the New York clubs!).
>>>>>>>>a few files which I let Windows encrypt for me (using EFS) are inaccessible. This has something to do with public keys and certificates. When you restore a file that was encrypted I guess you cant read it. I still havent found the solution to this. If you know how to fix this I will be forever indebted to you.<<<<<<<<<<<<<
Before you set up encrypted folders you are supposed to make a restore diskette and keep it somewhere safe. The reason I believe is that the abiltiy to open is tied to your SID on the W2000 machine, and that will obviosly be lost if you use a new profile.
Using EFS without making the restore diskette first is like having unprotected sex with the local darts board smoking a cigarette in a garage full of jerrycans of petrol. Not advisable.
I never use EFS simply because I have read too many pleas on NT forums from people who have lost all their data.
Restoring to laptops takes a lot longer than restoring to a desktop because you cant simply put in the other hard drive as a master and clone to the slave. One thing is clear though. Much of the time wasting is caused by the fact you are dealing with a laptop and you cant set up RAID with a laptop.
Now you appear to be wasting a lot of time with your backup restore. You dont tell us how large the original disk is but I would presume less than half the 60GB of the new one. The time you are spending is too much. If you were using cloning software you wouldnt need to install the OS to start with (though maybe with a laptop since getting Ghost to work in networked DOS on laptops is not too easy). And even if you did, when you later installed the Ghost image it would overwrite the other OS.
You could then simply copy over your data at normal speed. That way you shouldnt have lost much email either (I am presuming that you keep your email on the data partition and not in the default location).
I know I appear to be harping on, but the reason is that I have done these two day reinstalls, and have seen the W98 install movie more often than my favourite video. And the time that can be saved by a judicious combination of Ghost and partitioning is not to be sneezed at.
Whatever you do for your workstatiion setups you need to decide on a back up strategy for your laptops (consider making sure they all have DVD wriiters for data backup, and try and make sure that you always have a partition with a lot of free space where you can keep a clone of the C drive for a fast restore).
And think of the three way plan I suggested in another post: cloning for the OS and apps; backup for the data; specialized backup for the email server and database server. |
| Sun 26 Jan | Mitch & Murray (from downtown) | Ghost would have made the laptop drive clone project about a two hour operation, start to finish (assuming the target image was not already available - subtract one hour if it was).
Ghost costs about $65 ... probably a fraction of the fancy-schmancy PCMCIA laptop drive adapter.
No problems running Ghost on various laptops here at Mitch & Murray.
We true believers in the God of Ghost rest our case. |
Sun 26 Jan | Jan Derk |
Before you set up encrypted folders you are supposed to make a restore diskette and keep it somewhere safe. The reason I believe is that the abiltiy to open is tied to your SID on the W2000 machine, and that will obviosly be lost if you use a new profile.
To be more specific you need to export/backup your certificate. It's described pretty clearly in the Windows Help files.
To restore encrypted files the certificate that was used to encrypt the file has to be restored first. Without that all your encrypted files are toast. That is, of course, unless you have access to the NSA backdoor.
Windows should raise a big red warning (3 times) about the certificate issue before a file/folder is encrypted. |
| Sun 26 Jan | Joel Spolsky | OK, I didn't export or backup my certificate. I understand that. But I did backup my entire hard drive. So the certificate must be there somewhere, right? Where is it stored if not in a file? |
| Sun 26 Jan | Jan Derk | I'm not a Windows security expert so I shouldn't really talk about this, but sometimes I can't resist to guess ;)
Common sense says that if there was any way to recover a certificate (private key) without logging in as the certificate holder or the recovery agent, then the world would call that a major security breach.
So my guess is that the only way to retrieve you encrypted files is to make your system backup work again and login as the certificate holder or the recovery agent (default administrator on local machines).
But then again you are much better of asking this on the correct security or Microsoft newsgroups. |
| Sun 26 Jan | Brad Siemens | Drive Serial # incorporated somehow? This is one component in my Licence scheme... Just a thought! |
| Sun 26 Jan | Stephen Jones | I've seen this issue come up on W2000 forums a few times, and I suspect the answer is that you are hosed.
The problem is that the default recovery agent for a non-networked or workgroup setup is the local administrator but it is neither the name nor the password that identifies but a Security Identification Number which is created every time a user is created.
Now if you reinstall W2000 BEFORE YOU USE THE BACKUP then the local administrator will have a different SID, and it looks as if your backup is not erasing that setup (another good reason for using cloning software).
Now bear in mind that you are not allowed to encrypt your files unless you designate a recovery agent. Possibly you have simply forgotten who it is. If you are on a domain the domain administratror will be the recovery agent. Have you tried that? |
|
| a few thoughts on RAID | Sun 26 Jan | ludoo |
| Joel is right, RAID is a life-saver, but.....
- you need to backup with RAID as you did without, if you accidentally delete something important RAID does not help at all
- RAID controllers may be a pain the ass, I recently had an IBM RAID controller on Linux report two out of three disks of a RAID-5 array dead at the same time (which meant all the data was lost).....sounded pretty strange, so after a few firmware upgrades and some fiddling with the controller BIOS, we discovered the drives were not dead at all, the controller only thought so....
- software RAID is usually very reliable, and much cheaper than hardware RAID both on Windows and Linux
- you dont need RAID on desktops, just make the My Documents folder a link to a folder on your RAID-equipped server, and store everything important there and/or on network drives; a disk failure on the desktop means you only have to reinstall Windows and re-target your net drives/folders
my 2 cents, forgive my bad English Im Italian =) |
| Sun 26 Jan | Alex | Yeah, the only really bad thing about software raid is that if the first disk goes, the system won't boot without fiddling. That and if you've never done a rebuild under linux, it can be a bit awkward as opposed to the automatic rebuild of a hardware solution. I would not know for windows (NT|2000|XP) but I should stress the point that an incident needs to be simulated and the recovery procedure must be understood. |
| Sun 26 Jan | Dan Maas | Is it really possible to have a directory like C:\My Documents linked to a network drive?? I thought Windows' 'reparse points' could only link to local storage. I know several people who would be VERY VERY happy if you could create a link to non-local storage... |
|
| MSSql DDOS attack | Sun 26 Jan | Enjoy |
| ....Were pushing on Savvis, who, occassionally, push on Worldcom, who have decided that some kind of SQL Server DDOS attack can be blamed for everything, so they kind of ignore Savvis, who dont.....
Just found this at /.:
http://slashdot.org/articles/03/01/25/1245206.shtml?tid=109 |
| Sun 26 Jan | Evgeny Goldin | Following is a letter I received from my university Computer Center:
Shalom,
Some Technion servers have been affected by the virus described below.
Consequently, our FireWall has been brought down to prevent further attacks,
which is the reason for us being disconnected from the world outside the
Technion (communications inside the Technion is working). We work on resuming
this connection, and it is hoped to return to normal working mode towards the
afternoon (13:00 - 14:00).
Please find enclosed information about the SQL virus, and ways to protect
against it.
Those who haven't installed the required patch, are urged to do so ASAP!
Thanks,
Taub Computer Center
FOR IMMEDIATE PUBLIC RELEASE
-----BEGIN PGP SIGNED MESSAGE-----
CERT Advisory CA-2003-04 MS-SQL Server Worm
Original release date: January 25, 2003
Source: CERT/CC
A complete revision history can be found at the end of this file.
Systems Affected
* Microsoft SQL Server 2000
Overview
The CERT/CC has received reports of self-propagating malicious code
that exploits multiple vulnerabilities in the Resolution Service of
Microsoft SQL Server 2000. The propagation of this worm has caused
varied levels of network degradation across the Internet, in addition
to the compromise of vulnerable machines
I. Description
The worm targeting SQL Server computers is self-propagating malicious
code that most likely exploits two vulnerabilities in the Resolution
Service of Microsoft SQL Server 2000 vulnerabilities. The
vulnerability documented in VU#370308 allows the keep-alive
functionality employed by the SQL Server Resolution Service to launch
a denial of service against other hosts. Either the vulnerability
VU#399260 or VU#484891 allow for the execution of arbitrary code on
the SQL Server computer due to a buffer overflow.
VU#370308 - http://www.kb.cert.org/vuls/id/370308
VU#399260 - http://www.kb.cert.org/vuls/id/399260
VU#484891 - http://www.kb.cert.org/vuls/id/484891
Reports to the CERT/CC indicate that the high volume of 1434/udp
traffic generated between hosts infected with the worm targeting SQL
Server computers may itself lead to performance issues (including
possible denial-of-service conditions) on networks with infected
hosts.
Activity of this worm is readily identifiable on a network by the
presence of small UDP packets (we have received reports of 376-410
byte packets) from seemingly random IP addresses from across the
Internet to port 1434/udp.
II. Impact
Compromise by the worm indicates that a remote attacker can execute
arbitrary code as the local SYSTEM user on the victim system. It may
be possible for an attacker to subsequently leverage a local privilege
escalation exploit in order to gain Administrator access to the victim
system.
The high volume of 1434/udp traffic generated between hosts infected
with the worm may itself lead to performance issues on networks with
both infected and targeted, but non-vulnerable hosts.
III. Solution
Apply a patch
Administrators of all systems running Microsoft SQL Server 2000 are
encouraged to review CA-2002-22 and VU#370308 for detailed vendor
recommendations regarding installing the patch:
http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/bulletin/MS02-039.asp
CA-2002-22 - http://www.cert.org/advisories/CA-2002-22.html
VU#370308 - http://www.kb.cert.org/vuls/id/370308
Ingress/Egress filtering
The following steps are only effective in limiting the damage that can
be done by systems already infected with the worm. They provide no
protection whatsoever against the initial infection of systems. As a
result, these steps are only recommended in addition to the
preventative steps outlined above, not in lieu thereof.
Ingress filtering manages the flow of traffic as it enters a network
under your administrative control. Servers are typically the only
machines that need to accept inbound traffic from the public Internet.
In the network usage policy of many sites, external hosts are only
permitted to initiate inbound traffic to machines that provide public
services on specific ports. Thus, ingress filtering should be
performed at the border to prohibit externally initiated inbound
traffic to non-authorized services.
Egress filtering manages the flow of traffic as it leaves a network
under your administrative control. There is typically limited need for
machines providing public services to initiate outbound connections to
the Internet.
In the case of this worm, employing ingress and egress filtering can
help prevent compromised systems on your network from attacking
systems elsewhere. Blocking UDP datagrams with both source and
destination ports 1434 from entering or leaving your network reduces
the risk of external infected systems communicating with infected
hosts inside your network.
Recovering from a system compromise
If you believe a system under your administrative control has been
compromised, please follow the steps outlined in:
Steps for Recovering from a UNIX or NT System Compromise
http://www.cert.org/tech_tips/win-UNIX-system_compromise.html
Reporting
The CERT/CC is interested in receiving reports of this activity. If
machines under your administrative control are compromised, please
send mail to cert@cert.org with the following text included in the
subject line: '[CERT#35663]'.
_________________________________________________________________
Feedback can be directed to the author: Roman Danyliw
______________________________________________________________________
This document is available from:
http://www.cert.org/advisories/CA-2003-04.html
______________________________________________________________________
CERT/CC Contact Information
Email: cert@cert.org
Phone: +1 412-268-7090 (24-hour hotline)
Fax: +1 412-268-6989
Postal address:
CERT Coordination Center
Software Engineering Institute
Carnegie Mellon University
Pittsburgh PA 15213-3890
U.S.A.
CERT/CC personnel answer the hotline 08:00-17:00 EST(GMT-5) /
EDT(GMT-4) Monday through Friday; they are on call for emergencies
during other hours, on U.S. holidays, and on weekends.
Using encryption
We strongly urge you to encrypt sensitive information sent by email.
Our public PGP key is available from
http://www.cert.org/CERT_PGP.key
If you prefer to use DES, please call the CERT hotline for more
information.
Getting security information
CERT publications and other security information are available from
our web site
http://www.cert.org/
To subscribe to the CERT mailing list for advisories and bulletins,
send email to majordomo@cert.org. Please include in the body of your
message
subscribe cert-advisory
* 'CERT' and 'CERT Coordination Center' are registered in the U.S.
Patent and Trademark Office.
______________________________________________________________________
NO WARRANTY
Any material furnished by Carnegie Mellon University and the Software
Engineering Institute is furnished on an 'as is' basis. Carnegie
Mellon University makes no warranties of any kind, either expressed or
implied as to any matter including, but not limited to, warranty of
fitness for a particular purpose or merchantability, exclusivity or
results obtained from use of the material. Carnegie Mellon University
does not make any warranty of any kind with respect to freedom from
patent, trademark, or copyright infringement.
_________________________________________________________________
Conditions for use, disclaimers, and sponsorship information
Copyright 2003 Carnegie Mellon University.
Revision History
January 25, 2003: Initial release
-----BEGIN PGP SIGNATURE-----
Version: PGP 6.5.8
iQCVAwUBPjKkJmjtSoHZUTs5AQG4KgP+MGcnpMxQrAVMBu+jhPhIobYp2eaPRSfx
Nj5TQs9A3749p11Of1h5KxyqrjBhL/Ff8jyac4Vj0XWa4KtYeiPbC0feN49LKEnn
6JLf24Pyov3wEPn9tcBJ511lAhD506sUVsTTrexrFUgaSCFnG4nucP1wC93JUbdx
QxMA0Aixt1U=
=VhD+
-----END PGP SIGNATURE----- |
|
| IS it bad to charge by the hour? | Sun 26 Jan | Sergey |
| Greetings,
Is it really bad if i am charging my clients by the hour? I am the owner of a small web development company (three people right now) and half a year ago i moved all of our projects on a per hour basis.
And it was really good and things got very simple after this. I have an hourly rate for my clients and the inner hourly rate for the developers (that depend on their skills). And i have a delta of what the company earns of every hour that my developer spends on the clients project.
Everything is very clear with this approach. We have a special tracking software that helps us to track hours in a very convinient way and it also produces reports for our clients.
Now, lately i constantly see people saying that the hourly rate is bad and i can even loose clients because i charge them by the hour. Can this be true?
PS. I am aware that i can earn more if i will charge by the project instead of by the hour. But this is ok with me. I like the fairness that comes with the hour rate -- our clients pay us for the real work that we have done -- no more and no less. |
| Sun 26 Jan | Matthew Lock | If you charge strictly by the hour consider that if your programmers build libraries of functions and classes you will earn less and less each time they resuse code.
You might want to have a standard charge for reuse of existing code into new projects. |
| Sun 26 Jan | Sergey | 'If you charge strictly by the hour consider that if your programmers build libraries of functions and classes you will earn less and less each time they resuse code.'
This point is now clear for me. Thank you.
But what is really bad about it?
If my people only work 5 hours because of the libraries that they can re-use and I charge my client only for 5 hours -- it looks fair for me.
Instead of charging extra for the re-use of the libraries i am thinking of increasing the standard hourly rate. The hourly rate for the client already depends on the developer's skills, because obviously if the developer is very good and solves problems fast, then his hourly rate should be much more then of the beginner developer who is working slow.
So, how about that: if we are using the top developers for the project and we are going to re-use our own library which will also save time, we are charging 50% more for every hour.
Another thing here. What if we are re-using open source libraries/products? It is not fair to charge extra for this, i think. But this WILL decrease the overall time spent on this project and thus we will be paid less. |
| Sun 26 Jan | choppy | the key is to not worry too much if it is 'bad' and just do whatever you can to make the most money (without being unethical, of course). If hourly seems to be working out well, don't change anything.
IMO once you get to the point where you lose money hourly because you are reusing old code, it is time to wrap that code up into a 'product,' charge a license fee for the product, and add hourly customization fees on top of the license fee. |
| Sun 26 Jan | TK | My mom always told me to pay window painters by the window and not by the hour. Some clients for some projects want a fixed price. If you do hourly charges, I would want an estimate and I would want you to stick by it within reason and good faith. That's a de facto fixed price. |
| Sun 26 Jan | Bella | If you are fair, your business will flourish. If you are a money pinching nickel and dimer, you will eventually fail.
Determine your rates by looking at market rates and competition. If you are ultra efficient, and take 1/2 the time than the average market would demand, then someone else will be too, eventually. If you charge less, b/c of your efficieny, word will get around. Its all about referrals. Please your customers, and be fair, and you will have more work than you can handle. |
| Sun 26 Jan | Sergey | tk,
Estimate is not a problem. I always do estimates for every project and ask for some part of the payment upfront especially with a new client.
Usually, we fit in the estimate or even charge less then orginally estimated (because we've spent less hours then planed).
But, if a client wants something extra that was not orinally planned in the beginning of the project, then we can do that to. With an hourly rate, we are not worried about the total project price. I see this as a major benefit of our approach. |
| Sun 26 Jan | Tony E | I'd stick to the hourly rate, fixed price work frequently gets ugly. On the one hand you need to limit how much you do for the customer to make sure you can still make a profit, on the other the customer wants as much as possible for his original price. This leads to an immediate conflict. |
| Sun 26 Jan | Curmudgeon | Disaster stories relating to fixed price software development are a dime a dozen. The statistics indicate that most contractors and consultants are best off avoiding fixed price except where the situation *clearly* indicates that you can make a very good rate without a great amount of struggle, or the purpose is to get your foot in the door for further work and the project scope isn't large enough to constitute a big business risk to you. Usually, neither is the case with most custom work (that's why it's custom.)
What I've found: the level of advance work required to cover yourself in proposing a fixed price on most moderately complex projects is very often in excess of that which the customer will accept or which makes sense for one to invest in a project that you don't even have in hand yet.
Also, I have found that when a client pushes hard for fixed price, they tend to desire a degree of simple minded 'compartmentalization' of their problem that is impractical. IE, they want fixed price because they want to play pretend that a messy or ambiguous set of requirements are straighforward, and they want to pass this risk on to some other poor SOB.
Client sophistication is also a factor: at a very small level of client, most clients won't even understand (much less accept) a formal discovery phase.
So, hourly is the prudent choice. Unprofessional? Lawyers and doctors charge by the hour... |
| Sun 26 Jan | TK | Nothing unprofessional about hourly billing but few folks will sign you up for open ended hourly billing. Certainly your high billing rate reflects all those unbillable hours you spend courting a client, preparing estimates, etc. Good clients and contractors know what costs they can fix and which they can flex. I'll give you a fixed cost for delivering a truckload of topsoil, but not for digging a pool in your backyard (until I drill core samples anyway).
Doctors and lawyers vary. Most doctors (auto mechanics and others) use standard costing methods. You can get fixed prices for many attourney fees: title searches, wills, closings, incorporations, 501 3c's; litigation is another story. |
|
| Band Together | Sun 26 Jan | WNC |
| Why can’t all of those programmers out of a job or looking for a little extra part time work, band together and start our own company? Peter Drucker in one of his books on management talks about “creating business.” There are many things on the market today that we didn’t need or want originally- the market was created. What if we created a group, like a guild, and banded together? Where programmers who want part time work can get it and programmers who need a job could get it.
There would need to be rules for membership. The entrance test could be program software or code that does X in the next Y period of time. What kind of entrance test should it have? Surely not something that would prevent non-traditional programmers from being admitted.
There are things people “need” but don’t yet know they need because we haven’t told them. What do we want people to need software wise? What projects do we want them to ask us to build that would have a software element?
If we created such an organization how would it be held together? Over the internet? It would have to have it’s own web page. What kind of web page? A place with password only forums…
What would be the rules for the distribution of money? The majority of the money produced per project would go to those who actually worked on the project. There would be no overhead of owning buildings or furniture or anything like that. All the work would be done over the Internet from our homes or coffee shops or wherever.
Even if this idea fails miserably, for the unemployed, it’s an opportunity to get experience doing programming, web page design, market research, etc.
I don’t need a job. I have one at the moment. Our company has been around for over twenty years and we’re going very strong, in sales and in products. I’m not worried. I don’t need anything.
But it is a good idea. Too many of us allow our lives and the lives of those who depend on us to be determined by whether or not company XYZ sees our value. Our value exists whether or not they see it. Some of us are still learning and growing as programmers- I fall in this category, I’m far from an expert in anything. But I know that I can do good work and provide value for my company. I provide more value than I am paid for, but if the company didn’t pay workers for less than they provided they would go out of business. But I could do work on the side. We all know we have something to offer. What if the value that we could provide was all that mattered? Over the Internet it doesn’t matter that I’m a ultra-right-wing-Christian or that I haven’t graduated from a four year collage or that you may be… whatever. On this forum all that matters are the ideas presented, the facts and the opinions argued back and forth.
In “What Color Is Your Parachute” Richard Bolles argues that it doesn’t matter that you have a ‘handicap’ –like not having a bachelors degree or whether or not you are a master with pointers in C++- He says, what you’re looking for is the company that doesn’t care about your handicap.
Individually we may not *all* possess the savvy, technical know-how salesmanship and resources to sell something commercially. But together we have a massive amount of all of the above and more. We have all studied creating systems. Why couldn’t we put that knowledge together to create a system like this? What would such a system look like?
Everybody “needs” more software in their life! They just don’t know it yet and we have a, seemingly, unending supply of people who want to write new software. What can we sell them?
The best responses are more questions. |
| Sun 26 Jan | Curmudgeon | >> Everybody “needs” more software in their life! They just don’t know it yet and we have a, seemingly, unending supply of people who want to write new software. What can we sell them?
Wrong question and wrong contention. 'Everybody' needs more software? My mother-in-law certainly does *not* need more software. Neither do most small businesses. That is an incredibly techie-centric assertion. The point of most people's lives and businesses is to live and to make money, not to focus on a piece of software.
On 'need', need is not sufficient - perception is key. Even if a business critically NEEDS more software and is ABLE to pay, they probably are internally convinced that they do NOT need that software. That's been the subject of some forecasts on IT trends for 2003 - companies across the map are said to cut back on software acquisition in '03, even below 2002 levels.
What *any* business needs to do, first and foremost, is to have a clear and unambiguous notion of the market that it is going to serve. Then it needs to develop ideas for products or services that can serve that market.
You have it all turned around. If you really believe that you can develop a better widget and then find a home for it, the very best way to go about this is on your own or with a VERY small collaborative group of partners, no more than 2-3 together tops. IE, keep it small and cohesive.
'We' programmers are notorious for each believing that our personal ideas are the one true way and that nobody else's notions have merit. I think that's one key problem with forming a company consisting of a bunch of programmers each having voting rights. It's why sales people tend to 'own' most of us and push us around in real life.
Customers come first, basically. Staffing comes MUCH later. |
| Sun 26 Jan | Curmudgeon | OK, my response might have sounded or come off as a bit harsh. I'm sorry.
I share your sentiments. I'd love sometime to work in a company that was co-owned by my intellectual equals and not have to kowtow to the mentally inferior (I mean professional management and salespeople) and submit to the non-technical person's truncated, non-fun, and dismissive view of the universe.
But...besides other things... I have observed that *all* successful, sustainable startup companies have been created as a result of just one person's vision.
IE - just as with great software on a small scale, great business ideas tend to be one person's initial conception. A committee would only delay or damage that spark of creativity.
Invention of *any* kind is *not* a democracy. Can you point at a successful entrepreneurial business of any sort that was founded as a co-op? I am trying and I can't. Co-ops are good for grassroots volunteerism, eletric utilities, and trading groups, but don't seem to appear in a form that competes aggressively for new business. The closest I can think of is 'Ben and Jerry's', and these guys are still capitalists and it still started with just a couple of people, not a hundred, setting a direction.
As far as modeling a programmer's co-op on the notion of a trading group - possibly. But if I had a chunk of billable work in hand that was available for someone else to do, I'd want several things: an incentive to give that chunk away in the first place; a promise that the person that took on that work would not embarrass me by poor performance; and a dead certain promise that I would receive in like value later.
See if you can find ways of appealing to EVERYONE'S self interest, starting with the customers. Everything else will fall into place... |
| Sun 26 Jan | WNC | When I was speaking of everyone 'needing' more software, I was being tongue-in-cheek. Of course they don't want more software right now- that's the point of business to create a want or need for your services or product. No one *needs* a Dell or an Apple, but enough people want them that Dell and Apple make money. And when there's a confluence of wants and perceived needs you have a real good chance of making a decent profit.
As a flaming capitalist myself, I reject the notion that anything I wrote was anti-capitalist in any way.
But to be a slave to what everybody wants or needs right now is not capitalism. There are many things that make life richer now that no one wanted before it was produced.
If programmers have to perform a feat (coding something specific to join) that might be one way to ensure good professional quality. How could a project like this be run on a sound professional basis? The kind of questions, answers and input I was looking for (but I'm not holding my breath) involved people suspending their skepticism and disbelief for a few minutes and actually saying something that moved the dialog forward. Consider it an exercise in thinking outside the box.
If we're limited to how things have always been done, then we'll never see how things could be.
'Co-ops are good for...' Not proposing a co-op. If you dismiss it by assigning it a bad name, then you have not engaged the idea.
'...*all* successful, sustainable startup companies have been created as a result of just one person's vision.' Okay, I have a vision of a company that exists over the Internet, using the value that is already there, for those who want to participate, who can pass whatever tests to enter.
Why should we pretend that the market's current state is some kind of god that we must bow down to? Why shouldn't 'My mother-in-law... need more software?' She certainly could *use* more software. Why should we accept that 'companies have laid off so many programmers that there is a glut on the market?' |
| Sun 26 Jan | Curmudgeon | Ok, I'll try to be less of a wet blanket. ;-) I'll try, dunno if I can succeed...
You said in your first post:
>> There are many things on the market today that we didn’t need or want originally- the market was created.
Ok, this sounds like a small, entrepreneurial company (like the host of this boards'.) Nothing stopping anyone from doing that. It typically requires risk (downtime + turning down billable work or salary.)
>> What if we created a group, like a guild, and banded together? Where programmers who want part time work can get it and programmers who need a job could get it.
Er.... I have participated on quite a few programmer's message boards (my vice :-) ) and what you stated is one idea that keeps coming up again and again. And it never ever happens.
Before I launch into it, the meaning you originally meant would help clarify things. Do you mean a 'guild' that finds work for its members? Or do you mean a 'guild' that designs, creates and sells new products? Or both? Or a professional & service organization like a Lion's or Rotary Club for programmers, but with a more activist and mercantile bent?
There are three basic problems with a 'guild' formed as a lead sharing organization:
1) SOMEONE has to lead such an assembly, and that, right there, contradicts the notion of a democratically organized guild. This must happen because suggestions uttered do far to do this have, to date, not yet resulted in a guild forming out of thin air. Setting rules, policies, and standards of contribution with drive out most people except those with nothing else going on, or at least will contradict the free and loose concept.
2) More pressing yet: customer relationships never arise out of the primordial ooze of a group. Someone in the group has to take the steps to carry the group's message to customers. This is called marketing. Then someone has to make contact with specific prospects and convert them into customers. That's sales. Both of these activities (take my word for it) are ugly and non linear. I hate cold calling, I hate trying to get into the head of someone I hardly know whom I would rather not have a beer with anyway. Most developers are 'thing' people and not 'people' people - really. If you just build it, 'they' will probably not come.
3) Self interest violation: this is the most damning part. It's always sounded to me like the members of such a guild who *had* more business or work than they could handle would be obliged to give it away to other, less salesy guild members. Where's the incentive to do that? Someone who badly needs work is (in many cases) someone who can't find their own work. Which makes leads to them a throwaway, since they will likely not be in a position to return the favor even if they wanted to.
>> There would need to be rules for membership. The entrance test could be program software or code that does X in the next Y period of time. What kind of entrance test should it have? Surely not something that would prevent non-traditional programmers from being admitted.
That's tough. I work for a client that has such a test. Or at least they THINK they do. It's a generic programming test that no less than two experienced acquaintances of mine have basically labeled moronic and pointless. (In a way, it's so mickey mouse that it tends to select *out* the best people, who just walk out and leave.)
Besides - testing out is not a substitute for being able to deliver, which is what you really need on such a team.
I offer as an alternative: somehow, develop the concept of a network of trust, similar to that which web sites like Epinions.com have. IE: I read a product review on Epinion. 13 people trust the author of the review, including 3 people who are highly ranked epinion reviewers themselves. So I believe his/her opinion much more than if he had no people trusting him.
>> Why should we pretend that the market's current state is some kind of god that we must bow down to? Why shouldn't 'My mother-in-law... need more software?' She certainly could *use* more software.
I'm not, I'm just raising the point that you need to define how you would socially engineer such a group so that salable innovation comes about.
>> Why should we accept that 'companies have laid off so many programmers that there is a glut on the market?'
The 'glut' is of certain kinds of IT people who are looking for regular jobs. There is probably not a glut of entrepreneurial people who have good ideas. And they generally don't need co op style guilds... they COULD use commiseration with like minded professionals in the form of a professional's association, but they don't need to blend their good ideas with a dozen bad ideas from others nor give away their business... |
| Sun 26 Jan | crusty admin | 'I share your sentiments. I'd love sometime to work in a company that was co-owned by my intellectual equals and not have to kowtow to the mentally inferior (I mean professional management and salespeople) and submit to the non-technical person's truncated, non-fun, and dismissive view of the universe.'
I don't think companies like this exist because even if they start the techies don't watch the money close enough and don't have the skills to go out and get new business. I am a techie, I came from sales. I sucked at it. I am a good techie though. Generally I don't like sales people and can look through the feature and benefits and ask pinpoint questions that they don't like to answer. That doesn't mean they don't do a useful, or as important of a job as I do. I don't think in this day and age too many people develop software that sells itself.
The world is full of people who are not as smart as I am. I realize they are not as smart as I am in the same subjects I am, they are far smarter than I am on other topics. |
|
| Another lesson... | Sun 26 Jan | LivingInFear |
| Over the last few years a large number of developers have moved to developing on a laptop exclusively. With the price of a high-end laptop now within budget, it just seems logical to use one (hey, I can work from the park now! Woot!).
Well, I think Joel has just given an excellent set of reasons to not do so. Computers have stabilized so much in the last few years that it is easy to be become careless with our data. But the fact still remains, portability and reliability are often mutually exclusive.
Now, if you don’t mind, I’m off to check on my offsite storage procedures…. |
| Sun 26 Jan | WNC | I just started backing up my machine. Burning CD's for double redundancy. |
| Sun 26 Jan | Matthew Lock | The moral of the story is that a backup plan isn't complete until you've tested you can restore the backup correctly. |
| Sun 26 Jan | Bella | Backup plans should have nothing to do with whether you're working on a laptop vs. a desktop. |
| Sun 26 Jan | Josh Jones | I use a laptop to develop with, but I use emacs and ftp.. so none of the files are ever on my hard drive at all. I've had my laptop over 3 years and have never once lost any data on it, but if I did tomorrow, I wouldn't care.. all my data is kept on our dev server, which is super-backed up! |
| Sun 26 Jan | Neil Butterworth | 'But the fact still remains, portability and reliability are often mutually exclusive.'
Often, but not always. I've been using laptops since around 1990 and have never had a single problem (I must have owned or had the use of around a dozen during that time).
My current CVS server is a Sony Vaio TEK 600 laptop running Suse Linux - I just checked the uptime, and it was 193 days, and I seem to remember that the reason I took it down way back then then was because I was rearranging my network wiring - nothing to do with the laptop. |
|
| Hard Disk Failure and Power Fluctuations | Sun 26 Jan | Matthew Lock |
| Joel, are you sure your hard disk failures arent caused by power fluctuations?
My parents have a home office on the side of their house with bad power and every 6 months their hard disks seem to develop bad sectors and things. This has happened for years now. But a UPS has fixed it. |
| Sun 26 Jan | Marc | I don't think so. Laptops use the battery to supply constant power, even when it is plugged in. This is why there is no 'kick over' period when you rip the plug out of the wall.
So I would think that any power flux would simply be ignored because the battery compensates for the loss. |
| Sun 26 Jan | Prakash S | Matthew might have a point.
If your office is in a building which is quite old, cabling and stuff can't be trusted.
Try getting a regulator or a UPS. |
| Sun 26 Jan | WNC | We had to get a UPS for every machine in our office, because of this type of problem. |
| Sun 26 Jan | Stephen Jones | Laptop hard drives won't be affected by a power fluctuation but are affected by being moved around.
The failure rate for laptop hard drives is horrendous.
One thing to look out for is A/C's. The motor on A/C units can play havoc with any kind of magnetic storage. There was a famous case of a shop that found itself getting a 30% return rate on floppy disks. When it moved them away from the A/C unit in the storeroom the failure rate returned to normal. |
| Sun 26 Jan | Matthew Lock | Just to add from my original post, my parent's office's lights would dim each time the A/C started. |
| Sun 26 Jan | Brian R. | Matthew, thanks for the post. That explains my HD crashing.
I was having a dimming lights problem, then one day the HD motor was clanking loudly. At first, I thought it was the power supply.
I put in a new HD (original one had corrupted boot sectors or such, in the Windows system folder, and would start to clank lightly after a while) and one day, the 'new' system (new HD) just shut itself off automatically.
I have two computers in the same room at close proximity. I know nothing about what a UPS physically looks like.
Can I buy one to back up both computers?
What does a decent one cost? |
| Sun 26 Jan | Ori Berger | Brian, you can use one UPS for both computers. The cost will depend on whether you have two monitors or just one, and how much time you want the UPS to work. If you can afford it, prefer a UPS that constantly supplies power from its battery, rather than one that kicks in on power loss. They're more expensive, but MUCH more reliable.
And, keep in mind that a UPS supplies backup _power_. You still have to backup your data independently. |
| Sun 26 Jan | X. J. Scott | I have a back-UPS Pro 500 from APS. It's a box about 10 by 10 by 6 inches and fairly heavy due to the lead acid battery inside. i paid about $120 for it including shipping.
I would recommend everyone get one of these sorts of things as this has solved no end of problems, despite alllegations that the power here is supposed to be clean and pure.
A surge protector is almost worthless, as is a surge protector with a battery back up. You need one with a voltage regulator as well so that if the voltage drops to 90V or goes up to 145V temporarily, your delicate electronics aren't hosed. Hard drives are the first things to go, especially with low voltages which are also known as 'brownouts'.
This one here drives one computer and various equipment but could probably drive two. You can get them in various capacities depending on how much juice your system requires and how long you need to run it to shut everything down gracefully if the power goes out.
APS also has pure voltage regulators without battery backup, but you have to search their catalog pretty closely to find them.
A/C, flourscent lights, refrigerators, vacuum cleaners, waxing machines -- all these things can hose your equipment. If you have any of these things possibly on the same circuit as your gear, you need an APS and even if you dons't you need an APS anyway. It is an essential part of your setup that can not be neglected. |
|
| It's Back! | Sat 25 Jan | Jeff |
| Nice to see Joels website back online!
I was starting to go through withdrawl without my Joel on Software Forum fix. |
| Sat 25 Jan | TK | It was awful but I'm hoping the Fog folks have a story to tell about the outage. |
| Sat 25 Jan | Li-fan Chen | Yeah I guess I gotta find some new site to surf, I didn't realize how much of a regular I have become. |
| Sat 25 Jan | Stephen Jones | A massive outage that affected loads of sites.
As bad or worse than Code Red
And of course try and finding anything about it on the parts of the internet that are still up! |
| Sun 26 Jan | Prakash S | Not Yet another hard disk faliure:-) |
| Sun 26 Jan | S.C. | Is it just me or this site goes dead a couple of times lately? HW upgrade? |
| Sun 26 Jan | WNC | I have to get my joelonsoftware fix!!!!! Help!!!! I need a jolt of the fog creek software forum!!!! Send money to joel to buy new hardware quick!!! |
| Sun 26 Jan | Stephen Jones | Actually the worm has been called Slammer. Here's a link to an article.
http://www.eweek.com/article2/0,3959,845164,00.asp |
| Sun 26 Jan | Scott McKellar | From Joel's article it looks like his problem wasn't really related to the Slammer worm, since it started before the worm got out. Nevertheless, Savvis, Worldcom, and Verizon clearly had their hands full on Saturday morning. While none of them may have distinguished themselves, it's only fair to cut them a little more slack than you normally would.
However, Joel's larger point remains valid. Multiple layers of reselling add multiple layers of bureaucracy, delay, and finger-pointing.
These arrangements would probably never have arisen in the first place if it weren't for a weird regulatory scheme that requires a few specific telcos to subsidize their own competition. Verizon has to sell their service to Worldcom for less than it costs to provide the service. Worldcom then resells the service to others and pockets the difference, having contributed little or nothing themselves.
The results:
1. The appearance, though not the reality, of competition.
2. Free money for the reseller, minus the cost of his sales force.
3. Artificially low prices for the end user.
These results may be politically popular. However, you don't have to be a friend of the big, bad telcos to recognize that they can't sustain these mandated raids on their treasuries forever. Moreover they have little incentive to maintain or upgrade the infrastructure if the benefits are siphoned off to others. |
| Sun 26 Jan | Foolish Jordan | Bah. As the customer, Joel shouldn't have to care that it's Verizon's fault that his service is down. When Savvis says 'it's Verizon's fault', his proper response is 'I don't care /whose/ fault it is, I'm paying /you/ good money for internet service, and it's down. Fix it!'
When I pay money for a service, it becomes entirely the responsibility of that service provider to make sure my service is working. If they can't do anything because it's all Verizon's fault, then they should reconsider their relationship with Verizon, or else suffer the consequences of not being a reliable service provider. |
| Sun 26 Jan | Michael H. Pryor | I agree with Jordan 100%. It doesn't matter who's 'fault' it is, we're paying SAVVIS, so when its out, it's their FAULT.
The worst part is their website has all this hoopla about 24x7 connectivity. Quote from their website 'SAVVIS Means Reliability — With No Excuses' .. yah right. It's all marketing.
They also have an entire page devoted to trouble ticket escalations, and this is the second time we've asked them for our escalation level and were told they don't have escalations. (And the second time we directed the tech on the phone to the web page @ http://www.savvis.net/customer/monitoring.html and they mumbled something incoherent).
Anyway, the point is that I had to call WorldCOM, and I had to call Verizon and all three companies are completely inept. But the morale of the story is that no matter what Verizon owns the whole process, so if I have to deal with inept people, I want to deal with the source. |
| Sun 26 Jan | X. J. Scott | I had problems with my site getting tons of hits starting Friday afternoon so I think that worm got lose earlier than they think. |
|
| Favorite _coding_ forums | Fri 24 Jan | Nick Hebb |
| Ive seen a lot of coding questions posted to this forum lately. It doesnt bother me, but this forum doesnt seem like the best place to post coding and/or language-specific questions.
In the past Ive used Google Groups (Usenet), http://p2p.wrox.com, and a few others. But Ive yet to find the perfect forum.
Any suggestions? |
| Fri 24 Jan | | No offense, but please don't complain, Nick ;-)
- I'd much rather see coding questions here than more mindless religious wars about who's country's best, who's got the better education system, the evil rich, the noble poor, why somebody or other in India is doing whatever to the Muslims, who's best-MS or *nix, who sucks worse-MS or *nix...ad nauseum.
- seems we've been getting a much bigger slice of that sort of stuff lately. |
| Sun 26 Jan | Stephen Jones | Coding is language specific, so I suspect that you are not going to find one central site.
But as noname says, if there aren't any coding questions at all the site loses its character.
It's probably a little like the water cooler. A place where people come to sound off. |
| Sun 26 Jan | Homer | DOH! I thought Joel's articles were all about 'Joel Spolsky rocks; the world sucks!' Religious flame wars on USENET pales in comparison. |
| Sun 26 Jan | Curmudgeon | >>I thought Joel's articles were all about 'Joel Spolsky rocks; the world sucks!' Religious flame wars on USENET pales in comparison.
That is an idiotic contention and may show that you haven't visited very many developer forums that are dominated by just a few people.
Joel isn't perfect but he's certainly not pompous or arrogant or belittling. As for other people's take on him, that isn't anything that he has control over. If you think his opinions are too strong or over-the-top, you probably haven't tried to develop a small business from scratch and had to develop a focus for that business. Someone who is running their own business probably has a few core ideas that pervade their thinking. Get over it...
For a really huge taste of the kind of mentality that you're describing, go to the 'AngryCoder' weblog sometime and check out some of the comments posted by 'AngryCoder' himself where he tells people that they are f***ing dumbasses for disagreeing with him or criticizing his work, etc.
I'll take Joel's op-eds over 90% of the unprofessional drivel, corporate blather, and self aggrandizing arrogance fests that dominate developer's fora any day. |
| Sun 26 Jan | Curmudgeon | Homer: I take back 'idiotic'. That was not constructive.
Sorry. |
|
| To Ghost or not to Ghost ... | Fri 24 Jan | Just me (Sir to you) |
| This was maybe a bit misplaced before, but I would like some opinions on this proposed setup. I have not personally used Ghost before but have often heard it commented on favorably
The idea would be to do overnight Ghosting of the developer machines (every night, every dev machine) on a fully switched network. Are there any gotchas here that I should be aware of? The goal is to have a very simple off-site backup solution, with fast recovery times in case a machine dies.
Here is what I would like:
dev machines (hardware all image equivalent)
I
switched 100Mbs/1 GBit port
I
GBit line to different building (for offsite)
I
switched 100Mbs/ 1Gbit port
I
some cheap machines dedicated to storing the images
If something happens, a dev could use a spare standby and ghost it with last night’s image. Should be up and running again in 2-3 hours max, no?
Does this sound ok? Dumb? |
| Fri 24 Jan | richard | Hi, I just found this site and articles yesterday (researching functional specifications). Incredible how much useful information on various related subjects is made available here. I only wish I had found and started following this site sooner. Anyway, on to the Ghost question.
Ok, I am by no means an expert on this matter (mostly because we don't have the infrastructure to support it). But none the less I do have a fair amount of experience with Ghost. To be completely honest, it sounds a bit like an over simplification.
It really depends on how many development machines you are talking about and how much data are on the drives (including OS, Apps & Data) and your backup window.
If you are talking about a relatively few machines with maybe a Gig on the drive, then you should be fine.
If you are talking about a great deal of machines and/or significant amount of data and/or you have a very tight time frame to do them in each night, then I would look at a different solution. Probably something that allows incremental backups instead of full backups.
Our company has a ghost of XP with all of our standard apps that is about 1.2 GB without any user data. So let's just say that with data they will average double that 2.4GB and I am dealing with a group of only 10 that I need to backup. It has been my experience that it can take up to 10 minutes per 600 MB. Therefore, these would take up to 30/40 minutes to complete. The speed of the storage machines drives and how many of them you are using would be the limiting factor on how many you could run simultaneously, without a significant impact on the speed. If I were planning to backup these 10 systems on 2 desktops with regular IDE drives I would not try to do more than one backup per storage system at a time. So doing only two ata time might take me as much as 3 - 3 1/2 hours. If I were going to use Server(s) with SCSI drives striped then you would be able to do a lot more at one time.
Its really hard to guess (at least for me). I have seen so much variance between similar networks and between various storage systems. Your best bet is to just test it out in your environment. Start with one and keep re-testing with more simultaneous machines to see what you are able to sustain and how long they take. Once you know what your averages I would just try to stagger them as much as possible with a fair amount of buffer between the shifts end/start and the imaging process start/end. You will want to keep an eye out for the developer who likes to listen to music while they work. All to often you will find that your estimated 2 Gig drive has 6 Gig of MP3s and therefore 8 Gig total size.
All backup factors set aside, if you need to recover a machine that was backed up with ghost I would count on more like 30 min to 1 hour recovery time. It's not a 'Cure All' but it is a reasonable method.
If you ask me a better way would be to create a generic Ghost image (or even one per machine if there aren’t that many of them) then setup something to do nightly backups of data only. This would make backups significantly faster, easier and more reliable and recovery would still only take about an hour for machine specific images or 2 hours for a generic image.
Doh! I guess I got a little winded didn’t I? I would be happy to further discuss some of the intricacies of doing ghost images if you like...
Thanks,
Rich |
| Fri 24 Jan | Joel Spolsky | It sounds like you're planning to use Ghost as an alternative to doing backups.
There are two problems.
(1) even if you do a backup every single night, a crashed hard drive will still result in a day's lost work. This can be incredibly frustrating. Just recovering from a day's lost email can take hours.
(2) if a programmer accidentally ruins an important file or deletes something, you don't have a good way to recover it.
For backups, use a real backup program: I suggest NetBackup Pro. This lets anyone get any of the last 5 versions of a file if them mess something up, and can restore a hard drive from bare metal although this is a slow and annoying process as I am learning today. It also has the advantage of only copying files that actually changed over the network, and if multiple users have the same file (as they commonly do: os, program files, etc) they will only be stored once on the server, which means it takes up a lot less space.
But I still think you need a way to recover quickly from the most common problem: hard drive failure; and despite all the naysaying I think the best way to do that is to make sure developer machines have mirrored hard drives. This can be done expensively with RAID and SCSI or cheaply with ATA-RAID and commodity IDE drives. |
| Sun 26 Jan | Stephen Jones | 'Just recovering from a day's lost email can take hours.'
How?
Firstly where is the email stored? For a single user with an internet connection who keeps his email on a .pst file on a hard disk, the answer is simple. You make sure messages are kept on the server for three days, and make a backup every night. Then if your HD fails, you restore the backup of the hard drive, with the email correct up to the day before, and then when you log on to the mail server it will download the lost messages again. Sent messages will be lost, but you can always send a copy to your Yahoo account or whatever.
Presumably you are referring to a setup where you have your own mail server. Here obviously you need to have a back up program specifically designed to back up the mail server you use, and to do so while the program is running.
One possiblity is for each user to keep his emails on a .pst file on his own drive and leave a copy on the company mail server, as in the case in the other paragraph. This would make problems for accessing the mail from the web, though the setting could be changed every night.
Ghost was originally not intended as a backup tool. It was intended to enable the quick installation of a system disk with all apps and settings ready, and to speed up initial deployment through the enterprise. In fact MS only accepted it as a method of installation with the W2K resource kit.
In the last few months I have been reading about cloning being considered the best way of making back ups of enterprise servers. Soon there should be enough companies who have tried this to give you the feedback.
Now what you must do is distinguish between data and installation. You should use Ghost to back up the system disk (that is to say operating system and applications and all the utilities you set up) but use a back up system for data. Keep the data on a separate disk, or a separate server.
The reason you are using Ghost for the system disk instead of the backup system Joel recommends is that it does take a long time to restore a bare metal setup from back up software. This is what Ghost does very well. But to get a back up of one file, or even all your data, where there is no installation, there is no advantage to using Ghost, and plenty of disadvantages.
So, a) use Ghost to back up your system disks.
b) Keep data on a separate disk and use back up software (have a look at Second Copy from http://www.centered.com ) for it.
c) Get special back up software for your email server and for any databases you have running.
And if it takes you two days to recover from one HD crash, like Joel claims it does, then remember to feed the hamster that's running the generator! |
| Sun 26 Jan | Eddy Young | 'And if it takes you two days to recover from one HD crash, like Joel claims it does, then remember to feed the hamster that's running the generator!'
I agree with you. The problem could have been fixed without complication if Joel knew what he was doing. Him leaving his computer to run overnight (twice) to try and fix the hard drives may have been the cause of the dead disks.
In my early days with FreeBSD, I once left my computer on overnight to recompile the kernel. The next morning the hard drive was dead, but I managed to trace the problem. Because a driver module failed to compile, when FreeBSD booted, the same area of the disk was read over and over again until it went down -- some viruses do this to trash disks. I suspect the same thing happened to Joel's drives. Lesson: never allow unsupervised low-level operations on your data unless you have made a copy of the current state of the data -- as is recommended when you resize partitions, defragment, etc. |
| Sun 26 Jan | Eddy Young | Just me (something, something)
Why go to such an extreme? As long as you have a good version control program, such as CVS, you should only have to backup the source repository. Using Ghost is a waste of resources. Think about it. Do you really want to also backup the operating system files knowing they size up to hundreds of megabytes these days?
Here is the methodology I personally use.
A source repository is set up on a server, backed with a good CVS (and I am not talking about SourceSafe). Every time a programmer finishes with a file, he checks it back in. At regular intervals, a scheduled job backs up the source repository on another server. If a programmer's laptop dies, his latest changes will have been committed; if the server dies, there will be a backup. If the backup dies, there is the server.
As I am lucky enough to be using FreeBSD, this setup was achieved very easily. My source repository is managed by CVS; my backup is done with rsync (synchronises only changed files to minimise bandwidth usage allowing small intervals between jobs) and I use different CVS clients to access the repository (wherever under MacOS X, Windows or FreeBSD).
Links:
http://www.cvsup.org
http://www.cvshome.org
http://www.wincvs.org |
| Sun 26 Jan | Eddy Young | 'But I still think you need a way to recover quickly from the most common problem: hard drive failure; and despite all the naysaying I think the best way to do that is to make sure developer machines have mirrored hard drives. This can be done expensively with RAID and SCSI or cheaply with ATA-RAID and commodity IDE drives.'
You do not have to use technology just for the sake of it. There are simpler ways to recover a developer machine. For one, you can use a hybrid solution. Use Ghost to mirror a typical developer setup with all the required development tools. Use CVS and rsync to version-control and backup the source code.
If a computer dies, you spend a maximum of 30 minutes to have a basic system back up. Then, you use CVS to reinstate the source that the developer needs.
In my personal experience, I have never seen RAID to live to its hype of allowing failure recoveries in a minimum amount of time. Certainly, never below 30 minutes.
Just because cheap RAID solutions exist, it does not mean that they are the best. |
|
| Java multithreading limitations | Fri 24 Jan | Frustrated Java Programmer |
| Sorry if this is a bad place to post this, but no one Ive spoken with seems to have a clue.
My problem is that I am trying to write a normal Unix-style multithreaded TCP server (thread per connection model). I can handle no more than 916 connections, because any more than that (917+), and the VM will crap its pants. If I use multiple VMs on one machine, it works fine.
This is using J2SE 1.4.1, on a Linux box.
Do I need to be using J2EE? Or is the thread-per-connection model obsolete? I considered just multiplexing connections myself, but would rather not do so, if theres a better way. Is there a new server-design paradigm that is not mentioned anywhere? Anyone know of any books or web sites that would discuss other ways of implementing servers that wont hammer the VM so badly?
Thanks a ton! |
| Fri 24 Jan | Astarte | Dude, as far as I know the 'thread per connection' model is a problem as soon as you have large numbers of connections and you want decent performance. I'd suggest a google search for connection pooling.
Good luck! This is probably going to involve some JNI on your part... |
| Fri 24 Jan | Frustrated Java Programmer | My thinking was simple: Many FTP servers use it, and some (i.e. cdrom.com) handle large numbers of connections on it.
I'll probably wind up using connection pooling, but I was just trying to figure out how the VM could fail, when it doesn't hammer my system: My system does not noticably slow down with that many threads (or twice that many, split among 2 VMs), and I still have free memory.
Just seems wierd and arbitrary. |
| Fri 24 Jan | Alyosha` | Try the option
-Xno_crap_pants_when_more_than_916_threads.
(916? But it's not even a power of two!) |
| Fri 24 Jan | Daniel | Check out the new java.nio package, available since J2SE 1.4.0.
/Daniel |
| Fri 24 Jan | Dino | Good chances are J2EE will make no difference.
Even more within an J2EE app server (EJB crap) you cannot have a listener socket (ServerSocket) and you have no control over the threading whatsover.
Anyways there's a good chance you're running out of resources - and that makes the JVM crap out. Check your design and find one that is less resource intensive or that can limit the resource usage on the system. |
| Fri 24 Jan | Ged Byrne | Since you say that Multiple VMs on the same machine are OK, I think that it is the VM that is running out of resources.
Which VM are you using, Jikes? Check the documentation to see what restrictions there are on a single VM. Is there a limit to the memory available? Is there a buffer than can be made larger?
Is it possible that you can put together a few demo classes to try out on other machines, to see what happens on other machines? |
| Fri 24 Jan | Howard | I agree with Daniel. Check out java.nio.*. I had this same problem years ago and wish I had this. Project over now.... |
| Fri 24 Jan | DB | You do not say what platform this is on. If it is unix you may be running up against some per user or login file handle limit. If I recall, the command is setrlimit to check and set this. |
| Fri 24 Jan | DB | Replying to my own message. I did not see the Linux box mentioned the first time. Do check setrlimit. |
| Fri 24 Jan | James Park | First, check out the Java async IO stuff in 1.4. This would be the recommended way to go. Also, if you have time, try adapting your code to work within a event framework such as SEDA (http://www.cs.berkeley.edu/~mdw/proj/seda/). The best performing web server, Zeus, uses a similar paradigm.
If you don't have time to port your connection code to use async IO, then try using a new VM such as BEA Jrockit (formerly Appeal). It maps multiple Java threads to a single OS thread to improve scalability.
It was tested to be able to go to 6000+ concurrent connections: http://www.volano.com/report/index.html
Also, make sure you increase your file/process limits on Linux. |
| Fri 24 Jan | Colin Evans | Instead of porting your code to java.nio, you probably should see if tuning Linux or the VM or switching VMs makes a difference. IBM's VM is supposed to get good performance on Linux, and there is JRockit, gcj, and others as well.
Check out the Volano benchmark at http://www.volano.com/report/index.html for ideas for tuning Linux -- you might need to raise the max number of file descriptors a process can have open. |
| Sun 26 Jan | Ori Berger | Sounds like the process is hitting an 1024 descriptor limit. Run 'limit' from the command line; if it says:
'files: 1024', or 'files:1000' or something close enough to 916, this is possibly the problem - 'limit files 4096' should solve that. I've never noticed if there's a 'limit threads' or 'limit processes', but if there is, that's another limit you might be hitting.
Another possible explanation (speculation ...) is that the JVM is using select() and has FD_SETSIZE set too low (e.g., 1024). To solve that you would need to recompile the JVM with a higher FD_SETSIZE, or switch to a JVM that uses poll() or another mechanism. |
| Sun 26 Jan | Dan Maas | http://www.kegel.com/c10k.html |
|
| Programmer's Paradise Articles? | Thu 23 Jan | Dave B. |
| Joel,
I believe you mentioned that you would be writing a column in the Programmers Paradise catalogs? Are you still doing that? and if so, What month will you start? Ive recieved the January and February issues and havent seen an article by you. (Maybe Im just blind.) Look forward to seeing your column in there. |
| Thu 23 Jan | Joel Spolsky | The first one will be in the issue that gets mailed February 1. |
| Thu 23 Jan | Mitch & Murray (from downtown) | Joel:
After dealing with that crowd over 10+ years, I advise you to get paid up front. If you are battering the article for placement in the catalog and using them as a re-seller ...
well ...
hohoho. Good luck. Been there, done that. These guys once took 9 months to cut us a check for $54, and I am not kidding. You will make slightly less than zero dollars on the deal.
BTW, if they insist on 40-50% discount, offer them 25% and watch them bite ... or else walk away. Been there and done that too. |
| Thu 23 Jan | Mitch & Murray (from downtown) | I think I meant 'bartering' and not 'battering'. |
| Fri 24 Jan | Joel Spolsky | Who *are* these Mitch and Murray people? |
| Sat 25 Jan | Mitch & Murray (from downtown) | We're the guys with the good leads - the Glengarry leads.
ABC!
Always
Be
Closing |
| Sun 26 Jan | Hardware Guy | Is second prize still a set of steak knives? |
|
| how do i find part time tech work? | Thu 23 Jan | parttimer |
| I want to go back to school for medicine, and recently tried to take some pre-requisite courses whilst working full time. Ive learned it is pretty hard to take organic chemistry while working 60 hours a week! anyway, something has to give, and Im thinking of trying to find a part time job. I was wondering if anyone here works on a part time basis? Or has tips on how to locate part time work? craigs list has a part time category, but most of it is not tech-related. Is part-time possible in this industry, or should i start applying to starbucks? |
| Thu 23 Jan | Prakash S | I am a part time Teacher - around 20 hours a week, and go to grad school full time.
My suggestion: Find job in your school itself, there are always some networking, web dev positions open.
best, |
| Thu 23 Jan | parttimer | hey good point prakash. i'll start there. thanks! |
| Thu 23 Jan | not my regular made up name | Definitely try to find a job with the school.
If that doesn't work, then your looking at taking a more entrepreneurial approach. While this is bad for med studies, it might be good for future-medical-practice-owner studies.
None of the companies I've worked for have ever had part time help, but I've known plenty of companies that could have used it. |
| Thu 23 Jan | Sam Gray | In addition to finding work *at* your school, most schools also have a department dedicated to getting outside jobs for their students. You may be able to access job listings that won't show up in the paper, etc.
Also, part time tech work may be more easily come by in the nonprofit world, because of budget limitations. However, salaries aren't going to be great there for the same reason.
Local user groups can also be a great way to network. |
| Fri 24 Jan | Tony E | There must be tons of businesses which need IT help but can't justify hiring a whole person. I guess the trick is not to look for a job but promote a service available to be booked a set amount per week. |
| Fri 24 Jan | Chris Blaise | I think finding a job on campus would be the easiest and best way to go. When I was in school (1991-1995, University of Vermont) I worked in the public computer lab as tech support for 4 years (in the lab and later on the phone) and in my final year worked both that and as a general sort of tech for the education department.
One might poo-poo a tech support job but I found it incredibly rewarding for the following reasons:
1. Exposure to new technology. Despite times of lean budgets, public labs always seem to manage some sort of new toy every year. I learned how to write HTML, UNIX, scan documents properly, and use Photoshop as well as some networking.
I also got the opportunity to do something many developers never do; work one-on-one with the 'customer' in the form of students and teachers. You can learn a lot about what's good and bad from a usability/productivity perspective.
2. Exposure to new opportunities. While I was officially a 'counselor in the lab', there was always some project that needed to be done. Among the 'extra' projects I worked on was maintaining a BBS that was the central mail hub for the state education network and writing helpdesk software to track calls. During the start of each semester the networking group always needed hands to help people setup their machines.
3. It was on campus. Within walking distance and they were obviously eager to accomodate my schedule. They also didn't pressure me to work more than I was comfortable with. I suppose that could change with the environment, but I'd suspect a school-run department is a lot more understanding about my school work than any other sort of environment.
What's more, while I was a CS major, I felt the education I picked up working tech was as equally valuable as classroom education. |
| Sun 26 Jan | Tj | You don't need to do tech support either if you're working at a university (though I imagine it can be more fun than programming, interacting with people). If you visit the physics dept for example and talk with a secretary, you might find there's a need for someone to do simulations. Or the statistics dept might need some VB app.
I recommended this to someone, and he found an interesting job with with the physics dept the same day. YMMV of course. But colleges like to hire students, because students are cheap labor.
Oh yeah, the advantage of a programming position is often you can choose your own hours. |
| Sun 26 Jan | Tj | One last thing. ;) Occasionally a problem is that grant-funded projects have too much cash -- they need to spend it so they won't get less funding. So don't feel sheepish! |
|
| fogcreek shop | Thu 23 Jan | choppy |
| Is fogcreek using an existing online store package, or a home-grown system? If existing package/service, what is it? Thanks! |
| Thu 23 Jan | Michael H. Pryor | Home grown (by me :). |
| Sun 26 Jan | Will | Michael,
Can you comment a little more on that? I've been looking to designing a basic e-commerce site for a client. I'm confident I can design a user friendly site, but am unfamiliar with some of the back-end details.
I've been told that if you write your own credit-card processing routines, you have to be certified by VISA, and that's difficult. Were you certified, or did you use a third-party component? (or is my info wrong)
Incidentally, as a user of the Fog Creek Shop, I liked the anti-warning on the double-clicking of the 'Purchase' button. Never could figure out why e-commerce software wasn't smart enough to avoid sending the credit card twice. Very clever on your part.
Best, WILL |
|
| Syntax | Thu 23 Jan | Benji Smith |
| Ive been particularly interested by a few recent threads complaining about Cs pointer syntax. Ive never liked the fact that the pointer declaration operator is the same as the pointer dereferencing operator. And I think alphabetic mnemonics are much more helpful than symbolic ones (*%!=~). I like to see _keywords_ in code. Keywords and named functions help to make code much more self-documenting than symbolic operators.
Consequently, if Im faced with reading someone elses code, Id rather read Java code than C/C++ code. I can sit down and read someone elses Java code even if Im not familiar with the architecture of the project or the packages that are being imported. Trying to read someone elses C/C++ code is much more of a headache, though.
Once you compile the code, though, my preferences go the other direction. I have very little patience for the runtime memory performance and UI capabilities of Java code. Whats more, I actually LIKE using indirection in my code. Im really comfortable with using pointers and pointers to pointers and pointers to functions and arrays of function pointers. I like templates. And I like to allocate and release my own resources.
I just wish that the code looked more like Java.
What I propose it this: a language that makes an exact one-to-one mapping to the capabilities of C++ but provides a much easier-on-the-eyes syntax. A bi-directional preprocessor ought to be able to turn any code implemented in this language directly into C++ code or convert existing C++ code into the more readable language.
What do you think? |
| Thu 23 Jan | Sam Gray | Cool. When can you ship it? ;> |
| Thu 23 Jan | mackinac | >>> What do you think? <<<
This sounds like a personal preference issue to me. Hmmmm, I guess that's obvious. I have been trying to imagine what it would be like. For the most part the C++ operators are just fine with me. Or, at least, I can't think of a way to improve things with keywords. Some examples:
Comparison operator:
FORTRAN: A .EQ. B
C/C++: A == B
C looks better to me, but maybe Pascal got it right.
How about logical operators, C vs. keywords:
a | b vs. a bit-wise-or b
a || b vs a logical-or b
Maybe you're thinking of something else. I don't see any improvement. |
| Thu 23 Jan | tommyhl | Someone else likes the idea:
http://www.csse.monash.edu.au/~damian/ papers/PDF/ModestProposal.pdf
(aka http://tinyurl.com/4tot if that wrapped) |
| Thu 23 Jan | tommyhl | Hmm... it did wrap :) |
| Thu 23 Jan | tommyhl | And I pasted the wrong thing.
http://tinyurl.com/4toz |
| Thu 23 Jan | Jeff | All this reminds me of is several misguided attempts to use the C pre-processor to make C 'better'.
One guy decided he liked Pascal's begin/end so he used
#define begin {
#define end }
to define them (and other Pascal-isms) and proceded to used them throughout his code. I had to takeover maintance of this crap - it took me a week to get everything out.
I actually ran into this at a second job, but instead of Pascal, he made his own 'improvements' like:
#define If if (
#define Then ) {
#define Else } else {
#define EndIf }
which looked like:
If a > b Then
a = b;
Else
b = a;
EndIf
This took even longer to remove...
The problems with this is that:
1) They can cause subtle errors if you don't completely understand how your changes work
2) No one else understands (or wants to understand) your 'improved' syntax.
3) Very few standard source tools are usable with your made-up syntax. |
| Thu 23 Jan | Andrew Simmons | I was thinking the same as jeff. I heard tell that Steve Bourne, author of the Bourne shell, carried out similar pre-processor abuse so that he could write it in something that looked like Algol68.
If you're that hung up on syntax, wouldn't you be better off using something else? |
| Thu 23 Jan | sgf | I once found this:
#define ever (;;)
thus
for ever
{
}
will loop forever.
Clever but not worth it. |
| Fri 24 Jan | Better than being unemployed... | On a similar note, when I was cutting C code daily, I always used to do this
if (pMyStruct != NULL)
{
....
}
However, when I went over to C++, my mentor at the time said I should be doing this instead
if (pMyStruct != 0)
{
....
}
because no matter what your address bit pattern for a NULL pointer is, C / C++ will guarantee that 0 in the context of a pointer gets evaluated to it.
I ended up thinking that C convention uses NULL and C++ convention uses 0. |
| Fri 24 Jan | Benji Smith | Upon reading some of the responses here, I can see that my comments didn't make a very favorable impression. But, I'd like to agree with practically everything you're saying here.
I couldn't agree more emphatically with pointless preprocessor replacement of things like END for } in code that is otherwise C code. It can accomplish nothing but to spread confusion, increase maintanence, and generally piss people off.
Besides, in this particular case, using symols makes sense. The use of braces to enclose blocks of code carries very little semantic value, only to group the lines of code together within a larger enclosing structure of some sort. That's almost purely syntactical. Dereferencing a pointer, on the other hand, carries much more semantic value. Dereferencing a pointer is an actual event that takes place at runtime, and I think it deserves a keyword of some kind.
Personally, I think dereferencing a pointer should look like a function call:
value = pointer.dereference();
The link given above (at http://tinyurl.com/4toz ) for the 'modest proposal' for a resyntaxed C++, is exactly the kind of thing I'm talking about.
Another similar concept is the compilation of Python code to the Java Virtual Machine. For one reason or another, someone like the performance characteristics of the JVM enough to write Python bindings to it. Of course, in this case, my understanding is that Python makes use of the JVM in a much different way than you can accomplish with Java code. But, at the heart of it, some people just like writing Python code more than they like writing Java code.
So, as I envision someone writing 'resyntaxed' C++ code, they're not burdening a development team with a bunch of kludgy preprocessor directives. They've made a choice to implement a piece of code in a different language ('minus minus', perhaps) for the strengths of that language (in this case, readability). |
| Sun 26 Jan | | In Pascal, pointers are nicely handled.
IIRC you can:
var PInt: ^integer; (* to declare it *)
...
PInt^ := 12; (* to dereference it *)
In delphi, if you have a structure, such as:
type Point: record x, y: integer; end; (* my type *)
var myPoint: ^Point;
...
myPoint^.x := 12; (* explicit dereference *)
myPoint.x := 12; (* implicit dereference *)
This implicit dereferencing, because it is unambiguous, just makes things much more tidy. Why do you need you choose either . or -> in c++, when the compiler knows exactly whether the variable is direct or a indirect? |
| Sun 26 Jan | | .. and don't get me started on the beauty of the 'with' keyword...
sorry (me takes my pills) |
| Sun 26 Jan | Neil Butterworth | 'Personally, I think dereferencing a pointer should look like a function call:
value = pointer.dereference();'
You can already do something like this using templates, you just can't get the member function call syntax:
template T * AddressOf( T & t ) {
return & t;
}
template T & Dereference( T * t ) {
return * t;
}
int main() {
int n = 42;
int * p = AddressOf( n );
Dereference( p ) = 666;
}
NeilB |
|
| Best Way to Move Installed W2K System? | Thu 23 Jan | Curmudgeon2 |
| Sys Admin 101 questions here.
Heres what I would like to understand: the easiest and most time efficient way to relocate an installation of Windows 2000 Pro, plus all installed applications, from one PC to another. With or without having the source PC available.
The source PC I have in hand (which works) has a large enough hard drive to contain a backup of its entire system (made with Windows backup) to be made in-place to the same hard drive. So one strategy is to first back up OS+programs+all data to the systems same hard drive; then install Windows 2000 to the target system and nothing else (IE, not apply service packs, etc); then restore to the new system from the source PCs backup image.
That will work OK, right? I should see all apps sitting and installed on the new system, correct?
The other alternative would be to use Norton Ghost. Does Ghost allow its backup to be installed over an existing installation of Windows 2000 without trying to write things like device driver installations from the old system? IE, is Ghost as intelligent as or more so than Windows backup? Or is backup the best bet here?
Lastly - this has bugged me for quite some time. I had a motherboard go poof last year, and I found that I could not boot that systems hard drive on a new motherboard - the hard drive support in W2K is apparently IDE controller specific - the OS kept crashing during startup in the new box with an exception traced back to incompatible IDE drivers. I had to reinstall Windows from scratch and install all apps, then move my data over. What recourse does a normal human being have to move a Windows 2000 system image off a hard drive to a new PC when the old MB is not available? In theory, I mean... |
| Thu 23 Jan | Sam Gray | Ghost is not so much a backup/restore system as it is a partition cloning tool. It completely wipes out any data that may already be on a PC and replaces it with the other one. It's the software equivalent of swapping drives. There are no capabilities for partial backup or restore... which is why so many people like it. (= Doesn't sound like it'd work for your purposes, though. |
| Thu 23 Jan | Sam Gray | Sorry, bad phrasing there. Make that '[ghost] completely wipes out any data that may already be on a PC and replaces it with a copy of another partition.' |
| Thu 23 Jan | A Software Build Guy | An Expesive Answer is a repackaging tool (The one I am thinking of is from Install Shield, but I am sure Wise and others have them stand alone) It would allow you start with a clean system (win2k only) and load the software you want to be movable with their install process capture tools running and then package the system for redeployment. All you would have to move is your data files... (NOT a good answer for a single instance move like this, This is ment to create a batch installation for an IS/IT department.) but it is an (exterme) way to go.
cheers
mad |
| Thu 23 Jan | Stephen Jones | In W98 it would be easy. You would treat it as if you were installing a new motherboard. You would simply delete the enum key in the registry, before you installed the motherboard.
So to move to a new machine you would delete the enum key and shut down the machine. Then take out the hard drive, put it in the new machine, let Windows find all the hardware again, then clone or Xcopy it to the second HD, delete the enum key, take out the old HD, put it back in the old macihine and then let it detect its old hardware again.
I've never done it with W2000 though, so I'll leave it up to you to do it, and then report back :-) |
| Fri 24 Jan | Robert Moir | Install any new IDE drivers if need be, move disks (or take ghost disk image and load onto new system) and reboot into windows on new system. Watch plug and play for a while. Be prepared to feed it driver disks. |
| Fri 24 Jan | Nathan | i just recently attempted to do what you are asking, ie - using windows backup to copy the entire hard drive in one file. it works great, except that it doesn't grab the registry.
you can go in to the registry and export all the keys to a .REG file or something, and then restore them on your new system after restoring the hard drive, of course.
i think. :) |
| Fri 24 Jan | Brian B | I think that if you get a boot error in W2K after installing a new motherboard, you can boot from the W2K CD and then make the selection to repair your W2K installation. I haven't tried this firsthand yet, but that is my understanding. |
| Fri 24 Jan | Peter Ibbotson | There is a knowledge base article about adding the extra IDE drivers to a Win2K system.
See article Q271965 for more details about this.
It has a title of:
'STOP 0x0000007B' Error After Moving Windows 2000 System Disk to Another System
But the MS site has this as not available at the moment. |
| Sun 26 Jan | Ori Berger | I've moved Win95 and WinNT systems in the past by copying all of the files, exporting the registry on one machine and re-importing it on the other. It's tricky though - you have to make sure that some keys don't get run over.
You will also need to do some search-and-replace if paths change, and perhaps some manual merging of registry entries. This is not foolproof, and far from simple. I would only advise you to do it as a last resort. |
|
| Recommendations sought for Fog Creek developer PCs | Thu 23 Jan | Joel Spolsky |
| Arg!
For the second time in the last year, a hard drive failure has led to a painful chain of events that resulting in several wasted days. Of course we have backups and no data was lost. But weve lost another few days that well never see again: downloading backups, reinstalling them, rebuilding systems, installing OSs.
So Ive decided that our new policy is that ALL non-laptops at Fog Creek will have RAID. There are some pretty cheap IDE RAID cards now so this shouldnt be a problem.
Basically I see three options for developer machines, and Id like to hear some opinions or other suggestions. (Quick reminder: Fog Creeks software runs on Windows so we need Windows 2000 or XP machines. Dont suggest Linux.)
OPTION 1: Terminal Services Client. We get a killer server with lots of CPUs and huge RAID. Developers run junky old computers with Windows Terminal Services and keep all their important stuff on the server, accessed through Terminal Services.
--> Problem with this option: I dont think Terminal Services will support triple-monitor clients. Or does it?
OPTION 2: Network storage. Everybody has killer machines with no hard drive, and they boot off the network. All storage, including everything, comes from a big fast RAID 0+1 network file server (with striping for speed and mirroring for safety).
--> Questions: is this going to be slower than local hard drives? What if we used 1000 Mbps Ethernet, would it be as fast as a local drive?
OPTION 3: Private IDE RAID. Everybody has killer machines with an IDE RAID card. Its not hot swappable but at least its mirrored.
--> Has anybody done this? Whats your experience?
Last Question: I recently noticed that as soon as you start talking about IDE RAID and multimonitor systems, the Configurators over at dell.com cant really handle it. Does anybody know a good honest PC shop that will custom build PCs for us -- the kind of place full of geeks who read hardware web sites all the time and get into deep debates over which kind of system bus is fastest. |
| Thu 23 Jan | Stephen Jones | Off topic Joel, so delete it if you want to, but how did it take you 'several days' to reinstall the OS, and why were you reinstalling the OS in the first place? If you look at the thread on formatting a hard disk, you will see nearly everyone recommending using Ghost images.
You partition your HD so all user data is kept on the D drive, and then make a Ghost Image of the drive, with the D partition blank. Then if your Hard disk fails you simply put in the spare one, install the Ghost Image (should take about 30 minutes or less depending on how many Gigs you have) and then reinstall your last back up of the data.
The only danger with RAID is the failure of the controller card, though I suspect with striped RAID it shouldn't make a difference.
If you want fast reliable hard drives consider SCSI. SCSI drives are more expensive than the equivalent ATA drive for equivalent performance bu the best drives on the market are not made in ATA.
As for the question of local storage v Network storage, I suggest you get Robert Moir's opinion. It is however one of those 'religious' questions, and you will have to make up your own mind,
Please forgive me if I'm being impertinent or just stating the obvious |
| Thu 23 Jan | Mike Swieton | I'm not sure if this is useful or not, but here's a quick rundown of what my school does:
The labs for many classes run off of networked storage. If you don't have many people on, it works fine (It's on a hub, so it dies under half-load). It is noticably slower than labs which run things locally (There's a Linux lab which has its own drives, Mac labs also. This isn't quite apples-to-apples, but, it's a significant difference).
I don't know what kind of hardware would be needed to make it run quickly (I'm afraid I don't know if my school's on 10bT or 100bT in those labs).
My personal gut instinct is per-computer RAID. However, if the controller goes, it can hurt your data. I suggest you read the ask slashdot (take it with the usual slashdot-sized grain of salt) at: http://ask.slashdot.org/article.pl?sid=02/12/13/0313254&mode=thread
The issue there is that a HighPoint IDE raid failed and left the disks unrecognized as part of the array. Don't know if he fixed it or not, but either way, a problem you probably want to avoid :)
What if you pull down a ghost image of a data partition (OS partition and data/source code,etc. partition) nightly onto a big server with SCSI raid? That should perform better than full-out network storage, but won't give you as reliable backups (being daily or periodic). The advantage is you're not SOL if you're big backup box goes down.
Hope this is helpful. |
| Thu 23 Jan | Dave B. | I would go the network route and give each workstation it's own hard-drive. Then each developer would simply access the codebase on the server and you only have to back up that directory or drive etc etc. RAID would help to speed things up on the server as well. A fast network is important. Don't want to get bored waiting for file/data transfers. For testing purposes I also have a couple of 10/100 cards available.
As everyone told me in the thread I made earlier, use Norton Ghost. I have yet to buy it, but it sounds like a time saver and may rid me of my formatting habit...
c:\format c: /u
As far as custom shops... I don't trust them. Will they be in business a year from now? What kind of warranty do they offer? etc.
If you have the time I would suggest building one on your own. I love to build my own and have built 10 workstations in the past 3 years (None of which has had a problem). I use the following sites to order parts:
http://www.newegg.com
http://www.tccomputers.com
May be worth a peek if you have time. |
| Thu 23 Jan | James Park | I also recommend private RAID.
PC's for Everyone (www.pcsforeveryone.com) can configure a PC for you with 3ware hardware IDE RAID.
While it's not on PC's for everyone's online configurator, 3ware also has hot-swappable IDE drive cages for use with their cards. I'm pretty sure you can call them up and see if they can procure and add the drive cages. They're pretty flexible, at least for their in-store customers. |
| Thu 23 Jan | Just me (Sir to you) | Raid is not the solution, it just moves the problem from the disk to the controller. I know places that have less uptime since they moved onto raid, YMMV.
Get in a backup system that can do fast full restores (this can be Ghost), a good LAN (fully switched 100Mbs should be ok) and a few cheap PC's with fast NIC's and large IDE drives for overnight backup. If at all possible put the backup PCs in a different building. |
| Thu 23 Jan | Joel Spolsky | Backups aren't good enough. I want RAID because I'm starting to learn that even when you have perfect backups, the time it takes to get up and running again is always too long. It shouldn't be, but it is. For example all the people who suggest 'ghost' -- this just doesn't cut it, there are too many steps involved in ressurecting a PC. Similarly the concept of having an OS partition and a Data partition: to ressurect such a system, you need to reinstall the OS (60 minutes for Windows XP including service packs) and only then can you start getting the user's data -- but what about all the little utility programs and customizations that the user did? The registry? etc.
As for RAID controllers failing... OK, doesn't this just mean that you replace the controller and you're all set? Is this really more common than hard drives failing? |
| Thu 23 Jan | John Topley | It has to be asked - have you actually used Ghost (or any disk imaging software) Joel? |
| Thu 23 Jan | Chris Hanson | Restoring from backups doesn't have to take a huge amount of time, if you're willing to do full-workstation backups and you take the time to design your backup strategy.
I use Retrospect to do incremental backups of my machines. If I need to restore, all I need to do is install the base OS (25 minutes for Mac OS X Jaguar), install the Retrospect client (1 minute), re-activate it on the backup server, and have the server start a full restore. Then I just keep feeding the server tapes until it tells me it's done.
It'll still take a few hours, sure, but it shouldn't take more than a single day's worth of time. And the machine will be configured *exactly* as it was the night before the crash.
To make the backup and restore process go faster, be sure you're on a gigabit network (they're cheap now, under $100/card and about $100/port on the switch) and have a nice, fast tape drive or FireWire RAID or whatever on your backup server. Also, do full backups on a regular basis, in addition to nightly incremental backups, so you don't have to put in 15 tapes to restore a single system.
Oh yeah: Whatever you do, look into FireWire storage solutions. FireWire is fast and robust; it's essentially serial SCSI. You should be able to find a high-bandwidth FireWire RAID cabinet that Just Works fairly inexpensively. And with today's 200GB ATA disks, you can get almost a terabyte of storage out of such a beast. |
| Thu 23 Jan | Joel Spolsky | Hmm, doesn't sound like people are listening to the question I asked.
I don't want a backup strategy, I have an excellent backup strategy, its just that Murphy has taught me that failed hard drives take an average of 2 days to recover from. I know they shouldn't, but they do. I want to switch to a system where failed hard drives take zero time to recover from. |
| Thu 23 Jan | crusty admin | If you want to do it by each machine, you will want redundant drives on redundant controllers. One controller controlling two mirrored drives is useless if the controller gets nutty. And please drop the ide drives, go scsi, idea mtbf is way too low.
Even if you build a giant terminal server you will have to do something robust like this on it. Terminal server can be very nice, the disadvantage is if some program on the terminal server causes problems it causes those for everyone, not just the one person that needs it. |
| Thu 23 Jan | John Topley | I'm assuming that those two days that Joel quotes include the ordering, delivery and fitting of a new drive...? |
| Thu 23 Jan | Bob Greene | 'Hmm, doesn't sound like people are listening to the question I asked'
I think they are trying to suggest (rightly or wrongly) that you have asked the wrong question. |
| Thu 23 Jan | Joe Smalle | Joel, to answer your replacing controllers question,
I've used 3ware cards before and taken 2 drives created on one card (2 port version) and moved them to a new computer and new card (4 port version) when I upgraded machines. This went off with no hitches.
I've had drives fail before, replaced them, and the 3ware card rebuilt the array with no hitches.
Again, the reliability of my upgrade and recovery is just my personal experience. You might want to check newsgroups for other people's experiences.
As controllers failing, I mean what is the probability of a solid-state device like a disk controller failing? And please people, no stories of my friend's friend's friend's friend had 10 controllers in a row fail within 1 second of booting up.
As for IDE vs SCSI on the desktop, well what does SCSI get you other than higher RPM and higher cost? Higher RPM is nice, but do you really want 2-4 15K RPM cheetahs tearing holes in your eardrums all day? |
| Thu 23 Jan | A Software Build Guy | Joel: If you are really nervous about getting up quickly then the way to go is Option 2. The Issue: you have successfull entered a possible single point of failure for your whole team, which may not be fully managable, unless you use mirrored servers. So you don't have get one server but two, each configured for max redunancy and on seperate gig switchs then you can insure uptime (barring building/system wide disaster) and that is expesive.
Note: (or Option 2.1 + Backup) Ghost Enterprise states it can do incremental backups to a central server (you need a base line Ghost on the Enterprise server and a good Network connection) Have not tryed it my self so I will not say how that works for quick recovery.
Mr. Smalle:
Past experience has taught me that SCSI out last IDE type drives in workstation and server environment. I have personally lost or had to repalce more two to three times as many IDE drives then SCSI drives (but I must admit the sample failure size for both is quite small).
cheers
mad |
| Thu 23 Jan | Albert D. Kallal | Gee, folks, having problems here?
Gosh!!
>>>I'm assuming that those two days that Joel quotes include the ordering, delivery and fitting of a new drive...?
Explain to me how a data backup gets you up and running? Explain to me how having a backup of all your work gets you up and running? In the last week I have installed about 3, or 4 new packages. Each one of those packages has updates, and probably more than a hour of “settings” that I will loose if I re-stall the package. As mentioned, I can use ghost to re-install windows with ALL OF my cool settings. However, that ghost image is only as good as the last image. I have a “clean” base ghost image. However, that does NOT address Joel’s question.
As mentioned, in a day I have all kind’s of ocx, and other registered “ActiveX” controls that I use during software development. In other words, I have to install/register all kinds of stuff during the day.
Only two days? Joel is being conservative here. While Ghost rocks for full windows re-sintall (less than 5 minutes), this does NOT address the problems of each users setup. Unless Ghosting is done everyday, or as Joel is suggesting that a raid/mirror be used, then you still have all that setup time.
In fact, even if ghosting is done every day, you still have one day of exposure anyway. (and, making a ghost image everyday is not always practical anyway) Ghost is ideal for the “base” install. Ghost is ideal for the company that needs word, Excel, and the email stuff pre-setup. The rest of the users data such as my documents and Email folders will reside on the server. This setup is ideal for the average Joe computer user. The average Joe company does not need much software, and what they have DOES NOT change. Developers are not daily computer users…sorry folks!!! (remember his name is not Joe, but Joel!!).
Unless you ghost every day, or Mirror as Joel suggests, then how can ANY OF YOU people think that a data backup helps here? How can ANY of you think that only 1, or 2 days is NOT the lost time? The problem here is not data, the problem is that in one day, all kinds of things get CHANGED and INSTALLED on a pc. How do you save THAT TIME!!!
Can anyone explain how one gets up and running with a good data backup that is not a mirror? Please do, because that dead obvious request by Joel has not really been answered.
It is so dead obvious that Joel is looking for a backup solution that not saves the daily work data, but the huge investment in EXPENSE of people time of configuring and setting up pc to work during the day.
Joel’s suggestion of Terminal Server was very good indeed. However, end users and developers require TOTTALY DIFFERENT kinds of pc’s (again, that is probably why he asked about TS). What is usually adequate for a end user is not for a developer. Hence, I don’t know of any software house using Terminal Server. It is usually deployed to lower costs in a company. TS also means that users are generally restricted in what they can do (I DO NOT mean security here!!). Installs of software, shoving in a CD into the drive with your favorite ActiveX library etc is not very workable. In other words, in a environment where things change, and you install software all the time, then TS will not cut it. Users NEVER have to install software in a large company when using TS. TS is restrictive in use, and in fact this is one reason why to use it!!
I love TS, but for a development house…hum, it probably might not work. If the all tools remain constant on each pc, then again TS might work. I
The other big bonus of Terminal Server is that then you can get to your desktop anywhere in the country anytime. High speed net means that you can work at home etc. TS also means that much data and work gets central (by force!). It can also increase company security for intellectual rights (For example, loosing a notebook due to theft will not result in loss of much work, since everything important is on the server).
You also have to ask what, and how much you want on your notebooks.
However, as mentioned, end users are at the opposite end of grand canyon as compared to developer requirements for a PC. Thus, general install and testing of stuff is NOT going to be an area which TS is going to work. (perhaps you could do that on the local pc’s, or a few special pc’s in the office for that purpose).
I will ask around, but it seems to me that a hard disk replication to images on the server would be the ideal solution. (and perhaps not even require raid).
Albert D. Kallal
Edmonton, Alberta Canada
Kallal@msn.com |
| Thu 23 Jan | Stephen Jones | >>>>>>>>>. Similarly the concept of having an OS partition and a Data partition: to ressurect such a system, you need to reinstall the OS (60 minutes for Windows XP including service packs) and only then can you start getting the user's data -- but what about all the little utility programs and customizations that the user did? The registry? etc.<<<<<<<<
Joel, the point is that you make the Ghost clone AFTER you have installed all you mention. It takes me 3 hours to set up my C partition with the utilities, shortcuts, and MS Office but only 12 minutes to do a complete restore.
Gigabit ethernet over Cat 5e (better than Cat 6) will cost you about $60 a NIC but the switches are expensive . I'd go for Gigabit copper to the server and 100TX to the switch.
The reason for getting SCSI drives is partly speed, but more so reliability, since top class drives are normally SCSI. If you're doing it for the desktop maybe not worth it, but probably worth it for the server. But you know your exact requirements.
How often is each worker checking work in though? If they're all worlking separately most of the time then local storage would seem to be the best.
What I do not understand is why on earth you would need each workstation to have a complete mirrored image. Get the workstations all the same, and simply keep a spare hard drive with the cloned copy on. Use another DISK not partition for the data. Then if the system disk goes just put in the spare one. If the data goes you'll have to use the backup, but if you say the data is not the problem.
The real problem here Joel, is that some of us don't seem able to understand why you need two days to get things back running.
Incidentally are you talking about your developers machines or the order and inventory database? |
| Thu 23 Jan | Alberto | Option 1, CITRIX, not Terminal Services.
As long as developers can install software too. |
| Thu 23 Jan | Stephen Jones | I've just read Albert's reply. Possibly I am not taking into account the speed at which you do changes. If it is infeasible to keep the Ghost backups up to date, then a RAID mirror would seem OK. For belt and braces also do a Ghost backup to a file server over the network every night for every workstation as well (though you might find the extra odds of creating an electrical fire outweigh the addional safety :-) )
However as you were elsewhere referring to the user not having an HD at all, I presumed that the non data setup was standard for everybody. |
| Thu 23 Jan | Andrew Reid | >>Raid is not the solution, it just moves the
>>problem from the disk to the controller.
Maybe I misunderstand RAID but if your RAID controller fails can't you just:
1. take the busted RAID card out of the machine.
2. Plug either of the mirrored HDDs into the normal IDE controller on the motherboard
3. Turn the PC back on.
Takes 5 mins. No lost data. Replace RAID card at your leisure.
Or is it more complex than that? |
| Thu 23 Jan | not my regular made up name | I can get my system reinstalled in 1/2 a day!
As far as your original question, Joel, I highly recommend the RAID solution.
OPTION 1. Although I love terminal services, I would hate to develop on it every single day. There's too much I want to transfer between my computer & the server that the client won't easily allow. There's also a mental dissonance that I can't quite shake.
OPTION 2. I have no experience with this. All I can say is that I don't like the sounds of it. ;)
OPTION 3. Yeah!!! Of course all of our servers have this, and it has been a life saver. 'Oh, looky there, a hard drive crashed. Time to call Dell' vs. 'Why the hell is server X down?!'
As for the last question, maybe it's time to hire that person to be on staff? These guys usually make good networking/tech support guys too. |
| Thu 23 Jan | crusty admin | If the controller fails, it could have corrupted your drives long before it actually died. That is why I said earlier you need minumum of two controllers and two hard drives. The cheapest configuration would be to mirror.
Scsi may be noisier, you don't need 15 k screamers though for workstations. IDE drives are cheaper by the dozen and worth exactly what you pay for them.
Computer costs have plummeted - true, but if you want reliability you still have to pay. The $299 walmart special is fine for mailing friends and surfing, but if your livlihood depends on the computer, don't look for the cheapest way out. 'Hey, I found a brain surgeon that will remove my tumor for half what the other guy wanted to charge.' 'What a bargain.' You get what you pay for, even in computers. I am referring to hardware ONLY. |
| Thu 23 Jan | Marc | Joel,
I’ve gone through the exact same thing myself. And unfortunately, I didn’t think to try posting for opinions, I simply tried each of you ideas (in the same order in face).
Terminal Server: As it has been said already, it is good for deployment but poor for development. No matter what you have for a server, it will be slower. You can test this by using the Windows 2000 Server TS Administrator (every Win2K comes with an admin TS license). You’ll notice right away that even with just one user one, it is sluggish.
Network Storage: This wasn’t so bad. Our switch wasn’t so hot, so I’m going to assume that a better switch would give better performance then I got in testing. But even with a poor switch, it did work. My problem was that booting up took way to long. I also didn’t like that we were stuck with all of our eggs (our data) in one basket (the server’s array). I ended up concluding that 2 days wasted on one developer was better than 2 days wasted on every developer (server goes down, you all go down).
Local RAID: This is what we ended up with. It worked great. We didn’t use stripes however, just mirrors. This was because of “controller fear”. My experience has been that when a control goes nutty, it will often corrupt you striped on both mirrors. But when it is just mirrored, only the mirror ends up corrupt (anyone else notice this?). By using other mirrored drives, if the control failed we could simply plug it directly into the standard IDE controller until the card could be replaced. |
| Thu 23 Jan | Justin | RAID? Backups? What is all this?
And why is Joel not applying his own costing logic found elsewhere in the site?
Ghost would be a good thing, particularly if you have a spare drive lying about, although this doesn't address the core issue of component failure in a business critical machine. A Ghosted drive does not help if the motherboard or PSU fails.
Solution: Build a developer spec pc, doesn't have to be super fast; just be adequate for development work. (Ghost hdd at this point - or not, your choice).
Test pc works ok, then put it in a store cupboard. Upgrade it periodically.
When a developer pc fails, immediately swap it out for the spare, reload projects from source code control and carry on. Meanwhile, the pc technician can fix the original machine 'offline'. Yes, you lose what was being worked on that morning, but that is also true in the event of HDD failure.
The main advantage is that developer time is not wasted. Think:
Developer down time (lost productivity etc) vs £200 for a spare pc.
What's your hourly consulting rate, Joel? $250? I'm willing to bet that a half day of it is worth more than the cost of some spare hardware (he says, neatly ignoring the difference between cost and price). |
| Thu 23 Jan | crusty admin | Justin, I think Joel's downtime is because a develpment pc can change many times during the course of a day. The one in the closet is outdated immediatly. |
| Thu 23 Jan | anonymous | Joel,
I think the problem with your backup strategy is that you aren't using backup software that knows how to completely backup Windows and do a 'bare metal' (Veritas term) restore. Typically the software will use some kind of bootable floppy or CD to get your machine up and talking to the backup server, and then it will restore everything including your OS, registry, data, etc. Most of the Veritas products are able to do this and I believe some versions of Ghost and several other Ghost-like products can do this. You shouldn't have to spend time installing the OS at all.
I know when I was doing some research on the subject a year or so ago Veritas had a product specifically targetted at workstations. I think it actually stores the backups in a compressed format on the hard drive on the server and only moves files to tape if they aren't used frequently. This allows users to request a restore of a specific file and not have to worry about loading tapes usually. I believe it is Veritas NetBackup Professional.
As far as hard drive reliability goes, there are definitely some SCSI drives with much higher MTBF. IDE is all about price, SCSI is generally about performance and reliability. The MTBF for most IDE drives is in the 500K to 600K range. The Seagate Cheetah drives are at 1200K hours.
If you can stand the extra noise, I also recommend using bay coolers for your hard drives. They are basically 5 1/4 inch frames with fans in the front to pull air in over the drives. Most OEMs design for cheapest cost and lowest noise levels, which usually means proper cooling suffers. Heat is the enemy of hardware. |
| Thu 23 Jan | Myron Semack | I like the private RAID idea.
I've had bad luck with those el cheapo IDE-RAID controllers. They're often plagued by poorly-written drivers. I've lost many hours to troubleshoot a Highpoint IDE raid controller.
The best solution is to invest in a 3ware IDE-RAID system, but those puppies can get really pricey.
Take a look at this:
http://www.accusys.com.tw/75.htm
I use it in my systems. It's provides hot-swap RAID1 with no drivers. It's a simple device, but works well. |
| Thu 23 Jan | Phibian | a) It struck me as odd that a single hard drive failure led to re-installation of several machines.
b) You can slip stream the service packs into the Win XP installation which speeds up the process considerably.
c) Taking 'several' days to re-install a couple of machines is clearly unacceptable in terms of a disaster recovery plan. What would you do if you had a fire or something? It sounds to me like you may have a bigger problem - even if you add redundancy with RAID - what will you do in the case of a loss of the physical machine?
Anyway, to answer your questions:
Option 1: Terminal Services.
-Adds three different 'single points of failure' (network, server, junky computers). If the network and server have problems (inevitable, even with RAID), your entire staff is non-productive.
-I'm pretty sure that triple-monitor clients are not supported.
Option 2: Network Storage.
Q. Is this going to be slower than local drives? A. Yes. Think about it. A single PC can use bandwidth of 1000 Mbps alone with a standard ATA 133 MBps HD. So if you have multiple PCs accessing the server, the amount of bandwidth they can use will be less than if they were just using a harddrive on the local machine. You can add more than one network card to the server, which would help - but there's a limit of how many you can add. Furthermore, there's an overall bandwidth limit on switches. Most don't have a throughput of max speed times # of ports. Finally, although both 133 MBps and 1000 Mbps are theoretical numbers, there's a higher overhead in the network world than the harddrive world, so you are more likely to get the 133 MBps than you are to get the 1000 Mbps. So a hard drive will beat the network any day.
I should add that I have some idea of what it's like working in such an environment. We have a fairly server-centric approach with all data stored on the network - although not as extreme as the one you propose. We've had so many minor glitches relating to this apprach (the switch acting as a hub, network going down, developper doing something bad slowing down the server to a nearly unusable state etc etc) that we've lately decided that we would be more productive with a different approach. The biggest issue is that if there are any problems at all with the server or the network - we're out of business until the problem is fixed.
Anyway, if you are interested in learning more about this option, I'd recommend taking a look at iSCSI. However, FWIW, I think this approach is somewhat at odds with your 'keep developpers happy by getting them the best equipment money can buy' philosophy.
Option 3: Private IDE RAID.
This is the option I'd choose if I had to pick one of your three options. But I would note that while it adds a level of redundancy (a good thing tm), it also adds a level of complexity (a bad thing). My personal experience (admittedly limited and somewhat second-hand) with RAID is that it is generally causes more downtime than it prevents. This is particularly true if you skimp on the hardware and/or have the RAID machine setup or maintained by anyone who does not have a thorough (read: expert) handle on what they are doing. If you are not a RAID expert, I'd consider looking at the alternatives to RAID.
(you did ask for 'opinions or other suggestions'):
a) Purchase identical systems. (Easier to isolate hardware problems, easier to implement an effective disaster recovery plan)
b) Replace said systems at least every two years. (reduces likelihood of failure)
c) Place all hard drives in removable drive bays. Keep at least one spare harddrive for every ten machines (harddrive should be identical to the harddrive currently in those machines). (To put in new drive, turn off machine, pull out bay, replace with spare - fast and easy)
d) Keep the operating system and programs on a physically separate drive from any data. (If one drive in the machine fails, you are either reinstalling/restoring programs etc, or restoring data from backup - but not both!)
e) Use Roaming profiles. (if a client fails, you keep your settings. If the server fails - well, you've backed up your settings with your 'excellent backup strategy' - right?)
f) Keep a master disk with at least the basic OS and frequently used programs. Apply any service packs etc to the master disk. You can then Ghost from the master disk to your replacement drive, or even better, get one of those cool faster hardware things that copies from one master disk to a bunch of disks (hardware based Ghosting).
OR
You could also substitute the hard drive from one of your current (working) machines instead of a master - although you'd be stuck if all of your machines were toasted somehow.
Incidentally, you should be using Ghost or something like it if downtime is a problem for you, no matter whether you have RAID or not. RAID is not a cure-all, and like everything, can also fail. And if the RAID controller fails, there's a very good probability that it will take your RAID sets with it - in which case you are back where you started.
g) Really concerned about downtime? Keep a spare machine.
The bottom line is that anything can and will fail, so you need to figure out a way to a) isolate failure to the smallest number of people possible, b) minimize the impact of failure in terms of time and money and c) minimize time of failure recovery.
RAID solutions will help towards those goals - but they should only be a small part of your overall disaster recovery plans. |
| Thu 23 Jan | Prakash S | Phibian,
Is there any website/'s from where you picked up all this info. I am sure it comes with experience, but.....
thanks, |
| Thu 23 Jan | Joe Smalle | Myron,
The 2 port 3ware controller is actually affordable. I bought a few a while back for ~$120.
1 2 port 3ware card + 2 60GB 7200 RPM IDE drives results in a nice 60GB hardware RAID 1 subsystem that you can get for about $300.
That's only a little bit more than the cost of 1 40GB SCSI drive. |
| Thu 23 Jan | sedwo | Coming from working at 3Com and the one who worked on the firmware for network booting (PXE, etc.); I recommend your proposed network boot solution. Good PC's, great network architecture, and kick-ass server with mirroring for peace of mind. We ran a good batch of ~10-15 computers from a simple mediocre server with high speed ethernet, and although Windows 2000 took a little longer to boot, it wasn't a big deal. Once it booted with a virtual network C: drive, the thing ran without any notice of where the files resided. 3Com NIC's come with PXE ready and 2000 has our code base in it. Give your PC's 256-512 megs of RAM and your fine.
Done deal. |
| Thu 23 Jan | codemonkey | This may sound kinda crazy, but I've been doing my development within VMWare. I make an occassional back up by powering off the VM, and copying it onto a network drive overnight. You do lose a little bit of speed while running in a VM, but with a reasonably fast box, it's pretty good.
If your machine does die miserably, it's pretty simple to get a replacement box, copy the disk files over, and be productive again. |
| Fri 24 Jan | | Stephen, I'd say that the 'D' (data) drive should be a separate drive entirely which means it can be swapped out to another PC if ever the OS/software drive goes tits up. That means the developer is instantly productive again, albeit that they miss their favourite settings and utilities and such. When they get their own PC back again they'll get them back, so they will just have to be patient.
Other than that, private RAID. If the RAID controller does barf, would you rather lose one developers data or everyones? And it sure as hell is quicker accessing local drives than network ones, your developers would hate you if you forced that on them. |
| Fri 24 Jan | Just me (Sir to you) | Could someone tell me what the problem is with overnight gosting (every night, every dev machine) on a fully swiched network. This was my plan for our shop, but there might be some snags I overlooked.
Here is what I would like:
dev machines (hardware all image equivalent)
I
switched 100Mbs
I
GBit line to different building (for offsite)
I
switched 100Mbs
I
cheap machines dedicated to storing the images
one standby dev hardware per 25 devs.
Does this sound ok? dumb?
I can second the statement that Raid sometimes does more damage than good, although I only have experience in server SCSI Raid, not desktop IDE Raid. |
| Fri 24 Jan | Philippe Back | Something that I've not seen is VMWare.
It's not a perfect solution but it can save the day if needs be (it worked for me more than once...)
A VMWare image can be set as a complete developer configuration (Win, VS, SQLServer, Office, whatever) and stored on a network or removable drive (like FireWire or USB2).
As data lies on the central server (along with CVS), you can just take a blank machine, install VMWare on it (takes 2 minutes on a Win XP preinstalled PC), copy the image, boot it up, checkout the codebase and there you go. Of course, it is not as efficient as a standard config but it will help you continuing the development right away. |
| Fri 24 Jan | Jan Derk |
I'm making an assumption here that you bought of the shelf PC's. So if you do have those Seagate Cheetah SCSI's installed, flame me ;)
I would recommend option 4:
OPTION 4: Get reliable hard drives.
Why not option 1..3:
Like others say: don't create a single point of failure for all your developers. If the server/network goes down, you all will be drinking very expensive coffee. And for raid, it has problems too. Wacky controllers can corrupt both drives. If one raid drive fails (twice as likely than a single drive PC) you still loose time buying/finding the spare drive and installing it. If you go raid make sure it's mirrored and get a A+ quality controller. Plus all these solutions take a considerable amount of time and money to setup.
Why option 4:
It's the least complex, cheap and reliable. A certain someone mentioned that a programmer should get the best tools he can buy. When reading this most think of software not hardware. Companies buy off the shelf PC's without considering what components go into it. Many A brand PC's shipped with notoriously unreliable IBM GXP75 drives. The saying goes that you don't get fired for buying IBM. In this case I think they should. Buy reliable drives and you will suffer from hard drive failures a factor 10 less.
Drive reliability data is readily available here (registration required):
http://storagereview.com/map/lm.cgi/survey_login
It shows that SCSI drives are indeed much more reliable. There's a reason why SCSI come with 5 years warranty and most IDE's with 1 year. Personally, I still prefer a good IDE drive as SCSI generally make more noise. So how much noise do drives make? Check here (only idle though):
http://storagereview.com/comparison.html
I like my systems reliable, quiet and fast. All in that particular order. |
| Fri 24 Jan | Simon Lucy | Hmmm, there's more round the houses, cross the road, get a bus, miss the train, walk home and end up next door to where you started from on this thread than I can remember for some while.
I lean towards keeping all sources on the server, even in multiple developer scenarios but that doesn't solve the problem of the hot fix 'I just lost my OS and my registry and my favourite tools' mess.
Personally I live with it, if only because the one good thing from having a hard disk crash on a workstation is that it gets rid of all the crap on the drive as well. Life is too short to get rid of all the squirrely utilities and COM objects you evaluated.
About the only solution that gives you immediate startup is a disk duplex system, two controllers that write the whole data to two drives simultaneously. If you can't find a duplex driver (and on my cursory look I didn't find one), then you can use RAID 1.
RAID 1 is disk mirroring with a single controller and is the highest fault tolerance with a single controller. Forget about RAID 4 and 5 they are really only suitable for servers.
http://www.jwilcox.com/raid_defined.htm for a reasonable definition of RAID.
I'd still keep all the sources and data on the server though. |
| Fri 24 Jan | BC | We do fast machines with local HDs. All user data is stored on the server with synchronization to the local machine, for offline use. HDs are imaged with Ghost.
A hard drive dies, install the new one, pull the image from the network and log the user in. All done.
BC |
| Fri 24 Jan | Jeff | Why not just have two PCs on every developers desk. You install something on your main machine you then install it on the other one while you are doing some work. PC1 goes down you just move to PC2 and download your latest code from some network source. The other nice thing about this is when you have one of those days where you install something on PC1 and it breaks some other program you can go right to PC2 if you need to get back to work quickly and just have PC1 image itself off PC2 that night or even during lunch. Is it perfect, I don't know, but it sounds simple enough. |
| Fri 24 Jan | Tj | I don't understand what is wrong with wanting more reliability with one's machines. Backups do not work. Often I have to take down a piece of information when someone calls and I have no pen, so I open up metapad and save it to the desktop. If my HD then dies a few minutes later, before a backup is made, I have to get back in touch with the person and seem unprofessional.
Option 3 is interesting. In Hennesy&Patterson, it seems that the most important thing with RAID 0+1 is 'mean time to repair.' Since the two mirrored drives are in the same environment, when one pops it's often a matter of time before the other does too. How does the controller signal that one has errors? A software popup is probably more unreliable than any drive, so are you meant to keep an eye on the blinkenlights?
Options 1 & 2 look dangerous. Maybe your entire staff has learned how to deal with an app server. But what about your new guy, who you've started out on coding 'Hello world' and is staying late after everyone left, working on internationalization to impress you? Should he troubleshoot the shared server? What if it was a faulty switch? When I used hp-ux, I wasn't absolutely glad to be dependent on the sysadmin. Errors in those systems tend to have global consequences and are painful to debug.
Obviously these are theoretical questions, but they're basic. Where does one go to answer them?
BTW, aren't there SCSI problems with WinXP Pro?
http://forums.storagereview.net/viewtopic.php?t=1758 |
| Fri 24 Jan | Philip Dickerson | The SCSI slow performance problem is a known issue for Windows XP and was fixed with a new NTFS driver long ago in both a hotfix and in Service Pack 1 (Sep-2002). For example, see:
http://support.microsoft.com/default.aspx?scid=kb;en-us;308219
Hard Disk Performance Is Slower Than You Expect (with SCSI and NTFS). |
| Fri 24 Jan | Philip Janus | Joel, regarding your options -
1) TS Client - your developers are now working over a 100Mbit pipe instead of the hardware architecture that we've all been driving for the past fifteen years. In addition, you can't multimonitor TS the way you can in the OS (when I use multiple monitors, it's like Tom Cruise in 'Minority Report' - grabbing and dragging windows around to where I need them. )
2) Net PC's. There's a reason this 'solution in search of a problem' was stillborn. You're letting architecture get in the way of what your developers want to do. Let me also point out that if *I* applied for a job and was told everyone worked on NetPC's then I would keep looking. (This applies to point (1) above, as well)
3) RAID. #1 question - why IDE? Why not go SCSI? Again, there's a reason that any failure-tolerant system has a SCSI architecture. Price out boxes with three 18GB SCSI drives. (Note - you also can get drives that are 2x as fast in the deal).
Also, make sure you're getting the right kind of RAID. Either mirroring or RAID 5 will buy you breathing space while you replace the dead drive. Make sure your RAID solution can rebuild on the fly. When you buy the systems, buy at least five spare hard drives and put them on the shelf. If you're very, very careful you might be able to get systems with hot-swappable SCA drives (which always seem to be on clearance)
If you do go with IDE RAID, make sure you can get either mirroring or RAID 5 (*not* striping).
Finally - I've found that emails to Alienware and Polywell have gone unanswered. I just got a nice fast reply from a company called xdream-machines.com, which has really nice configurators for their (intelligently configured) systems, and seems to be reasonably priced. However I haven't purchased from them, so can't comment there.
Best of luck!
Philo |
| Fri 24 Jan | Dino | If you have a large number of developers I would suggest setting up a warm backup system.
Must say this is an expensive solution, both in setup and maintainance, but at least it prevents you from having 50 developers idle for 1-2 days at a cost of min 50$ / man hour ... ummm that's 20.000$/day.
For small development, shops probably a RAID on the server, backups, offsite backup archives and UPSs will prevent most of the trouble, but downtime is still highly probable.
Finally, for developers I would pick up fast machines, with tons of memory and harddrive such that compilation takes a reasonably small amount of time and uses only local storage (instead of bandwidth) |
| Fri 24 Jan | RH | One small point on disk drive reliability: keep them spinning. Don't power down the computer when you go home, or on vacation for that matter. Disable the power saving feature that shuts down drives. Stopping and starting, heating up and cooling down, are not good for them.
I believe at least part of the reputation that SCSI has for greater reliability comes from being used in servers that run continuously. |
| Sat 25 Jan | Li-fan Chen | http://www.haifa.il.ibm.com/projects/storage/iboot/index.html explains a proprietary hack by IBM in Israel trying to fool the BIOS into booting from a network drive using the iSCSI protocol. I don't know much iSCSI and there's very little information about this project so maybe it is not very useful info :-) |
| Sun 26 Jan | John Cavnar-Johnson | 1. Developing through TS (or Citrix) doesn't cut it.
2. Your network goes down and everybody's hosed.
3. SCSI RAID-5 is the only way to go to achieve what you want. Bite the bullet and buy your developers a server-class machine. They'll love it. You'll have peace of mind. Calculate the cost and see if it would be worth it to avoid this past week. If it is, do it. This is a proven solution that works. |
| Sun 26 Jan | WNC | Dual PCs for your developers.
SCSI RAID.
Hot swappable hard drives.
Best Options. |
| Sun 26 Jan | Alex | Since everyone else has, I'll chip in with my opinion:
RAID 1 in the desktop. IDE for price, with a reputable reliable controller (ie: 3ware, Adaptec...) and buy 3 identical drives per machine. Your drive will not blow up today, it'll blow up in 18 months when the specific model is discontinued, the new '60 gig' HD has a different configuration and may or may not be discontinued or only available from the budget line of the manufacturer. While I'm at it, whatever happened to 10 gig drives?
And now for the ever popular 'How come it's taken you 2 days to get everything back?' Well, I can see that very well, been there, put in the long hours and fought my way through the small little things that 'should've been,' the vendors that are 'back-ordered' and unresponsive, etc.
Now, if I spec a server, it has redundant PSU, hardware SCSI raid with hot-spare, spare HD and PSU must be available on site and ram is ECC (usually standard with whatever can meet all previous requirements.) The main reason being that when the shit hits the fan, it's really just a matter of having your colo facility call you about 'the bleeping server of yours has been beeping continusously for 2 hours' that are resolved in 5 minutes after swapping the PSU and/or HDD that blew up. |
| Sun 26 Jan | Eddy Young | ' Maybe I misunderstand RAID but if your RAID controller fails can't you just:
1. take the busted RAID card out of the machine.
2. Plug either of the mirrored HDDs into the normal IDE controller on the motherboard
3. Turn the PC back on.
Takes 5 mins. No lost data. Replace RAID card at your leisure.
Or is it more complex than that?'
In theory, that is how it is supposed to work, but in practice, I have never seen it so. |
| Sun 26 Jan | Gregor Brandt | I use the following process:
A development computer has 2 hard drives, 1 for OS 1 for data.
I use 'second copy' to constantly (every 15 minutes or so) keep the data drive backed up to my server.
Only when the OS drive goes out am I in for a bit of work, and the backup is very current if the data drive goes. |
|
| need some advice | Thu 23 Jan | dummy |
| Im trying to decide whether its better to say something or just ignore it, or if there is something I should be doing about it.
This is really starting to bother me a lot, and what happened to day is just another example:
My hard disk died yesterday and I have to get my web server working again. The configuration was not simple (to me anyway) and had all been done by the system administrator. I have tried not to ask him for any help because Im pretty sure he thinks Im stupid, but I wasted hours yesterday by not asking about certain things.
This morning I was having more trouble and tried everything I could think of for an hour, and finally asked. It turned out to be permissions and I should have thought of it. But I didnt. I am losing confidence and I used to think I was smart. I have always been able to figure out anything I had to. My manager and the system administrator have configured all the systems and its all obvious to them. Any time I ask a question it they seem to be utterly exasperated with me.
Im thinking about asking directly Do you think I am stupid? |
| Thu 23 Jan | dood | get on a chat for the subject and bounce stuff off people.
Make a trouble shoot list for next time.
what is not happening
what does this thingy depend on , the os ? an app ?
whatever it depends on , is it running ? is there anything in the error log ?
When you ask the other guy they are prabably annoyed by the interuption not the question/you.
People hate to be interupted. |
| Thu 23 Jan | Joel Spolsky | Here's my philosophy: during the hour it took you to figure out things, you learned a lot accidentally, that didn't directly answer your question, but it's making you a smarter person.
So I usually think it's a good time to try to figure things out for yourself before you start asking questions.
Of course, at some point it's just TOO frustrating, and then it's OK to ask -- or ask for hints and pointers! |
| Thu 23 Jan | Eric Debois | Dont ask 'Do you think I am stupid?'. He'll say no and you'll be left wondering if he's lying. Besides, what good does knowing what he thinks really do you.
You are some kind of web developer? Are you expected to know that stuff? If so, how come you dont? Have you been properly breifed on the setups to begin with? |
| Thu 23 Jan | Matt H. |
Some people are like Wolves. They can sense self-doubt - they pick up on it as weakness.
Then, they intimidate you into thinking that you are stupid. Or, they take immense joy in correcting you - to get the same net effect.
Don't let it bother you. Focus on what you are good at.
I have been in this situation before, and every time I tried to make an issue of it, it just didn't work out the way I'd hoped.
Some people have a vested interest in making you look bad. It might not be conscious or on purpose, but your sysadmin may feel like, at some level, he is in competition with you. Your manager may feel threatened by you. (This also comes from insecurity 'If he looks good, I look bad.')
My advice? Start solving thier problems in a way that makes them look good. ('Secrets of consulting' by Weinberg)
If anyone has a way to beat this game, please post it, by my only advice is to not play. Your best bet is to get someone to overhear some of those conversations and say 'Yes, Joe really was being rude to you back thier, it's not you.'
If you can get an authority to step in and say something like 'Joe, I overheard your discussion with so-and-so, and I really think your were out of line (or treated him shamefully or whatever.)' That's great, but, honestly, something about it feels too much like Whining for my tastes.
Other advice? |
| Thu 23 Jan | Matt H. |
Another thing you can do, as Joel hinted at, is sit down with your manager and find out if you are asking too many/not enough questions.
As you get more sr., I think you'd be expected to figure things out for yourself more - as you should at least know where to look. A kid fresh out of school might have to ask questions that would point him in the right direction. (CodeGuru, CodeProject, MSDN, etc.) |
| Thu 23 Jan | dummy | I have done a lot of web programming but not a lot of system adminstration stuff, although I have done some. I can configure Apache and I know Unix, but not nearly at the level of the system administrator here and my manager. I've been here about a year. I have done a good job, according to my reviews.
This is all a tone-of-voice thing. I sense that they both see me as stupid, although if they really thought that I would not still be here.
I'm afraid to ask stupid questions that I could have figured out myself if I had been concentrating on the problem, rather than worrying about looking stupid and what they think of me. My concentration and confidence are suffering.
Mabye the best thing is to ignore their tone of voice completely and keep telling myself I am an intelligent person and learning more every day. |
| Thu 23 Jan | programmer | Don't worry about it. I have dealt with 'tone of voice' issues before, and usually it's their problem -- that is, the person who is using the condescending/belittling tone of voice.
I think Matt H.'s advice is great -- don't play the game. Some people DO have a vested interest in making you feel bad about yourself.
People who have worked somewhere for a long time sometimes assume that everyone -- even the newer folks -- should already know everything. They forget that they, too, had to ask a lot of questions when they first started.
Seriously -- don't worry about it. Sounds like you were just having a bad couple of days. |
| Thu 23 Jan | dummy | I actually don't mind at all having to spend hours and hours trying to understand their system. But then I'll get in trouble for taking too long, and they'll say I should have asked before wasting all that time.
It feels sort of like a catch 22. |
| Thu 23 Jan | Brian R. | Dummy, if you are a programmer, then that is what you are getting paid to do, not troubleshoot systems.
You can learn systems troubleshooting at home on your own dime. Make them fix the HW, it's their job!!
The whole notion of intelligence is a false argument that you have created in your head. You would be smart as a sys admin IF that was your job.
You will only fill up your fixed limit of resentment that every co. allows before getting fired, if you try to understand everything on the employers time.
You should make your problem their #1 priority so that you have more work to do. Getting stuck will make you look BAD, not stupid. Dwelling on your weaknesses is a great way to learn, but not a great way to keep a job. |
| Thu 23 Jan | Stephen Jones | Problems wiith computers fall into two categories.
a) those caused by user error
b) those caused by inhuman technical difficulty and/or exceptionally bad design.
Mistakes other users make can fall into either category. Mistakes I make ALWAYS fall into the b) category.
Remember that, interiorize it, and then call somebody over to fix it and make sure he knows from your body language whose fault it is.
Do try and find out the problem yourself first; view it as an act of selfish altruism. You remember the things you solve yourself much more easily than the things somebody tells you. |
| Thu 23 Jan | dummy | Yes I have learned more about the system since yesterday and I am always glad to learn. System administration is not my area although the case could be made that all programmers should know something about it. But there is an awful lot to know and sometimes I should just concentrate on my job.
My web server has to work with XML and mod_perl and certain things would have taken me a century to guess. |
| Thu 23 Jan | dummy | I just wonder if it's ok, next time one of them talks to me that way, if I say 'you know I'm not stupid, I'm just not that familiar with this particular thing.' |
| Thu 23 Jan | Brian R. | As for myself, I have what I could call 'slow smarts'. I will say something not thought out, then figure it out as I walk away.
But I will go back to my drawing board and figure, and find out about a lot of stuff. You sound that way too.
Some people have what I call 'quick smarts'. They usually figure things out on the fly, but are impatient toward prolonged thought.
God created us all different, so just try to appreciate and make use of that. |
| Thu 23 Jan | programmer | It's hard to decide WHAT that point is, where you have tried to find the solution and now need to ask for help.
One time, I was doing something fairly complicated -- something not often done in my workplace, concerning temporary data storage -- and I thought I followed the instructions perfectly. I called the database administrator and told him, 'Okay, I'm done, now you can do your thing.'
(In order for him to do his thing, I had to do my part correctly.)
He called me back and said, 'It's not working ... you must have done something incorrectly.'
I spent a WHOLE DAY looking at what I had done -- puzzling over it, trying to figure out what I had done wrong. I couldn't find anything -- I felt so frustrated!
I called him back and said, 'I can't find what I did wrong. Can we meet and talk about this? Maybe you can find what I did wrong.'
Before our meeting, he called me and said, 'Uh, oops, sorry, you didn't do anything wrong, I goofed.'
So, I learned a lesson that day -- when something isn't working, and other people are pointing at you saying it's your fault, don't automatically assume it IS your fault. It may not be. |
| Thu 23 Jan | dummy | Brian R.
I have 'slow smarts' and these 2 people have very 'quick smarts' and that is probably the cause of all this. In order to figure something out I have to spend time alone concentrating and/or talk it over with someone who is patient. Even if they don't know, talking about it can help me understand.
In a tense situation, my mind will often go blank and I will forget obvious things. They never experience this so they interpret it as dumbness.
A person with 'slow smarts' can have a very high IQ and be just as intelligent, I believe. I can tell that I'm smart, and past experience, grades, tests, etc., proves it. But I am losing all my confidence! |
| Thu 23 Jan | Just me (Sir to you) | System administrators are a different breed. They think that all (l)users should keep their filty mittens of 'their' bu-ti-full systems, and they 'just know' that everybody that is not a system administrator must have the IQ of a nematode.
Don't worry. You do your job, they do theirs. If everybody in your company was a sysadmin, all they would ever do is hang out on IRC and recompile kernels. |
| Thu 23 Jan | programmer | I love this phrase, 'slow smarts.' Never heard it before. It nicely describes my own kind of intelligence, and it helps explain why I've found myself in situations like 'dummy' describes. |
| Thu 23 Jan | dummy | Yes it really describes what I've been experiencing for the past year. I know I'm smart and can understand anything I concentrate on. And I don't actually learn slowly. But in a stressful situation when someone is obviously impatient I just don't function well.
I guess the point is that I have to feel relaxed in order to think effectively.
I have been in lots of stressful situations where, for example, I had to fix a live application, and in those cases the stress doesn't bother me at all. In fact I concentrate better under that kind of stress.
It's the interpersonal stress, possibly, that makes me feel stupid and prevents me from thinking. |
| Thu 23 Jan | pr>{@c==bs}/p | Often this type of intelligence is no more than remembering sequences of mouse clicks, it's kind of like the C drones who merely remember syntax, the fact that they know something that you don't somehow represents intellectual prowess. Generally this type of knowledge has a learning curve of about 2 days.
Get a dummies book and join them. |
| Thu 23 Jan | dummy | People know different things and no one knows everything. |
| Fri 24 Jan | Robert Moir | Just ask yourself: Could they do your job? I bet they'd have 'dummy' moments too if they had to write production standard application code.
I notice that someone was describing system / network administration as 'remembering a series of mouse clicks' so I guess the disrespect flows both ways between programmers and system admins.
Of course, if you tell your system admins their job is just remembering a series of mouseclicks then screw up a sysadmin type job, don't be surprised if they DO laugh at you. After all, the difference between you and them is they can remember a series of mouse clicks. |
| Fri 24 Jan | dummy | They are good at both system administration and programming. I have 10 years experience, am pretty good, and am always learning. But someone will always be better than another person at someone. We don't have to all feel we are in competition with each other, always finding a reason to look down at each other. We could be helpful and encouraging, and then learning and working together could be a pleasure, instead of just a stressful job.
I could be reading more into their tone of voice than they really intend. Sometimes they're very busy and are annoyed at interruptions.
I hate feeling that someone thinks I'm stupid just because I don't know everything they know. I'm sure there must be things I know that they don't -- but even if there weren't there is no reason to act condescending.
The dilemma is I have to work there and I don't want to dread going to work. I don't know how to fix the situation, or if there is a way. I can try to become less sensitive (I have). I can try to become smarter (I'm trying but that can't be done over night). I can try to reason with them -- I haven't tried that yet. It would be hard because everything I think of to say sounds like a criticism or complaint, and I know that would only make things worse.
Is there anything I could say or do that would improve the situation? As I said, one of the guys is my manager, so I have to be very careful not to offend him. And it would be a mistake to offend the system administrator, because we all depend on him for everything. |
| Fri 24 Jan | Just me (Sir to you) | I think the idea here is not to compete but to complement. Look at what your job entails and concentrate on becoming an expert at that. |
| Fri 24 Jan | HeyCoolAid! | I agree with Just me (Sir to you). I know the things I'm good at, and the things I'm not. Network stuff isn't one of them... I'm a programmer and I'm good at it. We have Network guys here to maintain everything. That's all they do and they're good at it. When I get to the end of what I know when trying to configure something, I just walk down the hall and say, 'Hey guys, I'm trying to do such-and-such but I don't want to mess anything up. Can one of you give me a hand?' This approach makes everybody happy. Me because I don't have to deal with the darn thing, and the Network guys because I didn't mess with their system. |
| Sun 26 Jan | Robert Moir | Just remember they hired you because they believed you have something they need. No one can be good at everything, it just ain't possible.
You could, I suppose, ask your manager if there is any training material they could provide to you to allow you to fill in / assist in that role when the full time system admin isn't around.
Oh, and as for not offending the system admin because you depend on him for everything? I'm one of the most curmudgeonly system admins I know ;-) but I don't think I outrank everyone where I work just cos I got root access.
There is still an obligation to treat others and be treated by others in a professional manner and if this is missing from your workspace then your manager should be obliged to address it, unless your manager and or employer sucks, of course. |
| Sun 26 Jan | Brian R. | Dummy,
wrote, 'I have 'slow smarts' and these 2 people have very 'quick smarts' and that is probably the cause of all this.'
exactly. I have the same problem.
'In order to figure something out I have to spend time alone concentrating and/or talk it over with someone who is patient. Even if they don't know, talking about it can help me understand.'
That is totally me. I have to write things down in order to 'have a conversation w/myself' before I do something. Talking to others also works.
'In a tense situation, my mind will often go blank and I will forget obvious things. They never experience this so they interpret it as dumbness.'
Ditto here.
'A person with 'slow smarts' can have a very high IQ and be just as intelligent, I believe. I can tell that I'm smart, and past experience, grades, tests, etc., proves it. But I am losing all my confidence!'
I have a high IQ wherever I take one of those types of exams. One guy I worked w/had a high IQ and quick smarts. He was in jail once (wrongful arrest) and had top surveillance because he scored highest in the jail on an IQ test - your sysadmin might be similar. IT does not attract people of average intelligence.
You and me are more concept and language driven (even language is conceptual) than the average person. Getting in a dangerous situation might not scare you, that is precisely because you are able to handle the situation as a concept, and not just as a physical reality.
Hate to put it bluntly, but some guys are physical thinkers. They excel at solving physical problems. They can't find any sexual attraction to a woman, for example, unless she has certain measurements - breast, hair, etc. because thier brain is wired to never have 'head in the clouds', only very concrete analysis.
You and me get tripped up because we are always gazing at the concepts of what is occuring around us. What are we, one in a hundred people, or just a sizeable silent minority? |
|
| will Linux be mainstream OS, JOEL opinion required | Thu 23 Jan | Penguin |
| Want to have an opinion by Joel and all the gurus on this Forum
on Linux
1. Is it good?
2. Will it slowly become a mainstream OS as it is free,
all the governments are adopting it,
even some consumers are using it, and MS does not seem
to have a very good answer against Linux |
| Thu 23 Jan | Prakash S | Crystal Ball update: Joel is still working on his Crystal Ball Project, which will be in Beta by the year 2750.
Repost then! |
| Thu 23 Jan | Eric Debois | Weird question or bad troll. Joels opinion required. |
| Thu 23 Jan | Jeff | Is Linux good? Depends on your definition of good. Good aspects of Linux are it's stable and powerful. Bad aspects are ease-of-use and application support. In most desktop situations the bad aspects outweigh the good.
Will Linux every be a mainstream os? No, not for desktop users due to the reasons above.
Generally Linux is a poor choice as an average user's desktop os. However for a server os it's stability and powerfullness may outweigh the downside of its useability and lack of application support.
What governments are using Linux? |
| Thu 23 Jan | | 'Joel is still working on his Crystal Ball Project, which will be in Beta by the year 2750'
Since the CBP will not be ready until 2750, how do you know it will not be ready until 2750? Hah! Gotcha! |
| Thu 23 Jan | | 'Bad aspects are ease-of-use'
It depends on what you want to do with it. My desktop *n*x system's email is far easier to use than anything I've seen on You Know What, for example.
'and application support.'
ROFL! |
| Thu 23 Jan | John Topley | 'MS does not seem to have a very good answer against Linux'.
Last I heard, Windows was doing quite well. |
| Thu 23 Jan | Better than being unemployed... | *sigh*
Another religious war starts up.
Everything has got good points and bad points. I like Linux because it's a good low cost server solution and scales well across a distributed system, and I like Windows because it's got a good UI and desktop apps.
And why is Joel's opinion so important to you? |
| Thu 23 Jan | Stephen Jones | Linux is probably as easy or easier to install than Windows now, especially considering that you can install all the apps with the OS, instead of having to do it separately.
However most people never have to install Windows so the question doesn't arise. And as people start buying Linux preinstalled the two OS's will be on a level playing field.
Both OS's now are incedibly stable, so the choice comes down to the apps you use, and most things are still biased towards Windows.
So we will see Linux at two levels; at the bottom level where people just want to surf the web, write a few letters, and maybe edit a few pictures, and in very large organizations such as government that standardize on it and have apps custom built for the OS. |
| Thu 23 Jan | Just me (Sir to you) | There are many reasons some governments are adopting Linux. None of them have to do with technical considerations or TCO, as some like to pretend.
1. Nationalism: Some countries think they are better of supporting the local Linux distro, than shipping their money to a US company (this is an illusion, especiially in the European theater, see 2)
2. Governments have been lobbied to dead for decades by IBM, who take Linux as a loss leader for their highly lucrative consultancy play, with a nice serving of hardware profits on the side.
3. In government all personnel is seen as a sunken cost. So if a project runs into 1.000.000$ in salaries and 10.000$ in software licenses, the cost of the project from the government point of view is 10.000$.
4. You are right that 3 ignores external contracting. The external contracting is however based on largely static predefined budget, so no cost savings can occur there.
5. Governments almost by definition operate in a monopoly market. This means the quality of the end solution is not a major issue, since their is no competition in the services offered through the solution.
6. And last but not least: technical illiteracy. Those with decision power in government are mostly technical analphabets (it could be argued this is not restricted to government circles).
Any business that takes government adoption as a lead for a private tech decision is in for a big surprise. |
| Thu 23 Jan | Ralph Chaléon | Window user friendly - Linux stable scalable.
I heard this one million times.
At my company, we tend to use Solaris because it is the best OS for architectures based on TCP/IP networking.
Linux is not bad to learn UNIX systems, but it has really SEVERE flaws (RAID support is one of my favorite).
I know I'm rude, people did wonderful things using Linux :
http://space-simulator.lanl.gov/
but I'm just tired about all this hype. Linux is not THE stable alternative for Windows. |
| Thu 23 Jan | Stephen Jones | I agree that governments are going over to Linux for reasons that may not be applicable to private industry.
It is not however the wish to send money to the llocal Linux distro, as opposed to a US company. There is in fact little money going to the distro. but the point is that non-US governments are very rightly worried about giving full control of their computer environment to a foreign monopoly which doesn't even show any respect for its own courtry's laws.
Secondly governments have power that private companies don't. The tax authority is not going to buy MS Word in case your tax return is sent in an incompatilble format. It just marks you as a late payer and slaps on the fine!
Thirdly governments often need only one or two specialized apps in each department; you're not going to have all the different little applications you get in a private office.
Third world countries also simply can't afford the ridiciulous license fees. Now that the BSA is putting oressure on governments you are seeing Linux take off (Jordan is an example).
Hopefully what we will get is a kind of uneasy truth. Linux will be good enough to keep the price of Windows down, and force MS to keep innovating so it doesn't lose market share. |
| Thu 23 Jan | Ian Stallings | I never thought I'd say this but I agree with Stephen completely. His reasons for governments choosing Linux seems to be right on the money.
I am not gonna claim that Linux is the most user friendly OS but the distros I have used lately (Suse and Redhat) have been very easy to install and have everything the average user needs.
The way I see it is this - when Linux becomes a true threat to MS they will do another 180 degree turn and start pumping out MS Linux distros. In the past Microsoft has been willing to turn on a dime when the need arises so who is to say Microsoft wont oneday embrace Linux and exploit it like they've exploited other markets? Although the licensing for the Linux kernel demand that it remain free that doesn't mean Microsoft cannot sell the same things that all the other distros sell. |
| Thu 23 Jan | John Topley | That will never happen. Windows is a religious issue to Microsoft. What value would they get from being just another Linux distributor? |
| Thu 23 Jan | pb | Linux may make in-roads in the 'desktop' market but it won't be in the traditional sense. It will be in lower cost 'network appliance' like devices where the cost and customizability are important. I don't forsee Linux ever getting a UI acceptable in the general purpose desktop marketplace.
I could possibly see a usable UI being brought to Darwin. |
| Thu 23 Jan | Ian Stallings | The value would be in the Windows brand and the customer base it brings. They could easily distinguish themselves as the best Linux distro simply through marketing, charging for the tools that they develop on top of the OS. This is the same technique that all other Linux distros use to establish their niche. Their value comes in all the additional tools and advancements that they provide (Such as Suse's Yast, or Redhat's Advance Server kernel enhancements) , not simply putting Linux onto a few CDs. Microsoft could easily compete in this arena.
BUT that being said I admit it would take the sky to fall for Microsoft to abandon all their current OS development and favor the Linux kernel. That's why I qualified the statement saying 'when Linux becomes a true threat to MS they will do another 180 degree turn and start pumping out MS Linux distros'. What I meant was simply this - we'll know Linux has become mainstream when Microsoft starts selling it. |
| Thu 23 Jan | Just me (Sir to you) | 'the point is that non-US governments are very rightly worried about giving full control of their computer environment to a foreign monopoly'
Well, they do it just about any other sector. 'Yes Prime minister, I know we are fully dependant on the US for military equipment and operations, data-networking, computer hardware etc, but that is beside the point. This is the computer OS we are talking about! By the way, I brought you this nice aluminum lined cap ...'
(personally I would trust MS more than the Linux zealots that seem to be endemic in my country, but YMMV)
'Secondly ...' Sorry, I did not get that point.
'Thirdly governments often need only one or two specialized apps in each department;'
Then by all means give them the one or two little apps, although things like IM, email and wordprocessing seem to me to be universal needs no matter who the user. Outlook and Word should be absorbed into the common platform ;-).
'Third world countries also simply can't afford the ridiciulous license fees.'
If they can afford the hardware ... how much is a governmental bulk licenced OS? 20$. Besides, will they be able to afford the ridiculous consulting fees?
No, your point is valid in some cases (e.g. Red flag) and is also why I reffered to Europe in my post.
'Hopefully what we will get is a kind of uneasy truth. Linux will be good enough to keep the price of Windows down, and force MS to keep innovating so it doesn't lose market share.'
Amen to that. |
| Thu 23 Jan | Brian R. | Well I finally loaded Red Hat 8 GUI on a Dell at school, and it sure took a long time to open applications.
Maybe the M$ GUI is a lot faster. Does anyone know why this is?
Who can put up w/a GUI that crawls, for long? |
| Thu 23 Jan | Brian R. | Maybe the Dells had old, slow HD's or something.
Anyone notice a speed difference on their own machine? |
| Thu 23 Jan | Benji Smith | In 1998 it might have made sense for Microsoft to adobt the linux (or some other unix) kernel underneath the development of their own UI and system utilities (much in the same way that Apple has done for OS X).
But Microsoft chose another route. They focused on the development of the NT kernel, into its current incarnation under the hood of XP. They now have a kernel that is at least comparably stable and reasonable fast, with respect to the various unix kernels. Why would they now want to scrap that monumental development effort in favor of using someone else's kernel? And it really has to be said that the strongest suit of any unix is the kernel (and possibly the accompanying shells), but certainly not the UI. Since Microsoft has a kernel that is at least adequate (and in my opinion, vey good) and the best UI in the software world, linux has absolutely nothing to offer.
Whether its a good idea or not, Microsoft will never ever ever release any software based on linux. |
| Thu 23 Jan | Jeff | >>(personally I would trust MS more than the Linux zealots that seem to be endemic in my country, but YMMV)
The point of Linux is that you don't have to trust the zealots (MS or Linux) - you get the source and you can have your own people check/enhance it.
MS is releasing source to countries because they didn't trust MS. Unfortunately, under the 'shared source' license they can't modify/fix the code - they can only look at it. |
| Thu 23 Jan | robert | 'Well I finally loaded Red Hat 8 GUI on a Dell at school, and it sure took a long time to open applications.
Maybe the M$ GUI is a lot faster. Does anyone know why this is?
Who can put up w/a GUI that crawls, for long? '
'The GUI' is not slow, Open Office is slow (to open). They really need to fix that, otherwise you get these inane conclusions like 'The Linux GUI is slow, the M$ GUI is fast.'
Bob |
| Thu 23 Jan | Stephen Jones | >>>>>>>>>ell, they do it just about any other sector. 'Yes Prime minister, I know we are fully dependant on the US for military equipment and operations, data-networking, computer hardware etc, but that is beside the point. This is the computer OS we are talking about! By the way, I brought you this nice aluminum lined cap ...'
(personally I would trust MS more than the Linux zealots that seem to be endemic in my country, but YMMV)<<<<<<<<<<<
There are other countries beside the UK, and the only thing the present PM likes doing more than licking the boesses boots and wagging his tail is being photographed on the steps of 10 Downing Street with Bill Gates.
And as for computer hardware we are in fact almost totally dependent on Taiwan, China and Korea.
>>>>>>>'Secondly ...' Sorry, I did not get that point.<<<<<<<<
Many private companies are worried about not using MS software because of what their customers or suppliers use. Governments are not famed for being oversensitive to the needs of their customers.
>>>>>> Then by all means give them the one or two little apps, although things like IM, email and wordprocessing seem to me to be universal needs no matter who the user<<<<<<<<
IM, email and word processing can all be done as easily on Linux as on Windows. Indeed often you won't even notice which OS you are using. The only general productivity app Linux is missing is a decent vector drawing program.
>>>>> If they can afford the hardware ... how much is a governmental bulk licenced OS? 20$. Besides, will they be able to afford the ridiculous consulting fees?<<<<<<<<<
You can buy a new computer from Walmart for $199 . You will then pay a little over $100 for a monitor. Sure prices in third world countries are higher (though there is a large market for second hand computers from Europe or the States) but if you work out that the cost of an academic license for Windows and Office comes to about $200, which is also round about the OEM price, then you can see that the money isn't trivial.
As for consultants, I wasn't aware you needed any to type a letter, and you'd be using local not foreign labour anyway.
I'm not saying all the arguments are right (though I am inclined to thiink so). What I am saying is that these are the arguments that governments use, and they do not necessarily apply to private industry. |
| Fri 24 Jan | Just me (Sir to you) | 'What I am saying is that these are the arguments that governments use, and they do not necessarily apply to private industry. '
Then I think we are in full ageement, and agree to disagree on the validity of some of the points, whose validity is also related to the specifics of the country under discussion. Being form Europe, my specific worry is the reduced productivity (short term) and higher overall cost (long term). |
| Fri 24 Jan | T. Norman | 'If they can afford the hardware ... how much is a governmental bulk licenced OS? 20$. Besides, will they be able to afford the ridiculous consulting fees?'
Windows costs much more than $20 even in bulk. Especially if you're talking about the 'pro' versions of Windows like Win2000 Professional and XP Professional. $70 is probably the rock-bottom lowest deal they can get, and considering that many third world government employees make less than that per month, it is not a trivial amount even if 'they can afford the hardware'. Not to mention that the Windows license can easily be more than 30% of the cost of the hardware.
In addition to the cost of the license itself, there is the cost of tracking and accounting for all those licenses. But with Linux, they can just install it however many times they want without having to think about how many licenses they've paid for, which is a huge advantage for a government that has hundreds of thousands of desktops to manage. |
| Fri 24 Jan | Marc | Hmmm... Third Wold is worried about Lic Fees?
If they wanted to use Windows, they would just use it. As for paying Microsoft, that is a seperate issue. :) |
| Fri 24 Jan | T. Norman | Yes, third world governments now are taking strides to legitimize their software either by purchasing it or moving to free alternatives. The third world private sector still often pirates Windows and hopes the government doesn't know or care, but the government doesn't have that luxury - they hope Microsoft et. al. doesn't know or doesn't care, but now the software companies have shown that they do know and do care and have been putting pressure on the governments (with the aid of Congress and foreign trade regulations and treaties, of course). |
| Fri 24 Jan | Stephen Jones | >>>>>>f they wanted to use Windows, they would just use it. As for paying Microsoft, that is a seperate issue. :) <<<<<<<<<<
Not in government offices. They are regularly inspected by the BSA and the government will get informed by the Western embassies that it can say goodbye to debt relief, cheap traiffs for their goods, any concessions from the WTO and quite a lot of other stiuff, if it doesn't get its house in order. |
| Sun 26 Jan | WNC | I recently installed Mandrake on a system and it was just as easy as Microsoft Windows to install. I can't use the windows software that I like in Linux (like Word, etc.)- so I end up using Windows most of the time. And a company would worry about poorly documented security holes and the like on the linux box. You gotta make sure you have a really good Unix/Linux girl to make sure all the holes are closed. To get Microsoft's security fix information all you have to do is go to micorsoft.com. One stop shopping. |
| Sun 26 Jan | Alex Moffat | 'To get Microsoft's security fix information all you have to do is go to micorsoft.com. One stop shopping.'
Witness this weeks MS SQL worm/virus. Just having the fix available isn't enough it appears, looks like you also need a good Windows girl to make sure all the security holes are closed :) BTW RedHat also offers auto install of fixes and it works very well in my experience.
What Linux has done at this point is reduce the cost of a decent stable OS to around zero. Any money you're paying to Microsoft must therefore be for something above and beyond a decent stable OS. If you think what you're getting is worth the money then that's fine. Other people are starting to decide that it's not and that's where the problems start for MS. The cat's out of the bag on this one, if windows is worth $100, or whatever, then it must deliver that amount of value in addition to just being an OS. |
|
| Bad code - My problem or not | Wed 22 Jan | na |
| what do you think about the following:
we have around 20 developers. I started to take a look at the quality of their code and Im very very dissapointed. so called experienced guys make the most basic mistakes a programmer can do, but basically most of their code is a non commented copy & paste code. On one project I even searched for a 5-line code pattern and found 39 occurances. Withing 15 minutes of code review I saw enough to stop viewing their code more.
basically my problem is that Im not involved in those projects however it makes me very angry as I see this as one of the reason our company is not professional. the PM of the project knows about it but do not care.
our CEO cares about issues like this at least verbally however if there is a time to act in that case his support is not real.
so Im just embarrased what to do. I can try to involve myself into these projects but I do not want to teach others for the minimal level. I can also stay away and forget it, but next time those people will be within my group.
Any suggestions? |
| Wed 22 Jan | anon | What's your position in the company? That's an important thing to know.
And when you say they're going to be in your group later, will you have a position of authority? |
| Wed 22 Jan | Albert D. Kallal | The problem here is cost!
Ask your self if you gave each developer as much time as they wanted on a task, how long would things take?
In the ideal company, taking as much time as the programmer needs is in fact the BEST WAY to ensure quality. This is why projects with loose deadlines actually get completed sooner! (yup, it is true, projects with no, or less of a deadline actually get completed in less time!).
Most managers simply think that if you give someone 20 hours to do a 10 hour task, that the person will in fact use 20 hours to do the job. This in fact is wrong thinking. Most developers actually know exactly when the code or product is JUST RIGHT. There is that additional urge to tinker, but that really is not the norm. The best approach is not to think short term, and I got to get this done by Friday. If you get it done by Friday, and cut corners, you accomplish nothing! You also damage the project if you drop coding standards down to a crappy level *just* to meet a deadline.
It is no stranger that the Countries like Japan that think long term also are known for high quality products. Thus, the motivation is to do things correctly , and not necessary meet a silly deadline.
However, first rate products usually have a first rate price. Many, if not most people think that a Mercedes Benz car is over priced. This is totally different idea then the cost of the product being out of reach. I am not talking about the fact that average Joe can not afford the product. In other words, I am not taking about affordability, I am talking about what that product will cost in the marketplace.
Thus, to me, a Mercies Benz is NOT overpriced (the top dog high end models most certainly are!!). However, their basic products are not overpriced at all. They simply are very good cars, and you have to pay a very good price for that kind of product.
If your company is selling a product with a Chevrolet price, then you can in general only afford to do Chevrolet work. However, even today, basic products in the market place have high levels of quality.
If you can afford to spend more time on your software development process, then you will get better products. However, you will also need to charge better prices! You also *will* be able to charge better prices with high quality!!
Those developers should be given more time, and they will naturally reach that high level of quality of work. It is not that you don’t need deadlines, but they must be given adequate time to do the best job.
It should be noted that those same counties that don’t think in terms of daily, or weekly deadlines are also known for very high productivity also! In other words, letting the development time expand to get the job done right will actually improve the bottom line.
If the people in your company are not interested in improving the software development process, then either you have to change them, or move on. Or simply live with a company will produce sub-standard products. Eventually this means that your prices in the Market place will also be sub-standard. There is simply no way to avoid this fact.
Thus, the one thing you really do want to avoid is cutting too many corners in the quality of the code and development. The reason is of course is that cutting too much will cause the product to be too poor, and in fact cost the company more! In other words, poor code and designs will cost more!
Most managers believe that chopping away that idea of the “extra” time that developers need is the key to being a good manager. A good manger will NOT chop time, but chop features. In other words, what you keep in the product must be first rate!
So, I actually believe that giving the developers some guidelines and more time to improve their work is the best solution. If the work culture at your company is NOT open to the above concepts, then it is up to you to start that change!
You have to be come the change master!
Why not start down the path of allowing these people to start writing better code?
(note I said allow,..not force or 'get' ! A good manger provides that environment that ALLOWS these people to do first rate work. You don't force them to do good work...you *allow* them to!).
Albert D. Kallal
Edmonton, Alberta Canada
Kallal@msn.com |
| Wed 22 Jan | braid_ged | Only one way to lead.... only one...
just one.....
of all the ways people might think there may be... to lead, that is.. if fact... there is only one....
BY EXAMPLE.
Wait until people start saying 'Hey, that's a great widget, can we use it ?'. Wait until they seek your council before you give it.
Rule 1 of the Jedi.
Try and learn where you can, give praise and act suprised and impressed when these incompetants do manage to do something well.
They have learned that there is reward for finnishing early, there is no reward for finnishing it well, show them there _IS_ reward from quality. Even simple praise from the new lowly positioned guy can be an amazing motivator.
Anway, if that fails, strap on your armour and ride out to meet them, If this be the end, make such an end of it worthy of rememberance.
Braid_ged The White. (previously The Grey). |
| Thu 23 Jan | Matthew Lock | > Wait until they seek your council before you give it.
I too have learned that 'you can lead a horse to water but you can't make it drink'.
I used to show everyone all the new classes I'd made, or a neat regular expression I'd devised. But people don't like to be told what to do, so now I wait until someone asks before I tell anything. |
| Thu 23 Jan | na | I'm one of the 4 PMs in the company, but I do not have the real power to choose the people I want to work with. |
| Thu 23 Jan | Better than being unemployed... | If other people are screwing up and they're not your responsibility, it isn't your problem.
This doesn't mean you shouldn't do anything about it, it means you have to go about it indirectly. If their code doesn't look well designed, there's probably several things you can see that will cause it to fail. Report them as bugs. (Of course, the danger then is that a bad development team look at the bugs, decide they're all low priority because they're not reported by a paying customer, and never fix them....)
What I've discovered is there are two sort of development teams in the world. The first pride themselves on doing things well, getting stuff out on time, and having the kudos of customer praise. The second just do development cause it pays well and couldn't give a monkeys about quality just as long as they can all have a good laugh and earn some money.
Sounds like you've got the second variety. |
| Fri 24 Jan | Leonardo Herrera |
I would use an aggressive managerial path. Write a proposal, use words like 'downsizing', 'revenue', 'savings'. Fire useless people. Get 5 superstars, and start refactoring things (do not rewrite). Evaluate how much money you are saving to your organization, and _post it_, write evaluating docs and make sure of mention that you have saved the company lot of bucks.
Not a 'nice' way, but certainly effective. |
| Sun 26 Jan | Alex | Leonardo, to do that, you need some sort of executive type powers. A mere PM does not have the power to fire his own staff without jumping through hoops, let alone touch another PM's. Sometimes, we can't just bomb our way through. We got to slowly snipe all the little things one by one to steer things around. And even that might not be possible. It is also important to notice that while the quality of the work is being critiqued, the fact of the matter is that it is functional. Management in most companies are expert at being ostriches, at the first indication of trouble, they bury their heads in the sand thinking it will go away. |
|
| A little something for perspective | Wed 22 Jan | J. D. Trollinger |
| Do you think your work environment sucks? I used to think that I worked at a Dilbertesque company:
1) Air conditioning was routinely shut down on weekends. (What a way to motivate your employees to work extra hours, right?)
2) Upper management decided one day that people were spending too much time in meetings. Wednesdays were thus decreed to be meeting-free days. However, underground meetings started popping up on Wednesdays, because that became the day when people were most likely to be available for meetings.
However, these two anecdotes pale when compared to the Newark, New Jersey Division of Youth and Family Services:
=========================
[...]
Until last week, the electronic office keys issued to caseworkers were programmed to forbid them access to the building on weekends, and those workers who remained after 5 p.m. could not unlock the bathrooms.
[...]
Inside the cramped offices of the New Jersey Division of Youth and Family Services in Newark, the signs of chaos are not subtle.
Caseworkers assigned to investigate allegations of child abuse sit before broken computer terminals and beside file cabinets crammed with infant formula, baby shampoo and economy-size tubs of diaper-rash ointment. In a daily rush, runaways, counselors, troubled parents, social workers, abused children, nurses and bureaucrats all hurry through hallways where case folders are stacked openly in haphazard piles against the wall.
Pillars throughout the office display the kind of handwritten notices commonly seen on telephone poles announcing a rummage sale or lost pet. Missing file, the signs read, then list the names and case numbers of people whose problems the state has lost track of amid the relentless crush of new crises.
The disarray plaguing New Jerseys child welfare system, and its potential consequences, became tragically apparent earlier this month, when a 7-year-old, Faheem Williams, was found dead in the same basement of a home in north Newark where two of his bothers had been locked in, starving and beaten.
=========================
http://www.nytimes.com/2003/01/21/nyregion/21NEWA.html |
| Wed 22 Jan | apw | Thats what happens with gov't run agencies. Typical situations with social services, schools, etc. Not affliated with big money? Well then you don't get any.
Take Niagara Falls (NY) High School for example:
http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&threadm=8qd4n2%24d5g%240%40dosa.alt.net&rnum=1&prev=/groups%3Fq%3Dniagara%2Bfalls%2Bprivate%2Bschool%26ie%3DUTF-8%26oe%3DUTF-8%26hl%3Den
This would never happen with out intervention of a private party. |
| Wed 22 Jan | Devil's Advocate | apw -
Being aware of some of the fiasco's surrounding Edison School's privatization of several school districts, I wouldn't jump to the conclusion that private corporations are the answer.
The fundamental problem (imo) is that Things Cost Money. Hiring (enough) good people costs money. Hiring competent managers costs money. And so on.
Social services are intended to help those without (or with less) money. People who vote on taxes and municipal budgets tend to have more money.
The excuses go something like this:
'Funding a department to keep track of kids whose parents are in jail (DYFS)? Well I don't know any; can't be that important; veto the budget increase.'
'More money for education? Sure I make a lot, but my kids are grown up. Why should I pay the public school teachers more; what does it get me?'
Then a high-profile screw-up puts the spotlight on, and everyone runs around to assign blame. Fundamentally, the problem is chronic underfunding. You never get more than what you pay for. |
| Wed 22 Jan | Bruce Rennie |
>1) Air conditioning was routinely shut down on weekends. (What a way to motivate your employees to work extra hours, right?)
This kills me. Why would you WANT to be motivated to work extra hours?
I mean, if you can't get the required work done in the given 40 hour week, then there's been a scheduling/estimation screw up, right?
If you keep compensating for this, then there's no incentive for them to fix the problem, is there? |
| Wed 22 Jan | Pro-Parental-Choice-In-Education | 'More money for education? Sure I make a lot, but my kids are grown up. Why should I pay the public school teachers more; what does it get me?'
Public Education doesn’t need more money. The U.S. spends more money on education per student than just about any country on the face of the planet.
One example is Washington, D.C. that spends $7,389 per student per year. (http://www.washingtonpost.com/wp-srv/local/longterm/library/dc/schools/schools1.htm)
They have some of the worst test scores in the nation.
The TIMSS (http://nces.ed.gov/timss/) project proved that our education system is not second rate. It’s more like 37th rate. That’s how far behind the rest of the world we are in education while at the same time spending the most money. Throwing money at education will not help.
The facts show that public education is failing miserably. Here’s a story that’s one example of some of the problems in public education: http://www.city-journal.org/html/13_1_how_i_joined.html
We run our schools like communist Russia ran their factories. It’s stupid beyond belief.
Catholic private schools spend half what public schools spend per student and do phenomenally better.
The ‘expert’ teachers with bachelors degrees cannot even compare with the ‘un’ educated mothers who homeschool their children.
What we need in public education is competition. Competition has given us the best heath care in the world. It has given us the best products in the world. If we can get the teachers union out of the way, competition could give us the best schools in the world.
Teachers Unions have a practical racism because they oppose school choice. School choice would benefit the inner cities the most.
A Cartesian product type mountain of data backs up the school choice perspective. Be pro-choice. Vote for vouchers. |
| Thu 23 Jan | Ralph Chaléon | I just love this kind of thread.
Full of embedded superiority though :
'Competition has given us the best health care in the world. It has given us the best products in the world.'
I won't argue about these two points because their inaccuracy is so obvious (about products, just look at the US commercial balance http://www.census.gov/foreign-trade).
I think one of americas biggest problem is the ability of it's people to believe they are doing 'the best possible' without even trying to look outside.
It's so convenient to believe, but I'm sorry it's not true.
I truly believe United States are a great country, but please open the eyes, there's a world you might learn from. |
| Thu 23 Jan | Stephen Jones | >>>>>>>>>>The U.S. spends more money on education per student than just about any country on the face of the planet.<<<<<<<<<<
Yea, but look what is spends it on. When Ross Perot was in politics possibly the only intelligent statement he made was to promise that education money would be spent on education as opposed to school and college sport.
The American health care system is possilby the most expensive in the world, yet we see pensioners doing ten hour bus journeys to Mexico or Canada to buy their medicine because it's so much cheaper there, and the infant mortality rate is higher than Cubas. |
| Thu 23 Jan | Sam Gray | 'What we need in public education is competition. Competition has given us the best heath care in the world. It has given us the best products in the world. If we can get the teachers union out of the way, competition could give us the best schools in the world.'
Whoa, dogma alert! To your credit, Pro, you didn't actually *say* the words 'free market.' Somehow, though, I managed to fill them in.
Tell me, would this be the same sort of 'competition' that's given us highly safe, fuel-efficient cars, and universal health care?
Sure, 'competition' can be good for getting cabbage where it needs to go, but markets (er, wait, 'competitive arenas') are prone to the same sort of local optimization that Joel complains about within individual companies, and let's face it, they really suck at delivering intangibles like 'justice' and 'equality.'
And speaking of justice, let's bring the benefits of competition to the legal system, shall we? I'd be greatly comforted to know that if I develop a product that competes with Microsoft, I don't have to worry about being bought out by them -- because it's cheaper for Bill to just drag me through the criminal justice system. (Oh, wait, something like that already happened... remember Dmitry Sklyarov?)
The thing I really love about school vouchers is that they're the best of both worlds. You get to do something you're already absolutely free to do -- send your kid to a private school with values more in line with your own -- but as a bonus, you get to use my money to do it. It's the best of both worlds! But it's not exactly 'free market' economics... which may be why Pro was so careful not to use that term.
I'll agree with one thing, though. Competition really could give us the best schools in the world -- the kind of competition that would result if our country would double teacher's salaries across the board. If I could make $80k teaching computers to kids, I'd jump on that in a heartbeat -- and so would a lot of other experienced professionals. I wonder what might happen to the quality of our school system then? |
| Thu 23 Jan | Attending the wake | Sorry to drag it back on topic, but how about a private commercial company that takes away a brilliant drinks machine (that made freshly brewed coffee and tea to order and to suit a variety of tastes), and justifies it on the grounds (excuse the pun) that it was costing 20-30 cents a cup?
What replaced it? A hodge-podge of cafetieres, filter machines and instant coffee that cause waste of materials, waste of time, and don't please anyone except the person who made it to suit their own taste.
How much of a developer's time do you get for 30 cents? How happy is a developer with no coffee? (OK, OK, assuming that said developer likes coffee.)
Of course the time and morale costs don't show on the balance sheet - no such headings.
Money attracts bean counters, and they will justify their own existence by 'cutting costs' no matter how expensive that may be. |
| Thu 23 Jan | Neil E | Soooo... If competition is so damned effective, how come there was that big dot com crash? Why is it still going affecting the stock market? Why do we need central government to fix interest rates low in order to avoid recession? |
| Thu 23 Jan | David Clayworth | Pro, did you even read the article you referenced? There was nothing in there to indicate that teachers unions were a problem. Teachers unions are usually found arguing for more ability to discipline student, better training in classroom management, and better protection for teachers against frivolous lawsuits. |
| Thu 23 Jan | z | >>> Sorry to drag it back on topic, ... <<<
Which was..???
Oh, yeah, something about however bad your work environment there is someplace where it is worse. To approximately quote Dilbert, 'I wept because I had no office, then I met a man who had no cubicle'.
It may be good to keep things in perspective, but those people who accept their current condition because someone else is worse off never do much to improve the human condition let alone their own.
>>> How much of a developer's time do you get for 30 cents? <<<
About 15 seconds.
Meanwhile, this thread has degenerated to a political flame fest. One might hope for more rational discussion from people working in a technical field, but there is not much evidence for it here. |
| Thu 23 Jan | T. Norman | 'Soooo... If competition is so damned effective, how come there was that big dot com crash? Why is it still going affecting the stock market? Why do we need central government to fix interest rates low in order to avoid recession?'
Small economic downturns in the USA tend to become long drawn out blood baths because corporations believe layoffs are the answer to their problems. But it is rare that a company emerges from a layoff being strong and profitable. Each layoff promotes a chain reaction of decreased productive activity within the company and the economy, which in turn stimulates more layoffs. Rinse and Repeat. |
| Thu 23 Jan | | Ooops. sorry. was looking for that Joel on Software discussion forum. Obviously this ain't it. |
| Fri 24 Jan | Alyosha` | There isn't anything really virtuous about competition itself. Competition just makes greed and short-sighted exploitation more a necessary part of day-to-day business.
Competition introduces that Darwinian pressure that ensures that only the fit survive. Okay, survival of the fittest is not so bad for the already-fit; but if you're a child in an unfit district, well, nothing's gonna change for you, you're only gonna get bitch-slapped by the almighty Invisible Hand. Competition will just make sure there's a few more vultures out there to pick the meat off the bones from the kids that just aren't profitable enough to educate.
Oh, and we already *have* school choice. Private schools exist and you can send your kids to them. You want a rebate check on your property taxes, that's another thing. Hell, I don't even have kids, where's my check? Can I get a rebate check for all the miles of roads I don't drive? Tax system don't work that way. In any public good, some of us get more benefit from it and some of us benefit less. |
| Fri 24 Jan | Alyosha` | 'But it is rare that a company emerges from a layoff being strong and profitable. Each layoff promotes a chain reaction of decreased productive activity within the company and the economy, which in turn stimulates more layoffs.'
When my former employer announced that it would save $7 million dollars a year by laying off one-quarter of its employees, I was tempted to suggest they should lay off the other three-quarters and save a total of $28 mil a year ... in fact, if it were not prohibited by the laws of mathematics, they should have laid off more employees than they actually had, and maybe they could have turned a profit for the year ...
It was true though that they overhired in the heady days of 1999 and 2000. Still, I think this blood-loss would not have been so severe if they had given employees the option of taking a pay cut. At first it was necessary to remove some of the dead weight, but after the third or fourth round of firings the company must have started to cut into its brain trust. A company can't afford to summarily dismiss its best and most talented workers; it would be better to lose some through voluntary attrition ... |
| Fri 24 Jan | Max Hadley | 'When my former employer announced that it would save $7 million dollars a year by laying off one-quarter of its employees, I was tempted to suggest they should lay off the other three-quarters and save a total of $28 mil a year ... in fact, if it were not prohibited by the laws of mathematics, they should have laid off more employees than they actually had, and maybe they could have turned a profit for the year ...'
Shorting on employee layoffs? Now there's an idea! |
| Sun 26 Jan | Pro-Parental-Choice-In-Education | Ops. Not trying to say anything negative about other countries. Hard to remember sometimes that this is an international forum. Part of a healthy self esteem nationally is thinking good about your country. It doesn't mean that other countries don't have things to think good about themselves. Even people in the poorest countries have something that they can think that's good about their country (lately it seems like a common one is 'At least we're not the U.S.').
In fact I said some very good things about other countries, at least 37 or so countries have an educational program that is superior to ours. That's should hardly be offensive to someone from another country. We say 'We're 37th!' you say, 'How can you be so proud?!'
I do not have the time, unfortunately, to put all the research into this little newsgroup/blog/whatever, but yes, the teachers unions are not really *for* kids learning basic skills (like reading, math, science), they are *for* jobs and money. If you don't know this, it is because you have not read what teachers unions have put out in way of press for the past ten or more years and what they have done. The reflexive thing the union says is if you don't want to spend more money on education, you don't care about educating our children. Teachers unions do not want to reform education, unless that means no real change and lots more money.
In the places where vouchers have been tried, they have had great sucess actually teaching things to children.
Some of you will never take my word for this, but I can't spend my life posting things to the Internet to help someone who doesn't understand.
And if I'm going to spend property tax money *and* income tax money (the federal government spends *huge* amounts of money on education) to teach our nation's children something, I at least want them to be learning stuff. I'd be happy if they could learn to read in large numbers. Since minorities, especially black young people, leave high school in large part unable to *read*, I think we ought to hire somebody different than the people who have failed for the past twenty years to do something about it! |
| Sun 26 Jan | Alyosha` | 'And if I'm going to spend property tax money *and* income tax money (the federal government spends *huge* amounts of money on education) to teach our nation's children something, I at least want them to be learning stuff. I'd be happy if they could learn to read in large numbers. Since minorities, especially black young people, leave high school in large part unable to *read*, I think we ought to hire somebody different than the people who have failed for the past twenty years to do something about it!'
I can't speak for anyone else, but I learned to read and write (and program) in public school. Public school always did right by me. I had some great teachers. Of course I had the advantage of having a good home life and somewhat supportive parents. I'm convinced that most students who fail at school have parents who have failed them at home first ... either they just don't care about their children, or they are outright abusive towards them; whatever the reason, these kids have grown up without any love for learning whatsoever -- and if a child has no desire to learn, God himself couldn't educate them. |
|
| Assembly language | Tue 21 Jan | PC |
| Can you think of any good reason for a web programmer to spend time with assembly language? I found some books on sale at the library (40 cents each). It was the first language I taught myself, in the 1980s and I thought it was fun. Since I bought the books I thought well now I can really learn assembly language, since I now have a good programming background (along with the 50+ other things Im trying to learn at the moment).
But I really cant afford to spend any time on this unless I can think of some practical use for it, other than games (which I am not interested in).
I think assembly language is great for understanding computers better. However, most of what I do is for Unix and these books are for Windows. Also, I dont know where to find MASM.
Should I just forget it, or if not where can I find a new MASM and is it free? Are there some little interesting things I could do with it that would not take up all my time for the next year? |
| Tue 21 Jan | Nicholas Franks | I am also in the process of learning assembly language
for microcontrollers (PIC,8051,etc).
I just want to be able to make electronic boards.
How by the way what are the GOOD books on assembly language ? |
| Tue 21 Jan | Patrik | PC,
I taught myself assembly language for the 8088 back in the day, while in school. It was fun and intresting to program
DOS TSR stuff, and it gave a very good understanding of how stuff works under the covers.
Its now been some eight years since I started working professionally as a programmer. I have not used assembly language once in that time. So the short answer to your question is No, there is no need for assembly as long as you are not working with embedded systems or writing BIOSes and the like.
I dont regret learning assembly though, and I have been doing some stuff in my spare time in assembly, but since you say you have to prioritize your learning efforts I would not learn assembly language if I was in your shoes. |
| Tue 21 Jan | assembler | I mostly do 'web programming' and learned assembly for the same reason Nicholas Franks mentions: I want to build boards, and stuff. Maybe not so useful for getting a job, but building devices is a fun side hobby. |
| Tue 21 Jan | wisdom | the lower you've programmed, the more your higher code will be machine-friendly |
| Tue 21 Jan | Danil | 'Can you think of any good reason for a web programmer to spend time with assembly language?'
Well, I've used my ability to read assembly language to diagnose a couple problems in our production system.
I can't imagine needing to write assembler - given the space and performance penalties you are paying once you decide that you are using a web deployment, it's hard to imagine a circumstance where etching on the metal would pay off.
Books:
http://www.amazon.com/exec/obidos/tg/detail/-/0735608865/qid=1043190654/sr=8-1/ref=sr_8_1/103-3852970-3916643?v=glance&s=books&n=507846
John Robbins, Debugging Applications
http://www.amazon.com/exec/obidos/tg/detail/-/1576101746/qid=1043190728/sr=1-1/ref=sr_1_1/103-3852970-3916643?v=glance&s=books
Michael Abrash, Graphics Programming Black Book |
| Tue 21 Jan | geeauteeaemm | Assembly is still sometimes useful for debugging.
Can't see why anyone would want to use it for
a normal app though. |
| Tue 21 Jan | Tim Lara | This guy writes *all* his Windows software in assembly. Here is a link to a page where he tries to explain why he does this.
http://grc.com/smgassembly.htm
Also, he has a free assembly development kit available... |
| Tue 21 Jan | PC | So far it sounds like I shouldn't bother. Too bad because these books look so interesting (one and intro and the other advanced).
My work is all high level (Java, Perl, etc.) but I really prefer knowing how things work. Unfortunately I can't get paid for understanding. I'm glad that I did spend a couple of years on assembly language when I first started learning about computers. I don't see how people can use or program them without wondering what actually goes on inside. |
| Wed 22 Jan | Lennart Fridén | 1. Assembler is fun.
2. Knowing assembler makes you a better programmer as far as I'm concerned. Knowing assembler gives you an excellent foundation to build upon if/when you learn new languages. |
| Wed 22 Jan | Stephen Jones | >>>>>>>>Can you think of any good reason for a web programmer to spend time with assembly language?<<<<<<<<<<
As the whole point of the web is that it's platform independent you could substitute 'web programmer' with 'chartered accountant', 'classical guitarist', 'burger filipper' , 'serial killer' or whatever and the answer would be exactly the same. |
| Wed 22 Jan | Just me (Sir to you) | >>>>>>>>Can you think of any good reason for a web programmer to spend time with assembly language?<<<<<<<<<<
Assembly trows out the bits onto the Cat 6 wire at higher initial velocity, thereby reducing latency times across the network. This should be especially noticable in SOAP responses, as they have a lower friction coefficient.
Sorry, couldn't resist :-) |
| Wed 22 Jan | Matt Kennedy | I strongly recommend that you read the book 'Code' by Charles Petzold. |
| Wed 22 Jan | PC | Why? |
| Wed 22 Jan | Brent P. Newhall | One good reason for reading books on assembly languge: Because it looks interesting.
There's nothing wrong with learning a skill that doesn't appear to have immediate practical benefits. |
| Wed 22 Jan | PC | Yes I agree. But since I already have a vague general understanding of assembly language (which I think has been extremely valuable) I wondered if I should invest time going into more depth and detail. As much as I would like to, it's hard enough to find the time for keeping up with the constant changes in web programming. There are a lot of things I want to learn that have no immediate practical value, and it's hard to decide which ones would be most worthwhile. I thought that if assembly language had some practical applications in web programming, it might be more worth the time. |
| Wed 22 Jan | PC fan | PC,
Learning assembly language will certainly have more practical benefits than posting extensively on this board as you have been. Don't get the wrong idea, I've enjoyed your posts, but if you really are wondering if you can afford to invest the time to learn, just cut forum posting out of your schedule and that will free up all the time you need to learn whatever new skill you fancy. |
| Wed 22 Jan | choppy | PC Posted 22 times in January, 59 times in december. 100 posts total, according to usabilitymustdie.com . Thanks for the reminder 'PC fan.' I'll have to remind myself what I could be doing instead of reading various forums. |
| Thu 23 Jan | AEB | PC, you're better off learning about any of the following: DHTML, XML, XSLT, Python, SOAP, .NET, RSS, and on and on.
Much better to have experience in many tools then in only one. This way, you can learn the cool tricks people have done with each one - someday one might come in handy.
Either way, better to learn then to watch TV. |
| Thu 23 Jan | Eric Moore | Writing assembly code by itself is marginal. Whats usefull is getting used to thinking how systems work at the lowest level. You are not going to get this with a standalone toy program, you need to do something that forces you to step through many layers.
At one time writing a TSR or a VxD in MASM was a good way to do this. If you want something more current, substitute the opcodes in the Java VM, or its equivalent in .NET for assembly language. |
| Fri 24 Jan | Benji Smith | One thing to consider is that you may get tired of doing web apps someday. It would be nice to have some lower-level skills in your arsenal. (Not that you'll necessarily ever use assembly language, per se, but writing a few assembly programs is a great way to ramp up to learning C/C++, since C was originally created to be a portable binding to assembly language).
Plus, web development is on lots of people's resumes. Any chump can learn web development in his spare time with $50 in programming books. Having assembly language skills on your resume will show people that, even beyond having a good understanding of low-level machine function, that you are really interested in computer science and have devoted a considerable amount of your time toward seeking more knowledge. If I was going to hire a programmer (in any language), having assembly skills on a resume would impress me. |
| Sun 26 Jan | R. Dawson | gcc -S -o code.s code.c
output your code to assembly and see it. this might make learning (or better yet understatnding) assembly easier. |
|
| advice | Thu 23 Jan | unemployed |
| Basically I am software developer and have been unemployed for 5 months now. I had given a couple of interviews a month back, but ever since the new year, I have not had any interviews.
I have around 15 months of work experience in VC++/MFC and OpenGL and a year of co-op experience mostly Java, with a BCS degree.I have delivered quality production code, and have excellent references.
I am finding without minimum 3-4 years experience nobody bothers even looking, and without contacts its very difficult.
I am willing to relocate, but I get no response back from employers.I had my resume critiqued by a professional service, no problem there,I have even been cold calling, talked directly to CEOs but to no avail.
Does anybody have contacts in the Toronto area or know if anybody is hiring?suggestions anything new I should try? |
| Thu 23 Jan | Been there | Stay positive.
You will find work.
I went some time last year without work, so I know what you're experiencing.
Keep doing what you are doing, it's only January, so it's natural for the work front to be quieter than usual. |
| Thu 23 Jan | Sam Gray | I'm finding the opposite -- that even with 4+ years experience, there are positions out there that require a BSCS. (= I've often found that the job market picks up after January. Hang in there. Meanwhile, work on interesting projects you can add to your resume. |
| Thu 23 Jan | AngryNoMore | You might find my old thread 'How do you get a programming position?' helpful. Just scroll down further on this page. It is somewhat of a rant/vent. I'll say this though, You are not alone. ) |
| Thu 23 Jan | Jeff | Unemployed writes:
>>I am finding without minimum 3-4 years experience nobody bothers even looking, and without contacts it's very difficult.
Sam Gray writes:
>>I'm finding the opposite -- that even with 4+ years experience, there are positions out there that require a BSCS.
Well, I have a BSCS & 15 years of experience and am having no luck in finding a new job (laid off three months ago).
Part of the problem is the total glut of programmers in the market (esp. here in Chicago with Lucent, Motorola, Tellabs and other large shops sheading 100's of tech people).
My experience is mainly C/C++ with just a bit of Java. I told several recruiters that I'd be willing to work cheap if I could get a job that'd give me more Java experience - they all said that there were plenty of people with Java experience willing to work cheap (and C++, etc).
It's just not a good time to be trying to get a job... |
| Thu 23 Jan | unemployed | I am finding same thing here, too many programmers unemployed for fewer jobs.Would anybody suggest moving to Bangalore? Plenty of job openings there, I checked it out.
Motorola,Intel ,SUN all hiring in Bangalore.An experienced developer could get 60,000 Rupees a month, not much in dollar terms, but a great living standard in India. |
| Fri 24 Jan | Joe | It's not a bad idea at all. Work for couple of years in Bangalore untill the economy picks up in US and then come back and say you got lot of experience in managing Indian programmers! It will be a great plus here because most of the Programmers here are from India anyway!
Also if you have Coporate America experience, you will get paid very well in Bangalore.
Bangalore is like most of the US cities, great pubs and fun social scene! You just need to hang out with right crowd :) Go and have fun for couple of years :) |
| Fri 24 Jan | JD | Hi,
I am from Mangalore (which is very near to Bangalore) working for Infosys.
I agree what has been said about Bangalore. If you have more than 3 years of experience in IT, it is not difficult to find a job. Currently the who's who in Indian IT (Infosys, Wipro, TCS) are all hiriing specially in Quality area.
Also look out Hyderabad as an option. Number of good oppurtunties are lying in there too.
Regards,
JD |
| Fri 24 Jan | Justin | I have no advice to offer, I'm afraid. All I can say is that you've done nothing wrong. The situation is like that almost everywhere at the moment (globally speaking; there will always be hotspots).
The main problem is not that there is no work; there is always work, but that there are lots of IT people who are not working ('resting', as our thespianic friends say).
This means that employers can afford to be more selective. Why on earth would they give you a job when they can someone else with 5 years experience for the same cost?
Exploring India as a work option sounds great, but does depend on your other commitments and responsibilities.
I hope you have done something useful with your 5 months, eg learning .Net or whatever.
Best of luck anyway. |
| Fri 24 Jan | Better than being unemployed... | I've found recently that experience of .NET as a requirement is on the increase.
I don't know what I'm going to do. I had about four days' experience in .NET (basically a 'Hello World' in C# and using some data bound controls to access a remote object via SOAP) before I got laid off. And there's not much chance of doing any here soon in the land of VB6 maintenance programming hell.
Hey ho. |
| Fri 24 Jan | Dino | Nortel was hiring as many as 25000 IT in the GTA. Most of this workforce is currently unemployed.
With just few jobs and so many good people around, the problem is huge and finding an IT job in Toronto or GTA is not a matter of skill but luck.
Good luck anyway |
|
| Connection Strings | Thu 23 Jan | Matt H. |
| Sorry to ask -again- ... but ...
//Code Snippet
CoInitialize(NULL);
BOOL m_bIsValid;
MSADO::_ConnectionPtr m_Database;
m_Database.CreateInstance(__uuidof(MSADO::Connection));
HRESULT hr;
CString strDB = _T(C:\\Test\\Test.mdb);
const _bstr_t DSN = LProvider=Microsoft.Jet.OLEDB.4.0; Data Source= + strDB;
try
{
if (FAILED(hr = m_Database->Open(DSN, , , NULL)))
{
-- Doesnt seem to be working on a WinNT machine. I allready installed MDAC 2.5 and JET 4.0SP3. Any ideas?
oh, heres how I imported ADO:
#import c:\Program Files\Common Files\System\ADO\msado15.dll \
rename(EOF, EndOfFile) rename_namespace(MSADO)
thanks, |
| Thu 23 Jan | Matt H. |
Specifically:
I'm looking for a connection string so that I -won't- have to install MDAC and JET 4.0 on a NT4 or Win98 box.
After re-booting, I managed to get it to work with MDAC and Jet. I'd like to avoid all those pre-requisits.
thanks, |
| Fri 24 Jan | Better than being unemployed... | I'm not sure you can.
Sometime between MDAC 2.1 and MDAC 2.5 some of the IIDs for things like _Connection and _Recordset got changed. I assume you've got a post 2.5 version of MDAC on your dev PC, in which case #import is going to generate the newer IIDs from that.
Then when you stick it on a 98 or NT PC, with an earlier version of MDAC, CoCreateInstance looks in the registry for the various IIDs specified in your code, can't find them (because they don't exist) and barfs.
I think you've just got to force an upgrade to 2.5 if they've got anything earlier. (On my system here I've got a small DLL which #imports the type libraries for MDAC 2.0, 2.1, 2.5 and 2.6 and checks whether or not it can create a pointer to _Connection on each one. If it can't handle 2.5 or 2.6 it will force an upgrade). |
| Fri 24 Jan | Better than being unemployed... | Oh, and exactly what sort of error are you getting, and where? |
|
| The Zone and being done | Thu 23 Jan | Sebastian Wagner |
| The more experience at work I get, the more I find it especially hard to keep being in the zone once Im done with a particular, say, 2 hour job. The tension goes away, the last obvious bug is gone and you play around a bit with what you got just finished. Getting back on track and hitting the next job at hand is quite hard, at least for me. Its not that I dont like the work, just the opposite, web-surfing and other work-time-activities bore the hell out of me. Its just hard to enter the zone again.
Anyone else got the problem? Any tips, anything that works for you? |
| Thu 23 Jan | Herbert Sitz | I know the feeling. It's not unique to programming jobs, of course; I think a similar feeling can be had in any job with tasks where you get into the 'flow'.
One method of I've heard of for getting past it (and which I've employed with limited success) is to just start going through the motions of your new task. If you just decide to get started on it -- even when you don't feel the flow -- you will very likely get sucked in and get back into the flow.
In any case, you're guaranteed not to get back into the flow if you go websurfing or do activities unrelated to your next project.
I've found that my hesitance to start on the new project is often because of a sense that 'it's too big and/or too messy' and is going to be very difficult to do. If I get past that feeling and just start going through the motions of working on the new project it's neat how things can magically fall into place. It never turns out to be as big or as messy as I'm afraid it's going to be. It is often hard for me to get past that and start going through the motion when I'm not in the flow. But whenever I'm able to do it, it works. |
| Thu 23 Jan | David Clayworth | Whever I finish something like this, especially if its been a 'heads down' piece of serious concentration, I give myself a little break. Go to the kitchen and talk about football for ten minutes, or go and raid sombody else's supply of candy. I always feel more more like starting again afterwards. |
| Thu 23 Jan | Better than being unemployed... | Once I've nailed 'the last known bug', I get out of the zone totally. I think 'hurrah, job done'.
But it never is. There's always one more bug. Then it's head's down and fix it. And of course, that involves a new build, regression testing, the fear that any bug you fix will introduce a new one.
That gets me quaking in my boots. It seems like such a large intertia curve just to change one line of code but still guarantee the same quality as all other builds. Just can't get into that at the end of the day. |
| Thu 23 Jan | Jerry Lewis | There was a time when I had problems going into the 'zone', too. When my mind isn't ready to take on the next task, I now know that the problem only exists because the task is too big - I have to divide the task into several smaller tasks.
As soon as I've made the steps small enough, I can continue programming and get into the zone very quickly.
So now I know that going into the 'zone' is just a question of dividing tasks into several smaller ones. At least it works for me. |
| Thu 23 Jan | mackinac | Being in 'the Zone' is task specific. It is not mearly a matter of concentrating on a specific task, it also involves building up a metal picture of the task at hand so you can see your way to the goal.
Once the task is done you have to start building the mental environment for the new task. If it is quite similar you may be able to get going quickly, but it is difficult, if not impossible, to end one task and jump in to the next one with the same level of concentration immediately. |
| Fri 24 Jan | HeyCoolAid! | When I finish something, I clear everything away and put it out of site. That goes for the stuff that's on my real desk as well as the stuff lingering on my computer desktop. I then start setting out the things I'll need for the next task. Then I leave my office for 15 minutes or so by going for a walk, or into the kitchen for a soda from the fridge, or whatever. When I come back I usually (not always) feel refreshed and more ready to start on something new than if I hadn't gone through my little ritual. Surfing and emailing NEVER help me head back into the zone. |
|
| Light, open-source web-based CRM? | Thu 23 Jan | Frederic Faure |
| Hi,
Before I dive in and reinvent the wheel with PHP and MySQL... does someone know of a good, basic, and easy to use CRM (Customer Relationship Management) package that I could use to keep tracks of infos related to our customers (ie. address, software licences, history, etc.)?
Thx |
| Thu 23 Jan | Slava | I`m also interested:) (but pls no PHP....:), Perl at least:) |
| Thu 23 Jan | Chris Winters | Instead of reinventing the entire wheel, you might take a look at some of the application frameworks that will take care of the plumbing for you. That way you can benefit from the pain other people have had with the problems you'll inevitably encounter rolling your own.
I don't know PHP so someone else will have to pipe in, but for Perl you have a number of choices: see the mod_perl application server page[1] although I admit I am partial to OpenInteract[2] since I wrote it :-)
There are also a number of Java/Servlet frameworks. Some of the best known are Struts[3], Tapestry[4] and Webwork[5].
[1] http://perl.apache.org/products/app-server.html
[2] http://www.openinteract.org/
[3] http://jakarta.apache.org/struts/
[4] http://tapestry.sourceforge.net/
[5] http://www.opensymphony.com/webwork/ |
| Thu 23 Jan | Napoleon Hill :) | Try www.ossuite.org
I haven't tested it do :) |
| Thu 23 Jan | Rick Dantón | Here's another open-source CRM package:
http://sourceforge.net/projects/compiere/ |
| Thu 23 Jan | Thomas | We've built up a tool that handles a lot of customer support, some sales, and some accounting functionality. Having done a good bit of the work, I am well aware of how much time and effort it took. There is a reason CRM products are so expensive; I can't say we actually saved anything by rolling our own solution.
We've licensed our system to a couple other companies for a pretty nominal fee. If you're interested, send me an email and I'll tell you more about our system and we can see if it meets your needs.
-Thomas |
| Fri 24 Jan | Li-fan Chen | www.openacs.org
I believe the various modules of this open crm projects are modular. You only need to use as many as you like. In that way of thinking I guess it can be light. |
| Fri 24 Jan | tapiwa | openacs also has a university program called dotLRN.
http://dotlrn.mit.edu
This is a stock openacs with extensive customisations. Awesome stuff.
A few people are now working on dotWRK, which is openacs with extensive customisations, for use more as an intranet, than just CRM, although CRM module/functionality is planned.
http://openacs.org/projects/dotwrk
A lot of what you need is already there, although I do have to warn you, it is not really light. In addition, it is in TCL, and runs on AOLserver with a postgres/oracle database.
If you really want light, or PHP/Perlcheck out some of the intranet/customer suppert scripts on http://www.hotscripts.com. |
|
| Fuzzy front and back end estimates | Wed 22 Jan | Better than being unemployed... |
| Okay, the company I work for used to have an attitude of Schedules? We dont need no stinkin schedules! Well stick our finger in the air and force our programmers to work overtime if theyre late! Not so hot. So weve taken it upon ourselves to do schedules.
Now, Im now pretty good at estimating how long its going to take to do individual tasks, when theyre broken down into small half day or day long activities. And I make sure to put a load of buffer time in at the end. Yet I still find Im struggling to meet deadlines.
What Ive discovered is there are two activities that are difficult to estimate.
The first is the amount of time its going to take to nail down the initial requirements, bang out a spec and some top level design, and come up with a schedule. Call this the fuzzy front end.
From my experience, this seems to be about a tenth of the time itll take to do the tasks (not including buffer). Eg: an increment taking 30 man days took 3 days to design and write a schedule for. However, I couldnt have really said at a glance, oooh that increments going to take about 3 days to design - I had to sit down and analyse it.
The second is the number of times the test team are likely to have to run through the whole retest before they cant find any more bugs. This is tricky when doing a whole retest takes several man days. (Hmm, automated testing is your friend?). Call this the fuzzy back end.
From my experience its about four or five times. Whats worse is that towards the end of the project, corners get cut, so regression testing isnt done as thoroughly as Id like, and every now and again something gets shipped with a silly bug I accidentally put in to fix a more tricky bug at the last minute.
Thoughts and comments? Im asking this now really because management are banging on my door for accurate timescales for the rest of the year, and I just havent done the design to give them something Im comfortable with. |
| Wed 22 Jan | Matthew Lock | If you haven't done enough designing yet to give them firm estimates just stick to your guns and tell the managers to hang on.
The managers may get a bit annoyed but just guessing will only get you into more trouble in the future with them anyway. |
| Wed 22 Jan | Justin | From some of the phrases in your post, I'm guessing you have already read Steve McConnells 'Rapid Development' book. If not, then you should. Amazon or somewhere will have it.
I haven't checked, but some excerpts from the book may contain the info you need and are on S McC's website www.construx.com
If they're hammering on the door or you can hear frantic whispering outside, then it's probably too late to start shopping for books. Do it later, maybe...
Your real problem is do you let them down now (by telling them they'll have to wait for an estimate/design) or later (when your estimate proves inaccurate)? If you take the second course and you're wrong, not only do you get your arse chewed for failing to deliver, but you reputation suffers too (much harder to repair).
You still have to estimate the estimation time and they'll be chasing you while waiting for that. |
| Wed 22 Jan | Dino | The best book on project management I've read so far is DeMarco's 'The Deadline'. Tons of DOs and DONTs in this book and once you try them out you'll realize they're actually quite true and real!
It is now my experience that in large projects design, coding and testing have equal durations. Requirements would take longer than any of the above.
In the above I'm assuming a use case driven development process and automated testing.
Also, estimates are indeed correct only for half a day to a day's worth of working. This assumes the existence of a complete task list which of course depends on the overall system design. Same way, projects longer than a year (maybe a bit more) cannot be managed and should be broken into smaller subprojects/iterations/phases.
Hence, in large projects one must first nail down the requirements, then come up with a rough model and only after this come up with a project plan. As a first step I would plan only the requirements phase using about a third of the available time.
For really small projects (like 30-100 man days) I would push for a demo every 2-3 days. Usually specs for such projects are vague and utterly uselss beyond offering a starting point. I put more value on the demo feedback which will keep the project on track and target.
As far as last minute changes, I'd rather release a product with known problems than throwing in quick fixes. I found out (the hard way) that quick fixes are the usually creating more problems than solving. |
| Wed 22 Jan | Brent P. Newhall | Excellent topic, Better. Thank you.
One solution: Refuse to include design and testing time in your estimates. Refer to design and testing as separate activities that cannot be estimated. Your customer may balk, but this is the truth.
You wrote that design takes 'about ten percent of the time.' Use that as your default estimate.
You can eliminate the 'fuzzy back end' using test-first implementation. Write tests for your production code BEFORE you write the production code. Then run the tests (as a sanity check). Then write the production code, and run the tests again. As a result, QA should find very few bugs. (And pass around these tests, so that Jane can use them when she's assigned to update the features you've worked on.) |
| Wed 22 Jan | Jeff MacDonald | 'Refuse to include design and testing time in your estimates...'
This may just be the tragedy of my past experiences speaking, but I've found it's very important (for my manager and/or customer, but usually the former) to specifically break-out testing in an estimate. Some managers think testing is 'easy' and/or the 'test as you're developing' method is sufficient.
As such, I've found that a line item like TESTING = X [hours/days] is a requirement to helping management understand that it takes time to test (particularly if you have non-technical management). Otherwise, it's really easy, I've found, for management to 'forget' about the testing phase.
But then again, I've spent most of my time working as a solo developer while reporting to Director/VP-types, so others' experiences may differ. |
| Thu 23 Jan | Alberto | Always make sure that grey areas are specified, if there are dependancies that cannot be estimated make sure they are in black and white, why put your head into a noose created by somebody else?
my 02c. |
| Thu 23 Jan | Better than being unemployed... | I can't see management here buying 'grey areas', but it's not a bad idea, providing a date with a 'plus or minus' factor. I'll try that.
Only trouble I can see is they'll take the two extremes as absolute values and pick one of those.
In another thread, I was reading about how people who don't have as strict a schedule produce stuff more quickly. Interesting, because I would have assumed the opposite. I guess it depends on the quality of your team.
I'm getting pissed off here that QA don't try and test stuff until after I've finished all my implementation, unit testing and integrating. Probably because, between you me and the gatepost, our test team is a bunch of idiots who can't grasp the concept of testing a build with 50% of the proposed functionality in.
That just slows everything down because testing doesn't get done in parallel, which means the fuzzy back end can't be estimated until the end of development. Not so good. |
| Thu 23 Jan | Brent P. Newhall | If management has a tendency to pick one of two extremes, only give them the extreme that specifies the most testing time. This is better for them and better for you. |
| Fri 24 Jan | Matt H. | >Probably because, between you me
>and the gatepost, our test team is
>a bunch of idiots who can't grasp
>the concept of testing a build with
>50% of the proposed functionality in.
Teach them about modularity and incremental
delivery. Do a lunch & learn. This is low hanging fruit! :-) |
|
| Books on leading peers | Tue 21 Jan | BC |
| Ive been tasked with taking on a leadership role within my team. Were all peers, so theres no mandated authority behind my leadership role. I have to do it the old fashioned way, earn it.
Anyone know of any good books on taking on a leadership role among your peers without appearing bossy?
Thanks
BC |
| Tue 21 Jan | igor | By far my favorite book on the subject is 'Becoming a Technical Leader: An Organic Problem-Solving Approach' by Gerald M. Weinberg.
I also believe the standards, like Peopleware and Rapid Development, address leadership issues. |
| Tue 21 Jan | Joel Spolsky | Dale Carnegie: How to Win Friends and Influence People, still a classic about 100 years after it was written... |
| Tue 21 Jan | Brent P. Newhall | 'The First-Time Manager' is an excellent overview of the mistakes and pitfalls of one's first experience in managing other people. Even though you won't be a full-scale manager, I think this book would help. |
| Tue 21 Jan | TK | Dale Carnagie understood human nature and humans haven't changed. Get your company to send you to the course. |
| Wed 22 Jan | Yablan | 'Herding Cats: A Primer for Programmers Who Lead Programmers'
by J. Hank Rainwater
I have not read this one, but its intent eerily matches your needs (programmers leading programmers). Look it up on Amazon, it might be worth it. |
| Wed 22 Jan | Ralph Chaléon |
We're all peers, so there's no mandated 'authority' behind my leadership role. I have to do it the old fashioned way, earn it.
Might give you some hard time. I remember a few years ago, I was in the same situation. I had to struggle with one of my ex-peers because he tough he could do the job better.
Later, he told me how much he learned while working on my projects. I think I learned far more from him than he learned from me.
Reading books can help you, because you will see general schemes in the situations you face. Maybe it will also spare you some BIG mistakes.
But IMHO, dealing with people is the more complex task in a professionnal life, and you will have to make your own experience, it's something you won't learn in books.
I hope my shaky english doesn't make me sound too scary.
Managing is fun ! |
| Wed 22 Jan | Dino | It doesn't matter what books you read (or don't). Just be yourself ('cause you cannot be somebody else), don't worry about anything else but doing your job at your best.
Never treat people disrespectfully nor ask them to do things you cannot do (if you can't/won't do it, be sincere and let them decide and you manage the process).
Secondly, never and I mean NEVER let anybody else, no matter who he/she is, hurt your team. You have to mark your teritory and kill anybody who's into playing games with your team. Your job may be at stakes at times, but that's really what it takes.
If you treat people fairly and with respect, with time they'll accept you as a leader. And if you trully fight for your people, soul and heart, they'll follow you in hell (if that's what really takes to get things done 8) |
| Wed 22 Jan | Stephen Jones | If you haven't got any mandated authority I'd get it quick.
Otherwise you're letting yourself be set up so your boss can take the credit and you the blame; and you'll lose your colleagues as friends as well |
| Wed 22 Jan | apw | Yablan wrote
'Herding Cats: A Primer for Programmers Who Lead Programmers'
by J. Hank Rainwater
I have not read this one, but its intent eerily matches your needs (programmers leading programmers). Look it up on Amazon, it might be worth it. '
I've read it. Very interesting, especially for those new managers; ones who've been 'promoted' to managership. |
| Wed 22 Jan | Matt H. | >I've been tasked with taking on a leadership
>role within my team. We're all peers, so
>there's no mandated 'authority' behind my
>leadership role.
Respectfully, this sounds like your management is painting you into a corner.
Responsibility without authority is meaningless.
Get some document that says you are a supervisor and will have input into the annual evaluation/raise process.
THEN assume that you don't really have any authority anyway and go buy 'The Deadline' by DeMarco and similar books. The Deadline has a good bit in it about how to create authority from sources other than the traditional chain of command. Plus it's darned interesting (it's a management textbook in novel format. Not the best novel ever, but it's good, and it sure beats any textbook I've ever read. Peopleware is probably the best 'textbook' I can think of - also deMarco. and there's 'Slack' ... also DeMarco. Hmm ...)
:-)
good luck ... |
| Wed 22 Jan | Curmudgeon | First of all, it does not appear that anyone here has asked you what your mandate actually is. What will be different about your role in the group vs. everyone else's role, since you're still a peer?
I'll take a stab, in lieue of any more detailed info, and assume that you're being tagged as a mentor, role model, and/or possibly a sort of defacto technical lead and architect,but without formal management responsibilities.
This kind of role is both a really good idea, as well as showcasing just how dumb your employer can be. Why? As already stated, responsibility w/o authority is meaningless. It sounds like a 'soft' job title; as though your employer sees you as the most senior and/or productive and/or mature person in the group or the like, and wants to formalize this role, yet without giving you very much in the way of definition. I see a role delegation like this as an ego palliative. More below.
IE: the apparent lack of a 'real' mandate would seem to indicate that you can and should stop being a 'leader' when those actions interfere in any conceivable way with your boss's objectives.
A 'mentor' is a great idea. But I have yet to work in a company in the last 15 years that would respect the role of a mentor. As soon as a current fire drill arises, mentorship is shitcanned.
I had this kind of role years ago. It was stupid, an exercize in frustration. EVERY time I EVER tried to use the role to help mentor a guy in my group that was floundering and doing nothing but BSing and reading emails all day long, he'd get yanked off onto a maintenance project and any and all notion of where I was with him was totally lost. This guy had many ways of evading any kind of learning that I could impart, and I had absolutely no influence on his task priorities. So it was a totally fluff, ego appeasement role. Someone thought I would eat up the image and ego stuff and it didn't 'cost' the company anything...
Myself - if I were given such a role today, I would do absolutely NOTHING different, and I would go about my day to day job exactly as before until a superior informed me what I was supposed to do 'leader' wise and was quite specific about what they expected me to do and comprehended the impact that it would have on other 'real' work. |
| Thu 23 Jan | Eric Moore | I assume you're talking about being some sort of project/technical lead for a small team, that is managed by somebody else. I think you'd have far better luck having a quiet chat with somebody else who recently went through the same process, than reading a book.
Is there some 'leader' in your organization that it seems everybody wants to work with, or who has a lot of influence with his peers? Sometimes its just because the person is real popular, but they might be a good role model. |
| Thu 23 Jan | Matt H. |
'Leading without power'
Max De Pree.
I haven't read it, I'm going to call my library soon and request it, though.
Inter-library loan. Takes a couplea weeks to get the book, but it's FREE. Free. free. |
| Fri 24 Jan | BC | Actually, the boss told me in my review that he's been promoted. He's still our boss though because no one in the team has taken a leadership role to earn the promotion to fill his old job.
I'm looking to take the leadership role while still working as a peer so that I wind up the new boss. So, it's not one of those situations where you get stuck in a bad spot. I'm just trying to rise to the top of the heap, so to speak.
Thanks for all of the book recommendations. I'm probably going to start with the Carnegie.
BC |
| Fri 24 Jan | Just me (Sir to you) | 'I'm looking to take the leadership role while still working as a peer so that I wind up the new boss.'
Now this is a completely different issue, unless the 'new boss' thing will be a democratic team descision.
You see, the best peer leader might not be seen as a leader at all. You want to convince the 'old boss' that he should pick you, so you will have to be seen to take on leadership roles. Kiss ass and do a stage performance might get you higher on the candidates list than any of the true peer leader qualities. |
|
| Windows XP is not an operating system | Sat 18 Jan | HeyMacarana |
|
http://www.pbs.org/cringely/pulpit/pulpit20030116.html
Cringelys true ignorance is beginning to show.... maybe he should stop pretending he understands techie stuff and go back to flying his old planes. |
| Mon 20 Jan | Just me (Sir to you) | Cringely is a joke. Surely we could run the XP kernel on top of a VM that runs on a Linux kernel, but why would anyone want to do this? This would be pure overhead, without a single benefit.
A more interesting project could be running a Linux personality on top of the XP kernel. Pure as a research topic though, since I doubt very much there would be any commercial incentives.
Related link:
http://www.cs.cornell.edu/vogels/papers/informatik.pdf |
| Mon 20 Jan | Ian Stallings | [Cringley seems to miss the point that without the Win32 subsystem, the NT kernel is a awesome piece of engineering that quite probably IS better than Linux. ]
Exactly! XP is based on the NT kernel which is based on the work of DEC and it's VMS operating system, a unix like variant OS, created for the VAX minicomputer (Actually Microsoft stole the team that created VMS and was subsequently sued by DEC and was forced to create the Alpha version of Windows NT but I digress..).
Never the less the NT kernel has a lot of history and work that cannot simply be thrown away because Linux is gaining popularity and NT is being seen as an arguably unstable and insecure OS. I don't personally agree but nonetheless it is argued repeatedly every day on the internet.
But here is where Cringely's article gets good:
[Linux is better, faster, stronger than whatever is living underneath XP now, right?]
faster? I wonder if Cringely has ever actually used Linux?... Yes some services/daemons are faster on Linux (this is up for debate also). But to call the entire thing faster? Hahaha. Good one. I'll make sure I remember that the next time I run GNOME or KDE and it's slow as a dog. His statement reeks of ignorance.
Look I like Linux a lot and use it every day in my home setup. But to say throw away the NT kernel and place windows on top of Linux is ignorance. However I would not be surprised if Microsoft released a *nix based OS if they felt that it made sense in the future. They could create a windowing system that rest on top of BSD or GNU/Linux just like KDE or GNOME that could run windows applications using a emu set up similiar to WINE. But again, it would have to be in their best interest and I don't see it happening any time soon. |
| Mon 20 Jan | Stephen Jones | I would expect any NT based system after NT4.0 to run faster than Linux. The reason is that the video display can access the hardware directly in NT, whilst in Linux you have a whole house of cards with the X Windows manager on top of the shell and then the windowing system on top of that.
Giving the video driver direct access was a debatelable decision; it caused increased instability in return for speed.
Indeed one of the advantages of a Linux server is the fact that you don't need to install a GUI at all. |
| Tue 21 Jan | John Topley | Do you have any figures to back up your assertion that it caused increased instability, Stephen? |
| Tue 21 Jan | Ged Byrne | I thought Microsoft could add a Linux subsystem anytime they wanted:
http://www.windowsitlibrary.com/Content/356/01/1.html#2
Am I oversimplifying? |
| Tue 21 Jan | Stephen Jones | 'Do you have any figures to back up your assertion that it caused increased instability, Stephen? '
I'm quoting Mark Minasi here 'Mastering Windows 2000 Professional' Chapter 18, p560. What he was saying is that from NT 4 onwards the display drivers work in Kernel mode; as they are not written or tested by Microsoft, then he reckons there is going to be some increased instablity. Obviously the more there is that is running in Kernel mode as opposed to user mode the more chances there are of instability. |
| Tue 21 Jan | Stephen Jones | 'I thought Microsoft could add a Linux subsystem anytime they wanted:
Am I oversimplifying? '
Sorry to be pedantic but Linux is not an operating system it is a kernel. How you can add a kernel to a kernel is beyond me. |
| Tue 21 Jan | John Topley | 'I'm quoting Mark Minasi here 'Mastering Windows 2000 Professional' Chapter 18, p560. What he was saying is that from NT 4 onwards the display drivers work in Kernel mode; as they are not written or tested by Microsoft, then he reckons there is going to be some increased instablity. Obviously the more there is that is running in Kernel mode as opposed to user mode the more chances there are of instability.'
That's correct but there is another crucial fact that is usually overlooked. The Win32 subsystem is the primary environmental subsystem within the Windows NT architecture. In versions prior to 4.0, display drivers run in User mode within this subsystem. Because it's the primary subsystem, Windows NT is actually designed to shut down the entire OS if a crash brings the Win32 subsystem down. After all, a kernel isn't much use without any means of inputting or outputting data, is it? Because of this, Microsoft decided that the increased performance resulting from the reduced number of context switches from Kernel to User mode was worth any theoretical loss in stability. |
| Tue 21 Jan | Just me (Sir to you) | Stephen is right. That is why I said add a Linux personality on top of the XP kernel (such as the Posix personality or the now defunct OS/2 personality), but I guess this is also what Ged refered to. |
| Tue 21 Jan | Just me (Sir to you) | Reading that post again, Ged also refered to a Linux subsystem, not a kernel. |
| Tue 21 Jan | Stephen Jones | 'After all, a kernel isn't much use without any means of inputting or outputting data, is it? Because of this, Microsoft decided that the increased performance resulting from the reduced number of context switches from Kernel to User mode was worth any theoretical loss in stability. '
Minasi answers this point very clearly. If you've got a server you don't need a GUI or indeed any input output devices.
All the performance enhancement caused by letting the Win32 system run in kernel mode as opposed to user mode is for a workstation.
The point is that NT workstation and NT Advanced Server to give it it's original name were actually identical. People found out that you simply had to buy the workstation and then change one registry key and you found that you had NT Server, with the added bonus that as it was still officially a workstation you didn't have to pay for any client licenses.
There is an official Microsoft report on changing over Hotmail to W2000 from Linux, where it was admitted that Linux was easier to administer precisely because it ran from the command line. |
| Tue 21 Jan | John Topley | With the current design of Windows NT/2000/XP, the NT kernel is, in practical terms, useless without the Win32 subsystem. This has nothing to do with whether the operating system is being controlled using a GUI or CLI, locally or remotely. The kernel depends upon components of that subsystem, for example, the message queue. It could be re-architected in a non-pragmatic way, so that the kernel could continue running when all around it had failed but with no contact with the outside world, what would be the point of that? |
| Tue 21 Jan | Stephen Jones | >>>>>>>>>the kernel could continue running when all around it had failed but with no contact with the outside world,<<<<<<<<<<<<
I'm not sure who you're adressing with this. I presume it's those who think Critchely's arguments are practical.
You have to have the whole kit and caboodle with NT. What I am saying is that in order to increase performance for the workstation they compromised on what was needed for a server. |
| Tue 21 Jan | John Topley | 'You have to have the whole kit and caboodle with NT. What I am saying is that in order to increase performance for the workstation they compromised on what was needed for a server.'
How would you have designed things differently? |
| Tue 21 Jan | Just me (Sir to you) | 'There is an official Microsoft report on changing over Hotmail to W2000 from Linux, where it was admitted that Linux was easier to administer precisely because it ran from the command line.'
Tiny pedentaic point but it was FreeBSD, not Linux.
It has been a while since I read this, but I believe the main point on ease of administration back then was that the existing admins were very proficient in their environment and not used to Win2K at all. This was the main reason they used SFU (http://www.microsoft.com/windows/sfu/default.asp)
This presents through the Interix subsystem sort of what we were talking about, but it is Unix, not Linux.
relevant links:
http://asp01sea.activate.net/microsoft/teched2002/publish/WIN308_files/default.htm#profile=1
http://www.microsoft.com/technet/treeview/default.asp?url=/technet/prodtechnol/windows2000serv/case/hotmail/hotop.asp |
| Tue 21 Jan | Stephen Jones | Point taken about BSD.
What I remember was that they said it was easier to administer a large server cluster in Unices because of the ability to write batch files. The fact that NT used a GUI appeared to make things a little more difficult. |
| Tue 21 Jan | Stephen Jones | >>>>>>How would you have designed things differently? <<<<<<<<
I'm not saying I would.
Presumably MS decided that it was too expensive to design a separate server and workstation system.
W2000 does appear to be having trouble getting the mid to high end server market though (and of course loses much of the low end market because of price). |
| Tue 21 Jan | John Topley | I doubt it was cost that was the issue. I think they probably asked why administering a server should force you to use command line tools in an age of graphical users interfaces. There was probably something in there too about consistency of user experience across different products in the Windows range. Having said that, one of benefits they're touting for Windows Server 2003 is that it features much better support for command line and remote administration, so they are learning that that's important for a server. |
| Wed 22 Jan | John Topley | Thinking about it a bit more, cost would have been more of an issue for MS back in 1988 when work started on what would become Windows NT. They were still 'riding the bear' as Steve Ballmer called their relationship with IBM. MS-DOS was a cash cow but Windows 3.0 hadn't yet exploded into the world. |
| Wed 22 Jan | slarty | Also, bear in mind that from a *nix perspective, for most users anyway, if X dies, the box has died.
If you boot into X, and all your apps are X, when X dies all your work is lost. The only benefit is that you don't have to reboot, but for a workstation, you might as well.
For a Win32 server it's pretty unlikely that you'll hit a video driver bug, as most of the time there is no one logged in to the machine, so no GUI activity is taking place.
Also, to make a blanket claim that the Linux kernel is better than the NT kernel is a bit much. Each has it's strengths and weaknesses. |
| Fri 24 Jan | Ged Byrne | -------------------------------------------------------------------
such as the Posix personality or the now defunct OS/2 personality
--------------------------------------------------------------- Sir
Thats exactly what I meant. |
|
| What's missing from CS curricula? | Thu 16 Jan | Curious Student |
| Im wondering whats missing from computer science, software engineering, applied math, and other computer-related curricula?
Based on what I see posted most often here and elsewhere, it seems like graduates of these programs often dont get a good grounding in business fundamentals. What else is missing? |
| Fri 24 Jan | Jason McCullough | Now, I understand the need for theory classes, don't get me wrong, but how can you take a Principles of Programming Languages class without writing at least a rudimentary parser, or a Databases class without writing a single line of actual code, or take a Graphics class without finding out how a ray tracer is actually *made*.
Maybe the problem is with your program; in mine (University of Oklahoma) we did all of those. |
|
| BBCi | Wed 15 Jan | Ged Byrne |
| While web sites are desperately trying to find revenue streams, the BBCs website goes from strength to strength.
I dont know of any other portal that match the depth and range.
http://www.bbc.co.uk/
Do you think that the BBCs public funding gives them an unfair advantage ( http://uk.news.yahoo.com/030115/80/djbjn.html ) or could this be the way of the funding the web for the future?
Is there anything else out there quite like it? |
| Mon 20 Jan | Mathematical Dunce | Provocative post from I Just Like to Read
'The BBC levies a £2.5 billion tax on UK television owners.'
Whereas 'adspend' in the UK is £16 billion or more, of which television accounts for 25 - 30%. Of course, this is in decline at present.
http://www.adassoc.org.uk/pressoffice/newsreleases/nr105.html
Adspend is a tax on anyone who buys pretty much anything, as producers, retailers etc. just lump the cost of advertising into the price.
Although some adverts also qualify as quite good and amusing programs (the first couple of times you see them). 'Guess what it's selling' is a popular game.
'What we get in return is a load of left wing propaganda'
You think it's _left_ wing? You have been reading the Daily Mail for way too long!
'very few programmes worth watching'
Sadly all too true, but they are still only the worst except for all the rest. And do you imagine that if the BBC wasn't there to compete on all fronts that commercial television would improve? Dream on.
'Most intelligent viewers only watch TV for the US shows - Friends, Frazer, etc'
Some US series are excellent, true, but why intelligent people should watch anodyne dross like the two mentioned, I have no idea. Zzzzzzzz! Perhaps they were swayed by the advertising.
It's all been downhill since they added pictures to radio, anyway!
The best thing about the BBC website is the listen on demand facility: choice, quality and convenience! (Although I'm afraid that Jeremy Hardy is just a little bit left wing.) |
| Mon 20 Jan | David Clayworth | If you think the BBC produces bad programmes, just come over here to North America and see what really bad programmes are like. For example:
There is almost no such thing as prime time current affairs.
There is absolutely no such thing as prime time science programs, even on cable (unless your idea of a science program is 'Very Big War Machines'). There is pretty much no such thing as a current science program at any time, never mind prime time.
Whoever thought that only US programmes were worth watching, try watching them some more. At least until you can spell 'Frasier'. The best US programmes are worth watching, and British TV has imported pretty much all the good ones. But if you imagine that there are a whole lot more of the same quality out there waiting to fill up the British schedules you are sadly wrong.
If you think the BBC is left wing, go and find out what real left wing is. By world standards the BBC is pretty middle of the road.
Actually the difference between the BBC and NA commerical TV is very simple. NA TV is there to Entertain, not to inform. Always. Whatever kind of programme. Even its news is designed to entertain. News items are selected for how many viewers they will attract, not how important they are. This may be true to some extent of the BBC, but it is less so. It doesn't have to live day to day by the ratings.
For example, just before the 2000 US Presidential campain, the Republican electoral officers in Florida purged the electoral rolls of anyone who might be a felon - by which they meant had a similar name, date of birth or Social Security number to a felon. No proof was required. Just the suspicion was enough. Surely an important story. Who broke this story? Not CNN - the BBC. |
| Tue 21 Jan | I just like to read | The version of the world presented by the BBC bears no relation to world most UK citizens live in. At the moment most of us are very angry at the way the police and courts have surrendered to the criminals and they are terrified about the number of Muslim fanatics entering the country now that our immigration controls have collapsed.
The mindset of the people who run the BBC is that most people - with the exception of conservatives - are naturally good and that any restraints on their behaviour are bad. Most people in the UK do not believe this. They know that the only way to stop criminals from preying on the weak in society is to lock criminals away for a very long time. The BBC bosses think that 'criminal' is a relative term and that most of the people in our jails are political prisoners. Most people think pornography is debasing and is a very bad thing. The BBC bosses think pornography is liberating and will do us good. Much of the output on the BBC seems to be a deliberate attempt to undermine the morals of decent people and their families. I believe the BBC to be an evil organisation which is being used by a small group of left wingers to destroy the country so many of us loved. My comments also apply to much of the commercial output in the UK. I have watched TV in the US and although most of it is very bad at least you are not paying for it. You have to watch more ads but they are more interesting than the BBC ads.
I don't own a TV because I refuse to pay the licence fee. But I would like say this to any US readers of my comments. Every time you log on the BBC site or watch any BBC programmes you are putting money in the pockets of people who think you are unsophisticated simpletons and who despise your country - the last free country in the world. |
| Tue 21 Jan | | I just like to read - Mein Kampf.
Oops, end of thread!! |
| Tue 21 Jan | Stephen Jones | Dear Just likes to read,
What puzzles me is, if you refuse to have a television set how you can be so clued up about what is happening with BBC television.
Or perhaps you can hear the voices and see the pictures without the need of technology. |
| Tue 21 Jan | I just like to read | Mein Kampf ? I don't get it. I'm just expressing the views of people like my old work friends - many of whom helped to defeat Hitler. Some of these people are now dead and I am glad in a way that they are dead because what has become of this country would have broken their hearts.
How do I know about the BBC if I don't watch it? Well, it often on in the pub I usually go to and I sometimes fail to get them to turn it off or over. Also some people like to talk about what they have seen on TV. I listen to the great Alistair Cooke - 95 or 96 and still going strong - on BBC Radio 4 on Sundays mornings. It gladdens my heart to think the lefties have been trying to sack him for 50 years and they have failed. I think the Queen likes to listen to him and she has blocked his sacking or early retirement. If he outlives the Queen then he will get his marching orders.
Just imagine if any other country apart from America had invented the internet. It would never have got off the ground. Only a creative and productive people like the Americans could have done it. All the other countries steal their software and technology and still the Americans are miles ahead of the rest. I bought a BBC computer when it came out. It cost me £400. What a load of rubbish. Not going down the Microsoft road meant a lot of wasted time. |
| Tue 21 Jan | Neil E | So why did the US turn down your visa application? I can't think of anything else that's stopping you emigrating. |
| Wed 22 Jan | David Clayworth | Hi Just Like To Read
From your last post I sympathise with your nostalgia a little bit. However I think you may have a rather rosy opinion of the US. Have you ever been there?
Alistair Cooke would not have lasted five minutes on US radio. This is because pretty much all US radio does nothing but play music. Even if it didn't, a slow-paced, whimsical, factual broadcast from a foreign country would last about as long as the Paint Drying Show. Don't get me wrong, I like Alistair Cooke too, but US radio would never find a place for him. He doesn't appeal to the right demographic (the ones with money) and he would be too expensive. There isn't any place in North America with a radio station the equivalent of Radio 4. The Canadian Broadcasting Corporation does a pretty good job (it's funded with government money too), but if you came to the US you'd probably be listening to Country music on Sunday mornings. :-/
How about healthcare? Do you think US healthcare is going to serve you better than the UK? |
| Wed 22 Jan | I just like to read | Yes, I've been to the States. Great place, great people, terrible food. I'm not looking for a green card or whatever it takes to get a job there. I'm more or less retired.
>How about healthcare? Do you think US healthcare is >going to serve you better than the UK?
Ok, we've got free heath care in the Uk. Big deal. I'd rather have good health care. If you go in to a British hospital you stand a fair chance of coming out sicker than when you went in. For the last few years I think I've had a stomach ulcer. I could have gone to the local doctor and queued up with a load of asylum seekers, drug addicts and other rubbish and been seen by a doctor who has no interest in her job. I would rather put up with the stomach pains. I haven't got much money but if I get any worse then I will seek private treatment. Look at the teeth of the average American and then look at the poor state of our teeth - that tells you all you need to know about free health care.
>Alistair Cooke would not have lasted five minutes on US >radio.
Alistair Cooke lasted decades on US TV but I am not sure if he did much radio in the US.
The quality of debate on the US phone radio stations is far above anything we hear on the BBC. This is because the US is a democracy. We just hear the same kinds of Tory careerists or left wing rent a gobs on all the main political talk shows. The little man is rarely allowed a voice. If the average man or woman in the UK tried to say what they felt about the state of our country on the BBC they would be cut off in seconds. Listening to the radio in the states I have heard a wider and more intelligent range of arguments than I have ever heard in the UK. |
| Wed 22 Jan | Neil E | IJLTR, when I went to the doctors I had to get in the queue with an old lady and a younger lady with a toddler. Really, you should go, it's not as bad as you've been told.
Also, dental healthcare is *not* free for working people here, maybe we're just not paid enough to make it a priority.
And finally (going back to a point you made earlier in the thread), the R18 film certificate was recently introduced specifically to allow European and American-style hardcore pornography to be sold in this country. |
| Wed 22 Jan | Stephen Jones | >>>>>>>>I could have gone to the local doctor and queued up with a load of asylum seekers, drug addicts and other rubbish <<<<<<<<<<<
But if Britain is as bad as you say it is shouldn't you be fleeing to ask for political asylum somewhere 'free'?
As for Alistair Cooke on US TV I always thought it was PBS he was on anyway.
I'd sure do something about that stomach ulcer though! It's turning you bilious! |
| Wed 22 Jan | Freedom lover | Last free country? I can think of several countries which have much stricer laws on pornography, and which do not allow broadcasters to undermine the morals of the country, and certainly would not tolerate left wing views on their national broadcasters. Iran and Saudi Arabia spring to mind. In Saudi Arabia at least you could get good quality healthcare as long as you can pay for it. And you certainly wouldn't have to wait in line with asylum seekers. Therefore they must be at least as free as the US mustn't they? |
| Wed 22 Jan | Stephen Jones | >>>>>>>>>In Saudi Arabia at least you could get good quality healthcare as long as you can pay for it.<<<<<<<<<<<<
Actually all Saudis and many expats get health care for free. I wouldn't say it was too bad, though people do tend to get sent to the UK or Germany for the complicated stuff.
Having sampled health care in half-a-dozen countries I would say that the little known secret is that there is a much greater difference inside countries than between them.
In the UK I keep the same GP I had in the eighties even though I haven't been in the area for fifteen years except to visit him, not only because he is exceptionally good, but because it means I get referred to the London teaching hospitals. I'd prefer not to give you my opinion of the local hospital, but family have instructions to put me on the boat to Calais if anything serious happens.
The best casualty departments in the world are in Spain; the worst I have ever been in (and that includes Sri Lanka and Greece) are in the UK. But if you have a heart attack in Blanes Catalonia, then make sure you crawl across the dry river bed of the Tordera river so you get sent to a Barcelona hospital, because if you go to the Girona one you will die in a trolley in the corridor. |
| Wed 22 Jan | I just like to read | >But if Britain is as bad as you say it is shouldn't you be fleeing to ask for political asylum somewhere 'free'?
If I didn't have my family here I would have gone years ago. My advice to any young person who wants to live a good life is to go to New Zealand or the US. I have traveled to many countries and I found these two countries both contained decent sensible people and plenty of empty space.
Most people know what freedom means. It doesn't mean giving some low life the right to show porn films to kids. It means protection from tyranny. The tyrant might be the head of state or it might be the local gangster who controls your neighbourhood. The only way we can be protected from tyrants is either to arm the citizens and to allow them to defend themselves or to have a strong policeforce which is answerable to the local citizenry or their representatives. Whichever way you look at it we are not protected against tyrants in the UK. There are now large areas of London and other cities where the police will not enforce the law and the local people are not allowed to defend themselves against the drug barons and other criminals who control these areas. In America the citizens are allowed to defend themselves and as far as I know the police have not given up the fight against crime.
It is silly to make comparisons between the US and Saudi Arabia. I am not saying a country is free if it bans pornography and bans left wing views. When I say America is the last free country I mean it in the sense stated above. |
| Wed 22 Jan | Stephen Jones | >>>>>>>>>these two countries both contained decent sensible people and plenty of empty space. <<<<<<<<,
So all the other countries you've been to don't have plenty of decent people?
The empty space is certainly a good idea, but I reckon that wherever you go you would just have to open your mouth to find acres of empty space unfold before you.
Just as a matter of interest, what is it you 'just like to read'? Sounds like you've picked up some science -fiction undergournd crime sexploitation comic and mistook it for your local weekly news. |
| Wed 22 Jan | David Clayworth | I guess if owning guns is important to you, then the US is the place to be. For myself, I would choose no guns, and a murder rate six times lower.
I'll be signing off this thread now. And for you Americans out there, sorry if I sound negative about you. You have a wonderful country with many good things going for it. I'll look forward to visiting you soon. |
| Wed 22 Jan | Stephen Jones | Actually for owning guns Yemen is the place. They even sleep with them.
Don't ask about the murder rate though! |
| Wed 22 Jan | I just like to read | >Just as a matter of interest, what is it you 'just like to read'?
I came on to this site to get idea about the latest trends in programming and when I saw the comments about the BBC I saw red - literally. I don't normally add comments unless I feel strongly about something and that is what I meant by 'I just like to read.'
>So all the other countries you've been to don't have plenty of decent people?
I said sensible and decent people. A lot of people are decent - i.e. fair and honest - but you will often find that they are not very sensible. Look at the Spanish. A very noble and generous people, but look at what they have done to their country. All their coastal resorts are ruined just to make a short term profit from the worst kind of UK tourist. Now they want to invite in millions of South Americans who have already ruined their own countries. Not very sensible.
>Sounds like you've picked up some science -fiction undergournd crime sexploitation comic and mistook it for your local weekly news.
You try reading my local paper. Rape, murder, treason. And that's just the sports pages. |
| Wed 22 Jan | Stephen Jones | >>>>>>>>>Look at the Spanish. A very noble and generous people, but look at what they have done to their country. All their coastal resorts are ruined just to make a short term profit from the worst kind of UK tourist.<<<<<<<<
I lived in Spain for fifteen years. I'd say the average Spaniard is as sensible, or more so than the average Briton or American.
If you want to talk about wrecked coastlines how about the British. When Blackpool beach found itself having to put a health waring forbidding people to bathe in the water because they were so cheapskate they poured raw sewage into the sea the comments where 'who would want to swim on the beach at BlackPool anyway?'. At the same time this was happening the Spanish beaches all had the four or five star EEC flag.
The only thing that has stopped them concreting over the whole British coastline is the weather; nobody wants to go on holiday at the British seaside.
And whatever the Spaniard's faults you don't get the ignorantly patronizing 'a generous and noble race but not really .....' that you are indulging in.
As for the millions of South Americans that ruined their own countries, that's marvellous. The reason they're coming back to Europe is that that is where they left when South America was the second richest place in the world after the States.
And what's sensible about murdering Maoris and Red Indians anyway. |
| Wed 22 Jan | I just like to read | Oh dear ! I only wanted to find out about PHP and Python.
I have never been to Blackpool but I have been to Peru and most of the people I saw there - particularly in the countryside - looked Indian, but if you say that they the descendants of the Spanish invaders and they are only going back to their home country it still doesn't contradict the fact that they have made a mess of South America and if they continue to behave in the same kind of way in Spain then they will make a mess of Spain.
>South America was the second richest place in the world after the States.
It might have been rich but the Aztecs and Incas were controlled by evil tyrants who were just as bad as the men who crushed them.
>And whatever the Spaniard's faults you don't get the ignorantly patronizing 'a generous and noble race but not really .....' that you are indulging in.
I go to Spain quite a lot. I find them generous - i.e. not mean - and noble - i.e. proud and dignified. Is that wrong or offensive ? There are exceptions, of course, but that is my overall impression. Should I pretend that national characteristics are a fiction ?
>And what's sensible about murdering Maoris and Red Indians anyway.
I have met many Maoris and although they can be a bit hot headed after a few drinks on a Saturday night I don't think it is polite to call them 'murdering Maoris.' Yet if you look into their history you will find that cannibalism was part of their culture until quite recently. |
| Thu 23 Jan | Stephen Jones | Wrong thread for PHP and Python I'm afradi. Scheck theo other threads on the forum.
I think we had better be ending this one now, so quickly; the period when South America was rich that I was referring to was in the first half of the twentieth century; it hadn't been devasted by warr like Europe or Japan, and in places like Argentina there were a lot of opporitunities. The people who went over (primarlily Italians and Soanish, though you will find a German contingent in Mexico and Chile, a Japanese in Peru, and of course the Welsh in Patagonia) were poor farmers or workerrs looking for a better life, just lke their counterpart s who emigrated to the States, Canada, australia or New Zealand. Now the economic cycle has changed and they are on their way back.
>>>>>>>>Should I pretend that national characteristics are a fiction ?<<<<<<<<<<
You would probably be right if you did!
When iI referred to murdering Maoris I was thinking of the Maoris being killed by white setllers as happened to the Aborigines in Australa, and even more so in Tasmania where they became extinct. I did have a New Zealand friend thoug,h who reckoned that 'murdering Maoris' described them to a tee, and that it was exaclty what all right-minded New Zealanders ought to be doing! |
| Fri 24 Jan | Ged Byrne | --------------------------------------------------------------------------
The version of the world presented by the BBC bears no relation to world most UK citizens live in. At the moment most of us are very angry at the way the police and courts have surrendered to the criminals and they are terrified about the number of Muslim fanatics entering the country now that our immigration controls have collapsed.
----------------------------------------------------- Just like to read
You certainly have been reading the Daily Mail for too long. |
| Fri 24 Jan | Ged Byrne | ---------------------------------------------------------------
You have to watch more ads but they are more interesting than the BBC ads.
----------------------------------------- Just Like to Read
What, even the one with the chap jumping over the roofs? Surely not! |
| Fri 24 Jan | Ged Byrne | ----------------------------------------------------------------------
Sounds like you've picked up some science -fiction undergournd crime sexploitation comic and mistook it for your local weekly news.
------------------------------------------------- Stephen Jonnes
Just like I said, the Daily Mail:) |
|
| Dim As New | Wed 08 Jan | Better than being unemployed... |
| One of the most significant things I noticed in Joels new article on VB6 & DAO was the following code :
Dim article As EArticle : Set article = New EArticle
rather than ...
Dim article As New EArticle
Now, this reminds me of a permanent religious war that follows me from job to job. I dislike Dim .. As New with a passion, for the following reasons :
* It makes code more difficult to read, in as much as you cant easily tell whereabouts an object will be initialised. Whereas if you explicitly create an object using Set, you know exactly where Class_Initialize is going to be fired, without any surprises. (And if you declare module level variables As New, thats even worse.)
* Somebody once told me using it can cause memory leaks due to bugs in the VB Virtual Machine.
Yet, most code I come across uses Dim ... As New everywhere. Maybe they all read Bruce McKinneys approval of it in Hardcore Visual Basic (see http://www.mvps.org/vb/hardcore/html/declarationswithnew.htm).
What are your thoughts, oh VB gurus? |
| Fri 24 Jan | Thomas Eyde | 'They are the landmarks that help you find your way, and that you don’t even notice that are there, until they’re not'
What if no methods are not longer than 20 lines, or at least no longer than your monitor can show at once? In really short, cohesive methods you need no landmarks. It should be pretty obvious what's going on. Looking at 10 lines of code a 'Dim As New' should be easy to spot.
The fact that it saves me one line and look cleaner makes it my preferred choice. As I probably wrote earlier, I let the circumstances decide when 'Dim As New' is useless. Those circumstances are rare. |
|
| Requirements Definition | Thu 23 Jan | happy to be working |
| I just HAD to post this...
My boss finally agreed that we should write down requirements before starting on a project! (It was a difficult battle).
Now I have to convince him on some design... |
| Thu 23 Jan | Attending the wake | And you have to make sure that the requirements are used to drive the design, implementation, test, and sign-off of the project.
And that changes to them are controlled.
But hey, congratulations on a good first step. |
| Thu 23 Jan | anonQAguy | happy:
'Now I have to convince him on some design...'
are you asking about how to structure/format the requirements? or are you talking about the design of the objective system? |
|
| Formatting the hard drive | Wed 22 Jan | Dave B. |
| To me formatting the hard disk is like cleansing your system of all those nasty DLLs. It makes it easier to test installations and even the program you are working on. Especially with VB/ADO and all of the DLLs that accompany that mess. I like to format just to keep my development hard disk clean. I normally back up important files/programs and then reinstall just WinXP and Visual Studio. Im thinking about getting another hard-disk or a server to just hold all of the junk I download and have backed up on CD.
How often do you guys format your development and test systems? On your test machine(s), do you format the hard disk before every installation test or do you simply do a restore of a clean system off of a back up. If you do a restore what software/hardware do you use? |
| Wed 22 Jan | Daniel Shchyokin | I really hope you mean re-image, otherwise you are wasting time. |
| Wed 22 Jan | Mitch & Murray (from downtown) | A complete format and install every six months or so is the rule here at Mitch & Murray. In addition, we have test systems that have a clean disk, and then we use Ghost to blast over a fresh/clean OS install which we then use for any testing / tool eval / install and deployment tests. This way we can have a fresh virgin install of any Win32 flavor and most Linux flavors up and running in the time it takes to Ghost the image over - 5 minutes or so.
The Ghost techique we have found to be _vastly_ easier & better than doing it all with VMWare. It takes a few hours to install & Ghost the images over to a server, but after that investment of time you are in business forever.
The Ghost utility is also great for doing a complete stand-alone backup of any system to a server drive. We do our laptops that way weekly - takes about an hour for 20GB, runs totally unattended after it first fires up.
Might I also add that DVD writers are now in the $300 range, and they are the cat's ass for backing up critical data, and our Sony DVD+R writer will burn 4.3GB in 20 minutes, all with negligable system loading.
These are great days to be a geek. |
| Wed 22 Jan | Daniel Shchyokin | Ah, you aren't (your reinstalling visual studio), check out ghost image |
| Wed 22 Jan | Tj | I tend not to like testing on absolutely clean, controlled machines. You're just ensuring that your program will run under optimal conditions. (Of course, if it's meant to run in a controlled environment, nevermind.)
Still, I like using both clean and dirty systems for development. With the dirty ones, I can download stuff and experiment.
Heterogenous environments rule. |
| Wed 22 Jan | Stephen Jones | I make two Ghost images. One directly after I've installed the OS and made all those little customizations to the desktop, start menu, and so on that take a load of time but make up for it in comfort, and a second one a few days later after I have installed all the software I'm going to be using. I rarely bother with another one, as I reckon that it would take up too much space and stuff I install after the first time is rarely stuff I'm 100% certain to want to reinstall again.
Obviously I have all data on the D drive (and the Windows install disk on another FAT32 partition).
If you're looking at a testing machine, then you want to install just the OS and the program you're running. Using Ghost appears the best way, as it will install an OS in less than ten minutes.
I would consider running the test again with some common software (Office, WinZip, Photoshop, Norton and others) installed, so that you can tell if there are any incompatibilities.
But as for stability I have found that W2000 has done away with much of the need for periodic reinstalls that used to be de riguer with Win98. |
| Wed 22 Jan | slarty | Madness!
I only *reboot* every 3 or 4 months (NT 4).
I don't register pointless stuff, and I remember to unregister things before deleting them. Works for me.
Reinstall - when I get a new machine is about it. |
| Wed 22 Jan | Albert D. Kallal | Ditto most comments about ghost.
I had a video driver locking up on my pc. (mouse and computer would freeze).
I tried re-installing the video drivers. Did not solve the locking problem.
Saved my work to a network drive.
Grabbed my nice image (with all nice windows settings and windows updates with browser, video drivers etc.). Also, it has all my personal prefs for windows, and even the ftp settings for the browser.
Time to re-install the image on the notebook? Less then 5 minutes! Back up and running!
The locking problem is gone, despite the video drivers being same as what is on my image.
Imaging is a fabulous for re-installing.
However imaging is a separate issue from testing. Vmware makes more sense for testing software.
I actually agree that re-installas should only occur every few years.
However, ghost makes it sooo easy, you can do it every few months and not care...
Albert D. Kallal
Edmonton, Alberta Canada
Kallal@msn.com |
| Wed 22 Jan | Flippy the Binhead | I used to be a reinstall maniac, but since 2000 and especially XP I find that my system works fine if I just let it go. |
| Thu 23 Jan | Alberto | I only rebuild my development PC from scratch when it's totally cactus.
I bought a new pentium 933MHz, with bucket loads of RAM and HD space a few years ago, it came preconfigured with Win ME, which, rapidly proving it's uselessness, was quickly replaced with XP. I've never had a crash in all this time, which is remarkable. I am yet to do a rebuild. Maybe it's just that I'm getting older and can't be bothered with all that stuff now. I'm far less anal about stuff like that than I used to be.
I have a 'hack' PC which I ghost to whatever version of windows I want when I need to test deployments. |
| Thu 23 Jan | John Topley | Oh yes, those nasty DLLs...sharing program code and making EXEs smaller ;-) |
| Thu 23 Jan | Better than being unemployed... | I wouldn't consider formatting my dev PC unless it was permanently hosed. It kills several hours of my day and stops me doing anything productive.
Now my test PC, by contrast, gets re-imaged all the time, but that's probably because I use it to test 95/98/NT/2000 installations (my dev PC's XP) and find almost all the install bugs when running off a totally clean OS. |
| Thu 23 Jan | anonQAguy | For the bulk of our testing situations, VMWare and a library of standard guest OSs I built serves us well. One project required 22 different target platforms, and I don't have space for that many boxes in our QA lab, nor could we spare that many physical boxes, so Ghost (a great product, but not always the right choice for every situation) was out.
In general, imaging a machine is always with Ghost (our sysadmin maintains a good set of standard images we pull from, depending on our machine type and role), but almost all our test environments are handled via VMWare by me. Occasionally, we have had some hardware-specific testing requriements arise where I either chose to or I had to use physical boxes (e.g. needed to test a game's min sys requirements for the mac and pc). For new projects or at other appropriate times, I start off with fresh copies of our reference VMWare guest OSs, and will make special 'dirty' copies that have sundry other crap on them as needed for the environment (e.g. had to install visual studio once, because of its debugger, to recreate a javascript bug on a particular build of IE 5.0 a client was seeing--weird).
We rarely re-image boxes, which includes our developers; might see one or two developer boxes get re-imaged a year, but normally it's only been if their box has started acting up.
cheers, |
|
| Making Easy things easy ... | Wed 22 Jan | Matt H. |
|
Ok, so I want to play an .mp3 or .wav file or something on my PC through windows media player or whatever ...
... and to be able to stick headphones into something to listen.
I dont want to have to unplug my PC speakers. Out of the CD Rom tray would be best.
Failing that - gee, a hardware splitter?
It should be easier than that ...
Ideas? |
| Wed 22 Jan | CharlesC | Good speakers have a headphone jack built into them. |
| Wed 22 Jan | Steve Barbour | Heh, I went through this exact same thing last week.
I've got cheap speakers (the employer provided them, so no real complaints), which I like to use when no one else is here at the office (headphones start to hurt my ears after a while), and I use headphones during the day.
The easiest solution is to go to Wally World or Radio Shack and buy a splitter. It cost me about $3 with tax.
I agree though, a front head phone plug or at least another line out would have been more better. |
| Wed 22 Jan | Jeff | There are speakers on the market with a headphone jack in one of the speakers. When the headphones are in the jack, the sound is routed to them and not the speakers.
Here's a link to the speakers my last job used (and worked like this): http://www2.warehouse.com/product.asp?pf%5Fid=VW74914 |
| Thu 23 Jan | Slava | If you`ve got a good headphones, and plug them into a typical speakers...well...the sound will be awful. Don`t do that.
I`ve got Technics h-phones, with a really good sound quality for Technics h-phone. When I plug them into Samsung speakers...oh...the sound quality drops to Samsung`s one=awful. |
|
| Salary? | Wed 22 Jan | Just Curious |
| What do you think would be an average salary for the following job?
Overall responsibility for a development group of about a dozen developers, including hire/fire and budget responsibilities. Responsible for softwares architecture, design and development. Basically, the person in this job takes their marching orders from CEO and is responsible for ensuring that the software is developed on time with good quality. So, it would involve working with developers to architect it, managing the development process, mentoring, project management, yada, yada, yada.
(Software is a web based application for a vertical market operating out of the Southwest.)
I know this is somewhat vague, but what range of salary do you think this type of position would be in? |
| Wed 22 Jan | Matt H. |
Hiring, Firing ... ok.
Project Management? (Lead the Projects)
Product Management? (Write the specs?)
Technology Management? (Choose VB or VC++)
Entire SDLC? (Do you manage testers, marketing people, or support people?)
Business Planning? (Do you come up with the ideas of what you are going to sell next year?)
Annual Reviews and Mentoring? (I think this is 'yes')
Management 'team meetings'?
Demo the product(s) to potential clients? How involved in sales is it?
Is the position responsible (or responsible for the people who are responsible) for all this stuff?
Is the company a SW organization or other? Does the department work for internal clients or external? Custom or Shrink-Wrap?
Without details, no help to you I can give. |
| Wed 22 Jan | Just Curious | Project Management? - Position would have ultimate responsibility for PM, but wouldn't be just a full time PM. Some PM responsbilities would likely be delegated.
Product Management? (Write the specs?) - Would have a hand in this process, but this would be a collaborative effort with sales.
Technology Management? (Choose VB or VC++) - Person in the position would make determination of technology used.
Entire SDLC? (Do you manage testers, marketing people, or support people?) - Definitely responsible for testers, probably not marketing nor support.
Business Planning? (Do you come up with the ideas of what you are going to sell next year?) - Not really. Sales and marketing would likely do this. Person would be involved, but only to the degree of reigning in sales.
Annual Reviews and Mentoring? (I think this is 'yes') - yes.
Management 'team meetings'? - yup.
Demo the product(s) to potential clients? How involved in sales is it? - Likely do 'dog and pony' shows. Person would be 'technical face' of the company. Doing shows, speaking as required. (Smaller company, so we're not talking keynote of Comdex here.)
Is the company a SW organization or other? Does the department work for internal clients or external? Custom or Shrink-Wrap? - Seems to be shrink-wrap for a vertical market. Some customization likely. |
| Wed 22 Jan | Matt H. |
I'm not sure if these numbers are accurate, but I got them from a fortune-500 company a few years back, in a mid-size (greenbay wisconsin or so) city in the mid-west.
Low: 70K
Mid: 90K
Max: 110K
Of course, the company had profit-sharing, pension, 401K match, and a generous vacation package. And, I am assuming, bonuses if the business unit beat some goals.
For a 'small' company, I'd bet the numbers are smaller, but, I dunno.
It really depends. The guys who advertise in computerworld pay more, I bet lots of shops pay less.
just my $0.02 ... |
| Wed 22 Jan | SergentSaussage | Given the vague job description, in my area (Cincinnati, OH) you can expect anywhere in the range of 80K to 120K a year, depending on the details of the job and what kind of company it's for. That's quite a big range, but there's quite a big range in the types of jobs and companies that fit that description. |
| Wed 22 Jan | Charlotte C. | You described the Vice President of Software Development. If the company is at all known, you're looking at $160-$250k. Also included will be stock options and hefty bonuses upon project delivery. |
| Wed 22 Jan | Bob Greene | you might go check salary.com |
| Wed 22 Jan | Bill Carlson | I'd second Charlotte's take. You need: technical savvy, project management, personnel/budget management, and strong leadership/accountability. Absolutely no less than $110k. Heck, you're looking at $70k minimum for a _good_ engineer.
Spend the money, as whoever you hire will make or break the endeavor. Also consider dividing out. No way someone can manage 12 engineers and also take on planning and project management. |
| Thu 23 Jan | Vincent Marquez | I'm going to have to agree with Bill. A VERY experienced architect that has a few enterprise level apps under his belt will be poping six figures. Add great management and PM skills, you have somone that will MAKE or BREAK a company. I'd give that guy whatever it takes to get him on board. Sure, if your doing some mid level VB apps and want to be a little organized, hire a guy for 80k. Otherwise, we're talking big bucks. |
| Thu 23 Jan | Just Curious | Thanks for the info everyone.
FWIW, this wasn't a position that I was looking to fill, but rather one that I had been approached about. I'm of the same opinion of the latter posters, that this position makes or breaks a company that sells software. Given the responsibilities of the position, I felt a minimum of 150K was about right. |
| Thu 23 Jan | Matt H. |
>Given the responsibilities of the position,
>I felt a minimum of 150K was about right.
WHERE in the SW? If we're talking about dallas, TX, that might be about right.
If it's a smaller city (< 150,000), I think my numbers are closer to correct. |
| Thu 23 Jan | runtime | salary.com is usually pretty accurate. |
|
| Plan to throw one away... | Wed 22 Jan | gitboy |
| you will anyway.
How do you know when youve reached that point in a big project when it would be better to just start over? What if youve spent 2 years coding an SDK and you took a wrong turn on day 1? |
| Wed 22 Jan | Ian Stallings | Duke Nukem Forever? |
| Wed 22 Jan | Mark Hoffman | A better question is 'How do you convince management that the whole design is borked and continuing on is only a waste of money?'
I came into a project with 100% turnover every 6 months and a software product that showed all the signs of a department in serious trouble. Management refused to accept the idea that the current design was so broken and bug ridden that it could never be patched or re-factored and was fundamentally flawed.
They just kept insisting that we just patch the bugs and 'eventually' everthing would be ok. They weren't, and I bailed after 6 months. Shortly thereafter, the product was scrapped for good.
So good luck. |
| Wed 22 Jan | Better than being unemployed... | Get together a refactoring plan. This shows how you can go from a mess to something useable in incremental steps.
I've never seen a project where absolutely every single line of code was a waste. Even if the architecture underneath is flawed, the UI might be okay. So keep the UI and refactor what goes on underneath.
It's always going to be quicker than a rewrite. |
| Wed 22 Jan | Dino | The end target of any business is profitability. Therefore you cannot possibly rewrite everything every 2 years when a typical product has a life expectancy of at least 5-6 years.
If new features require a product refactoring the do it as a delta rather than a rewrite. That is quite normal and the business will accomodate that.
The other alternative is the product is a money loser. In that case the company will cut its losses (sooner or later). |
| Wed 22 Jan | Better than being unemployed... | Unfortunately, you then run the risk of your salary being a good cost they can cut... |
| Wed 22 Jan | Jeff Kotula | 'It's always quicker than a rewrite.'
I emphatically disagree with this statement. My experience has always been that rewriting is faster than bug-fixing in quality, which is the essence of the rewrite approach. |
| Wed 22 Jan | Herbert Sitz | 'My experience has always been that rewriting is faster than bug-fixing in quality.'
I have no idea what that means. How can you be 'faster' in 'quality'?
Do you mean 'faster than bug-fixing at improving quality'? If so, then the statement is obviously false. If true, then whenever I encounter a bug I should trash things and rewrite my app rather than fix the bug.
Even if you believe rewriting is the way to go, it's impossible to believe rewriting is always preferable to fixing bugs. Only on projects above a certain size? Only when there are more than a certain number of bugs? Only when the bugs are of a certain difficult-to-solve nature? It can't be always; that simply doesn't make sense. |
| Wed 22 Jan | Brent P. Newhall | Side note: The quote 'Plan to throw one away; you will anyway' is from Brooks' The Mythical Man-Month, and it's not meant in the sense that gitboy seems to be taking it. Brooks meant that one should *begin* by assuming that the first iteration of the project will be thrown away. It should be part of the entire development process, not a decision you come to later. See http://c2.com/cgi/wiki/wiki?PlanToThrowOneAway
But, let's talk about when the application should be 'thrown away.'
Joel's talked about this in 'Things You Should Never Do, Part 1':
http://www.joelonsoftware.com/articles/fog0000000069.html
IMO, this question centers around the tension between rewriting and refactoring. So, compare them.
Estimate how long it will take you to write the application again. Be careful and specific; do not succumb to over-confidence about how easy it might be.
Estimating refactoring is more difficult, especially since a refactored codebase is theoretically more stable and bug-resistant than a new one (a new codebase will have lots of undiscovered bugs; a refactored codebase should have fewer), but try.
When you have both estimates -- one for rewriting, and one for refactoring -- compare them. Compare all the factors involved.
Which is a better use of your time? |
| Wed 22 Jan | SergentSaussage | I tend to agree with Joel's philosophy on this. A rewrite is usually the worst thing you can do. I say usually -- there are some extreme cases that *might* justify a rewrite, but most rewrites are simply a case of the development staff being too lazy/busy/frustrated to attempt any serious refactoring of the existing codebase. |
| Wed 22 Jan | Ori Berger | A rewrite is the worst thing you can do, if the rewriters are not better than the original writers. The hindsight wisdom of seeing something fail is not sufficient for a rewrite to be successful.
If the rewriters are more experienced and significantly better craftman, the rewrite is most probably the right thing to do. But this is rarely the case; And unfortunately, most programmers overestimate their own ability.
A kind of a quick test: If you think you can rewrite it faster than fixing the bugs, spend a day or two writing a proof of concept prototype that actually does something useful. If you can't do that, you probably don't want to start a rewrite. If you really care about your company's success, do that on your own time, and if your prototype is a meaningful indication, you'll get your supervisor's approval. Nothing speaks better than working code that does something useful (but .... observe the Iceberg principle) |
| Thu 23 Jan | Eric Moore | I agree with the others that you normally don't want to do a rewrite - refactor instead and treat it as mainly a political (not a technical) problem.
However, I've been on one project where we completely threw away the old project (3 years of coding) to do a complete rewrite using a different language and technology.
The argument was 50% removing architectural limitations, and 50% greater productivity (based on 2 engineers prototyping for 2 weeks, and implementing roughly a third of the old product).
Big success. We were allowed to do it only because we had a good dog and pony show that we used to sell four levels of management.
Why such a big hurdle? Face it, if you try to argue for a rewrite management is going to view the current team as a bunch of losers, which means the very last thing they want to do is raise the stakes. |
| Thu 23 Jan | Tim Keating | No offense, but any project that 2 engineers can rewrite 1/3 of in 2 weeks is not sufficiently large to justify a blanket statement about the merits of rewriting over refactoring. The project I work on is over 5 years old, and would probably take 10 engineers 3 years or more to reproduce from scratch.
Your point about politicking is well taken, though :-) |
| Thu 23 Jan | Thomas | There was an article within the past couple months about the Sims Online project which mentioned that they went through a pretty major refactoring period, and the results were excellent. Here's the Slashdot article: http://slashdot.org/articles/02/11/29/1315213.shtml?tid=127 from which you can get to the article.
-Thomas |
| Thu 23 Jan | Tom Payne | > No offense, but any project that 2 engineers can rewrite 1/3 of in 2 weeks is not sufficiently large to justify a blanket statement about the merits of rewriting over refactoring.
I disagree. In the 3 years of coding there was probably a lot of experimentation done, ironing out interoperability issues, writing test frameworks, coding features that turned out not to be required, writing documentation (that will still be relevant), etc. etc. Over this time the codebase will have evolved and it will probably be non-trivial to maintain (which is why you're considering a re-write, right?).
Now, you've got full knowledge of the problem, you know the exact design you want to implement. All your experience is 100% relevant. New third-party libraries might mean that you don't have to write your own anymore, e.g. you can throw out all of your internal file formats and replace them with XML and use an off-the-shelf parser, or use Qt for cross-platform development rather than maintaing multiple GUIs, etc etc.
Finally, it doesn't follow that the entire project could be completed in six weeks: it was probably the best understood 1/3 of the functionality that was duplicated in two weeks. But you can rest assured that it'll take significantly less than two years to implement the remaining 2/3s. |
|
| comparing databases | Wed 22 Jan | Tazha Shabir |
| I am looking fro good sites which fairly caompare between Microsoft SQL server And Oracle database.
Any sugessted book readind or websites |
| Wed 22 Jan | Troy King | Good luck finding an honest comparison. It comes down to this: Oracle can run on much more impressive hardware, and can thus ultimately handle more data faster, but on run-of-the-mill hardware SQL Server is faster (according to various TPC tests) and cheaper. When choosing one of those platforms, the final performance is the result of the developer, not which of the two platforms you choose, assuming that you don't need special hardware or have extremely high requirements.
I have seen small Oracle databases that perform very poorly on massive hardware and large SQL databases that perform extremely well on older, slower hardware. I have also seen top-speed databases slowed down by incompetent db developers, and seen hopelessly slow databases made lightning-fast.
This leads me to believe that for the vast majority of cases, it's all in the skill of the implementer, not the choice of the platform. Of course everyone thinks their own database is particularly large or special for some reason, but I've never seen one that couldn't be made to perform better with the right code and right indexes.
I know details of a 100GB database with 80GB weekly churn than runs on average hardware very quickly, and these days I consider that an “average” size. I myself manage a database that gets between 40 and 70 million inserts every day, and does so on vanilla clone hardware that sits idle most of the time. I’ve also seen a database that is 1/30th the size of my own that runs on eight times the hardware, and performs many times more slowly, and yes, I’m comparing apples to apples.
It’s the developer. Don’t let the platform zealots convince you otherwise. |
| Wed 22 Jan | Just me (Sir to you) | There is http://www.only4gurus.com/download.asp?ID=165 , and I am sure a sibling document will exist from Oracle making the exact opposite claims. |
| Wed 22 Jan | Marc | There is a 'Cost Of Ownership' whitepaper at http://www.progress.com/analyst/aberdeen_1199.htm. It is designed to show the quality of their own database (Progress RDBMS), but it gives you a good comparison of SQL Server and Oracle. |
| Wed 22 Jan | Marc | Sorry, that link included the period... How about this: http://www.progress.com/analyst/aberdeen_1199.htm |
| Wed 22 Jan | Just me (Sir to you) | Marc,
Given the timeframe of this report (1998-1999), I wsould say it is more of 'historical' value, and not realy related to the current situation.
Still, some srange figures in there that are not further substantiated. One that struc me was:
DBA cost:
Progress: 13.000$
MS SS7: 22.500$
Oracle 8i: 150.000$
While this could be debatable, stranger still:
The cost of administering the Progress Workgroup Server V9 with 10 clients is 13.000$, and goes up to 18.600$ for 25 clients. These figures are exactly repeated for the Progress Enterprise Server, but then they are attached to 50 and 100 users respectively. What a coincidence.
And although they state in their report:
'Choosing an Internet-access license clearly makes sense for implementations that are likely to exceed 25 users in the near future. IS buyers should look closely at this option. '
In the rest of the report the DBA cost for such an unlimited user scenario is less than that of the 25 or 100 user scenario, and yet again by pure coincidence equal to that of the 'least number of users' quoted (10-50 resp).
Now of course we could still think that this was something a TCO study looked into but was not the primary focus or expertise, but they state:
'Because administrative costs are a major component of overall VCO and embedded databases vary widely in administrative costs, performing a realistic analysis of likely DBA costs before purchasing any software or hardware can make a huge difference in life cycle costs.'
Sigh. |
| Wed 22 Jan | Stephen Jones | >>>>>>>>I am looking fro good sites which fairly caompare between Microsoft SQL server And Oracle database.
Any sugessted book readind or websites<<<<<<<<,
What do you want to compare? |
| Wed 22 Jan | Passater | Doesn't Oracle (actually all db vendors) explicitly prohibit benchmarking and publishing the results? I read something about that, now I cannot recall. |
| Wed 22 Jan | Troy King | Passater -- they do, but then they turn around and participate in the TPC benchmarks. You can get results at http://www.tpc.org/ . |
| Thu 23 Jan | Karel | I you go by Sybase website, they come out tops on tco. |
|
| VB or VC++ | Tue 21 Jan | ubaid dhiyan |
| Hi,
Im a graduating Masters student looking for employment in the next six months. Im fairly comfortable with C and C++ in Unix environment. Iam now looking to venture into Windows programming, considering Im already fairly proficient in C++, what should I spend my time on, Visual Basic? or Visual C++? |
| Tue 21 Jan | pavel | If you want to do GUI development, you may take look on Borland C++ Builder. Its C++ and its form designer is better than VB. |
| Tue 21 Jan | Sam Gray | Depends on what you want to do. If you're looking for actual employment in the boring old business world, VB has a ridiculous market share, particularly for database access, and it's ridiculously easy to pick up the syntax. Given that there are a lot of 'one-off' apps (and, actually, some more serious ones) in VB, it probably can't hurt to know it. |
| Wed 22 Jan | Chris Tavares | Learn both.
Seriously.
Both environments have been used for a lot of apps over the years. Just about every shop is going to have a combination of the two around.
If you want to get involved in the Windows world, learn COM. Start with VB - it makes it easy to create simple COM objects. Then move on to doing it with C++. The VB knowledge will serve you in good stead as a way to build test harnesses and COM clients. |
| Wed 22 Jan | Tony E | VB is dead, forget it. Your choice is .net or C++ |
| Wed 22 Jan | matt | 'VB is dead, forget it. Your choice is .net or C++ '
Sorry - but this is just not true. VB and C++ part of the same package (Visual Studio) and I would imagine they will both be supported by MS for an equal amount of time.
There is stll a vast amount of work out there for VB programmers, so it is still auseful language to have at least a working knowledge of.
.Net is the one to learn for the future though. |
| Wed 22 Jan | anonQAguy | Tony E -- perhaps Ubaid really meant VB.Net, not 'plain old VB' but just wasn't explicit?
Ubaid?
FWIW, on a large project we're working on now we have significant functionality built in plain old VB and eVB. This is totally new work, nothing being driven by a legacy system. Granted, one of the key developers on these portions of the overall system did say to me that if we _had_ been able to use VB.Net, we'd have been done much sooner with a portion of it, but the client is a very large multi-national firm and they specified certain of our platform/language choices in the contract. The point is, that our project is one example of new work being done in 'plain old VB'.
Cheers, |
| Wed 22 Jan | Stephen Jones | The problem with learning VB at the moment is not that it is dead but that MS have created one almighty cock-up.
As Albert pointed out a couple of months ago there are hundreds of thousands of little and not so little applications in Access or Excel that have been built with VBA. VBA (which is almost the same as VB6) will stay in Office until 2004 at least. As most companies are slow to upgrade Office you can reckon that the majority will be writing apps in VBA until 2007.
Now if the apps these people already have are not upgradeable to VB.Net, then the odds are that most companies will not be able to afford the upgrade to the latest version of Office anyway.
And if they do, then think of the amount of work that will be around doing the conversion!
So at present you have to decide whether you will learn VBA and VB6, or VB.Net. Unless VB.Net is easy to learn if you know classic VB, and/or offers significant advantages over classic VB, I suspect many coders will stay with VB6/VBA and use Java or C# for non database programming. |
| Thu 23 Jan | Dermot Balson | I echo the last response. I have spent the last 10 years writing many widely varied apps for a large financial services business in Excel VBA. It can do amazing things and the speed of development is awesome.
I used to use VB but Excel is much more powerful for business applications because it is fully installed already on every desk and has the world's best chart and grid controls built in.
I should clarify that I develop tools, not big systems. |
| Thu 23 Jan | Eric Moore | As a recent grad, management will be more concerned that you know the latest fads than legacy tools (no matter how popular) as long as you know some of the mainstream languages that they care about. So unless you're applying for a job at a 100% VB shop I'd de-emphasis the language and focus more on windows.
I'd learn the .NET version of VC++, or C#. Whats most important is to learn the latest framework and class libraries, and get experience with Visual Studio etc.
If you choose a .NET version of something in the C++ family (C++ or C#) most people will consider it a non-problem for you to work with the prior generation of VC++, and your .NET experience would be pretty usefull if you had to use VB.NET. |
| Thu 23 Jan | ubaid dhiyan | Hi,
Thanks for the wide range of responses. Being a C/ C++ programmer, I tend to 'think' in C/C++, so I'm guessing, it'd be better if I first got comfy with VC++ and .Net, I cannot possibly try and learn everything, can I? ;) |
|
| Java. Book Recommendations | Tue 21 Jan | Mike Grace |
| Hi,
I am just starting out in java.
I am planning to use J2SE1.41 and I will be using swing.
The apps I am going to write will be desktop database apps linking to an SQL server e.g. MySql
Is there one book that encompasses all I need to know or can anyone recommend a book on swing, jdbc etc..
BTW I have used clipper, xbase++, foxpro and other 4gl programming languages but no Java |
| Tue 21 Jan | Stephan | Well, I like Java, but this is something I would not use it for. Maybe Delphi, or VB. |
| Tue 21 Jan | Bruce Perry | This doesn't answer your specific requirement, but if I had to recommend just one java book to someone it would be 'Thinking in Java' by Bruce Eckel.
You can download it for free from www.bruceeckel.com
Not a beginner's book, but a great resource for an experienced programmer. |
| Tue 21 Jan | Li-fan Chen | Yeah I second that. TIJ is a great book. I am a bit of a sucker for O'Reilly's books. They really hammer down some of the topics really well but as references sometimes comes up short. I especially enjoy Java Network Programming, JDBC, Java Threads, Java I/O, Java NIO, and JDBC from these guys. Most people won't go this route (buying lots of books) unless they are sure they will be using Java for sure in the next few years though, so YMMV. |
| Tue 21 Jan | Ged Byrne | I've not read it myself, but I've heard good things about Core Java.
It does give coverage of the subjects youre talking about.
http://www.amazon.com/exec/obidos/tg/detail/-/0130927384/qid=1043165105/sr=8-3/ref=sr_8_3/102-0030574-4992162?v=glance&s=books&n=507846 |
| Tue 21 Jan | Just me (Sir to you) | I usually recommend the 'Core Java 2' books by Horstmann and Cornell. |
| Tue 21 Jan | Java book worm | A Programmer's Guide to Java Certification by Khalid Mughal is outstanding. It has just enough good-quality coverage to get you started, including Swing. Once you get through, prepare to buy more books :-) |
| Tue 21 Jan | Mike Grace | >>Well, I like Java, but this is something I would not use it >>for. Maybe Delphi, or VB.
Stephan,
I did agree with this a few weeks ago, but I think Java is going to make great strides in this area with the next version (1.4.2) and 'Tiger' (1.5) next year.
Also, I need cross platform. |
| Tue 21 Jan | anon | For Swing, I've found this very useful (you can read the chapters online; I bought two copies out of appreciation):
http://manning.spindoczine.com/sbe/
Basically it's a book that builds applications you can cut & paste from. The intro chapters give a fast overview of Swing.
If you can get your company to spring for these books, I recommend:
http://java.sun.com/docs/books/chanlee/
They differ from the online Javadocs in that they have very useful small example programs, as well as many nicely formatted overviews. Much of doing well in Java is just knowing the api. Good for resolving disputes too. |
| Tue 21 Jan | S | Thinking in Java by Bruce Eckel is pretty good. I've downloaded it here and put it on our intranet so whenever I need to check something quickly, I refer to it.
Also 'Professional Java Programming' by Brett Spell is quite excellent as well.
http://www.amazon.com/exec/obidos/tg/detail/-/186100382X/qid=1043169996/sr=8-1/ref=sr_8_1/002-9555270-1670423?v=glance&s=books&n=507846 |
| Tue 21 Jan | Paul Brinkley | Here's another thumbs-up for Swing by Robinson and Vorobiev.
I'm surprised no one has yet mentioned _Effective Java_ by Joshua Bloch. Bloch wrote a lot of the java.math and java.util code, and it is -solid-. EJ's one of the very best programming books I've ever read. |
| Tue 21 Jan | Peter McKenzie | My three favourites:
Practical Java by Haggar - An underrated little book, extremely readable.
Effective Java by Bloch - Widely regarded as a classic Java text. Somewhat advanced.
Java Examples in a Nutshell by Flanagan - A wide range of source code to get you started.
The first two in particular explain the various idioms and rules that experienced Java programmers follow.
Enjoy,
Peter |
| Tue 21 Jan | John Topley | 'Effective Java' is undoubtedly a classic but Mike said that he's just starting out using Java, so that's why it's probably not been mentioned as it's for the more experienced developer. |
| Tue 21 Jan | Bill Tomlinson |
I'd recommend 'Java Cookbook' by Ian Darwin (O'Reilly).
The cookbook (short explainations of how to do specific tasks) is good for an experienced programmer who just needs to know language specific details in an area that they don't often work in.
I'll also recommend 'Just Java' by Peter van der Linden (Prentice Hall). It's a huge book that covers almost everything and van der Linden is an entertaining writer. |
| Wed 22 Jan | Mike Grace | This is great information guys.
Thanks a lot. I will check my bank balance and look into them. |
| Wed 22 Jan | Paul Brinkley | _Effective Java_ isn't -that- advanced. Most importantly, it may inculcate some good habits in beginning programmers. I suppose it may be hard to grasp completely when just starting. (It certainly shouldn't be the book to read when learning Java syntax.) But one should pick it up very shortly after learning the core Java packages, I think. |
| Wed 22 Jan | anon | I think Bloch's Effective Java can wait. I just looked at excerpts from the 2nd chapter at Amazon, and think it takes a bit of familiarity with things like reflection, Java-style OOP, etc, which the original poster seems not to have. These are simple concepts, but it would be nice to have coded a bit before the book becomes interesting. |
| Wed 22 Jan | Evgeny Goldin | [[ I usually recommend the 'Core Java 2' books by Horstmann and Cornell ]]
Me too, great book !
Contains chapters about basic and advanced Swing, lot's of examples with every line of code included in the book. Highly recommended, really |
| Wed 22 Jan | Java book worm | Effective Java is both great and advanced, but it is not for the beginner. Somebody already recommended Practical Java Programming Language Guide by Peter Haggar - it is a gem. |
| Wed 22 Jan | Adam Young | Also, use a Good IDE that can do the Swing stuff for you. Unfortunately, I can't recommend one, as I've only done Web stuff in java. Here's the current list:
Eclipse
NetBeans/Forte For Java
JBuilder
Intellij's IDEA
Eclipse is the best of the Free, but I don't know about it's Swing capabilities. JBuilder is the 6000 lb gorilla |
| Thu 23 Jan | AEB | I would also look at the Windowing Toolkit that comes with Eclipse instead of Swing. Much better performance. |
| Thu 23 Jan | Mike Grace | My only concern with the Core Java Books is that they seem a bit old and don't cover 1.4.
Does this matter? |
| Thu 23 Jan | Just me (Sir to you) | The first volume is now in its sixth edition, 'Covers J2SE version 1.4'
http://images.amazon.com/images/P/0130471771.01.LZZZZZZZ.jpg |
| Thu 23 Jan | Mike Grace | Thank you. |
|
| references | Mon 20 Jan | hds |
| I have a written reference from my previous manager, explaining the work I did, and finishing off by saying he would recomend me for any professional software development enviornment.
When I apply for jobs, should I send the written reference in with my resume,or just send my resume in, and then if I get an interview bring it in?
I dont have a whole lot of experience beyond my previous job, and I have shown it to other people, who consider it a very good one.Does it hurt my chances of getting an interview? |
| Mon 20 Jan | Ed | Traditionally, you put 'References Available Upon Request' on your resume. And bring it to the interview and show it to them whether or not they ask for it and make sure you have a photocopy so you can leave it with them. A resume tailored to the job in question and a very specific cover letter are the two things you must have; if you want to staple recommendations to the back of yours mailing you can. It's not commonly done but don't let that stop you. Anything to distinguish yourself is good. But don't forget the custom stuff. And always send a thatk you note after an interview unless you hated the people so much it would be painful to even write one. |
| Mon 20 Jan | Tom Payne | References are normally confidential between your prospective employer and your referee.
Open references, like the one you describe, carry much less weight than confidential ones because they're unlikely to be contentionous (otherwise you wouldn't have included it) and aren't specific to the employer's needs.
If you've only got a limited number of referees (as you say in your message) then I'd recommend not including the transcript and getting them to write confidential references as required. |
| Tue 21 Jan | Cynical Guy | Tom wrote:
>> References are normally confidential between your prospective employer and your referee. Open references, like the one you describe, carry much less weight than confidential ones because they're unlikely to be contentionous (otherwise you wouldn't have included it) and aren't specific to the employer's needs.
Most references aren't contentious due to lawsuit threats.
>> If you've only got a limited number of referees (as you say in your message) then I'd recommend not including the transcript and getting them to write confidential references as required.
Respectfully, lots of luck on that one! Asking a referor to write custom letters of reference sounds like an imposition; it's completely unrealistic and would be a sure way to lose a reference. It took me *4* months to get one client to write one generic letter of reference. Most managers today are almost too busy to return phone calls.
Sic: business courtesy is so non existent these days that I highly recommend not abusing it wherever found. |
| Tue 21 Jan | Even more cynical guy | 'business courtesy is so non existent these days...'
Er, and _regular_ courtesy is common? |
| Tue 21 Jan | Jeff | >> Most references aren't contentious due to lawsuit threats.
At this point, a lot of references are non-existant...
When I was laid-off I had an exit meeting with my bosses and an HR person. I asked my bosses if they'd be references, but before they could answer the HR person said that it was coroprate policy not to give refererences. In fact, it's a 'termination offense' for managers to give references - all they can do is verify the dates of employment and the reason for my leaving.
All due to the threats of lawsuits, of course. |
| Tue 21 Jan | Sam Gray | Yup. One of my prior employers was a law firm, and they had a policy forbidding anyone to give references. I was forced to use an internal memo for my collection instead. ;>
Seriously, though, the threat of lawsuits doesn't *just* come from people giving bad references. If someone at your old company gives you a *good* reference, on the basis of which you get a new job, and you have chronic tardiness issues, that could be the basis for a lawsuit against your old company. It's phenomenally stupid, but there you go. |
| Thu 23 Jan | AEB | I've also been told by my HR that I cannot say anything bad about about someone - even whether the person was fired! The safest fact: date of employment. They didn't seem to have a problem about positive references. |
|
| RSI | Mon 20 Jan | Wei |
| I must be getting some kinda work-related injury or something... my left forearm hurts like hell... its a throbbing and aching pain and its constantly there...
Any tips to get it off quickly so I can get more real work done??? |
| Mon 20 Jan | Hasan Basri | I get that a bit on my arm & wrist on the side that uses the mouse.
It got really bad 3 months ago, I could hardly bend that wrist, so I moved the mouse to the opposite side of the keyboard and used the other hand for it...
I moved to this job from my previous career as a labourer because I thought it was something I could do as I got older..after a decade of doing labouring work I have arthritis in my knees, one elbow goes sore in bad weather and my back works well so long as I dont try to use it.
After 3 years as a programmer, Im now *also* suffering from severe RSI in one arm, totally unfit (labouring kept me in very good shape), and high blood pressure.
Its a bizarre thing...when I shake my head now I can actually feel my cheeks move...Ive never had that before...
..I no longer believe that Ill live longer enough for finding work when Im old to be a problem... |
| Mon 20 Jan | Dave | If it's the forearm you're in luck. I had the exact same problem 5 years ago that I thought was going to prevent me continuing in the IT industry. Here's what I did
1) Go to a physiotherapist
2) Hopefully they'll take the 3 prong approach with you as they did me: a) cure with ice (10 mins max each arm twice a day), massage (with the tendons, not across) and ultrasound therapy b) strengthening c) ergonomics
3) after having the condition for about 2 years and living through hell I was 'cured' in about 2 months. I have to keep up the strengthening and massage but all is good |
| Mon 20 Jan | GiorgioG | Wei,
Back in my email tech support days I answered over 200 emails a day and my hands/wrists felt completely numb after I would get out of work. A co-worker had one of these contoured keyboards (http://www.kinesis-ergo.com/contoured.htm) - and suggested I go out and buy it. The price was a bit hefty at the time (I bought the pro model for about $290) - but a 'basic' model (non-hardware-remappable) will run you about $180 today. Between this keyboard and using a mouse wrist rest (around $5), I haven't looked back. The keyboard takes some getting used to - but within 2-3 days you will never want to use another keyboard again. Within 2 weeks of buying this keyboard, my hands were back to normal. No pain, etc. Your mileage may vary, but a standard keyboard isn't very good on your hands. Other 'natural' keyboards are ok, but I was already using a microsoft natural kb when my hands/wrists were in shambles with no effect. I don't have any relationship with Kinesis-Ergo - I just think the world of them for saving my hands from possible future damage and maybe even surgery down the line. You might want to have a look at Ebay - they sometimes have one or two of these keyboards at a reasonable price (some people don't want to make the effort to get used to the keyboard's layout.) Good luck and let us know what you decide to do. |
| Tue 21 Jan | Daniel Shchyokin | Had it twice, I gnored it, went away. |
| Tue 21 Jan | Prakash S | shiatsu, yoga, massage, something should work for *you*.
though, i wuold agree with most of daniel's posts, DO NOT IGNOR IT.
these kind of injuries are like Carl Lewis losing his legs!!!!!! |
| Tue 21 Jan | richard | I think in addition to any remedies you seek, you will need to look at your lifestyle also. Working for extensive periods in a static position is just such a bad idea on so many levels. Your metabolism goes through the floor so you end up packing on weight/eating like a mouse, you get all of the RSI issues, back pain, eye strain, sleep disruption and elevated stress levels.
Your body needs a certain level of physical activity to promote good health. There are some studies that show that people who are physically active have lower stress levels, and are better condition mentally as well as physically. Us IT guys/gals are in a really unhealthy industry. I am 28 years old, have a left eye that twitches as I write this, a mouse-callous on the heel of my right hand that is quite irritating, and a twinge in my lower right back. I have been doing this stuff for about 4-5 years and in theory could be doing it for another 25 or so. |
| Tue 21 Jan | Matt Conrad | If you want to try for the quick fix I would take a few days off and go do something fun and physically taxing. No guarantees there, but I think it's your best bet.
I had a similar problem, but it lasted for months. After a lot of frustrating and unhelpful visits to doctors I finally started to get a handle on it by going to a massage therapist, who gave me hard massage ('deep tissue') in my back and neck. Not my arms.
Roughly concurrently I discovered the ideas of John Sarno (see _Mind Over Back Pain_). He argues that lots of mysterious physical ailments are really repressed stress. People who are in pain tend to be incredulous and a little insulted by this theory. I wouldn't bother with Sarno unless your problem persists. But if the pain goes on and the doctors can't help, you may want to come back to it. It's helped me a lot.
Matt |
| Tue 21 Jan | Ran Whittle | I have found that the typical move-it-around-the-desktop-type mouse causes me problems since the weight of my arm rests on the small bones of my wrist. Switching to a trackball mouse (where the weight rests on the palm of my hand) has made this go away. |
| Tue 21 Jan | Sam Gray | I personally use a Happy Hacking Lite keyboard ( http://shop.store.yahoo.com/pfuca-store/haphackeylit1.html ). Eliminating the numeric keypad means I make a much shorter trip to grab the mouse. (Plus, you can take the USB model with you to another computer.)
Also, I agree that getting other exercise will make a huge difference in your overall health, and depending on your specific ailment, may help you heal faster.
In my case, riding a recumbent bicycle turned out to be the way to go -- bicycling because it's aerobic, interesting, and I lived close enough to work that I could get rid of my car (nice side effect, that), and recumbent bicycling in particular because there's absolutely no strain whatsoever on my forearms and wrists. I'll stop here, but email for further evangelism.
Different things work for everybody, but probably the last thing you should do is ignore it. It might go away whether you do or not, but at least in the meantime you get a sense of being able to do something about it... which, since programmers tend to be control freaks, probably has a significant effect right there. (= |
| Tue 21 Jan | Chris Tavares | I developed wrist pains and a severe ache in my left shoulder (I'm a lefty). Switching to a contoured keyboard (I like the MS Natural) and a trackball instead of a mouse REALLY helped.
Oh, and get away from the computer for at least a few minutes every hour. That'll help a lot too. |
| Tue 21 Jan | Frederik Slijkerman | MS Natural keyboard helps, and the best thing is a Wacom pen tablet instead of a mouse -- it forces you to keep your hand in a more natural 'writing' position. |
| Tue 21 Jan | Phibian | The 'best' thing to do really depends on the individual!
As a person who has had RSI problems for over ten years (although thankfully I currently consider myself in 'remission'), I believe I've done enough research and had enough personal experience to speak with some authority on the matter.
The purpose of split keyboards is to put your arms in a more natural position. If you have narrow shoulders (like me), then using a keyboard like the MS Natural keyboard is likely to aggravate things rather than help.
What you should do (rather than rushing to add wrist rests, get a split keyboard and a tablet) is to evaluate your working posture and habits.
IE
Is your chair properly adjusted? Is your keyboard at the right height? How about your monitor(s)?
Do you spend a lot of time on the phone? If so, do you have/use a headset or speaker phone?
How fast do you type? The faster you type, the more likely you are to have problems or aggravate them. If you slow down, it seems to be easier to stretch in between. What keyboard layout do you use? I highly recommend using Dvorak instead of QWERTY or AZERTY if you are typing in English because the acrobatics required of your fingers is much less. (This doesn't mean that using Dvorak you won't have problems - it just often helps)
How much resistance does your keyboard provide? There are some pretty good 'low impact' keyboards these days that can really help.
What's your overall stress level like? People with RSI problems tend to be type A personalities under pressure. Regular exercise and learning to relax can really help here. I've found the Alexander technique quite helpful, if you can get past the pseudo-science.
Do you drive a standard (stick shift)? This can aggravate an RSI injury.
Do you play impact sports like volleyball? Or do you prop yourself on your elbows to read? Many people think only of carpal tunnel when they see 'Repetitive strain injury' so this might not make sense at first glance - but ulnar nerve problems are not uncommon among computer users and thus not leaning on the nerve always helps :)
One neurologist I went to commented that RSIs often become problems because people ignore the warning signs. Maybe some one has an intensive and prolonged session in front of the computer and ends up with some numbness. The next day, instead of taking it easier or making a point to take frequent breaks (something you should always do), they complete their regular work. Except the numbness gets worse (and worse etc) every day. The nerves are already aggravated, so it takes less and less to trigger numbness and pain (a vicious cycle). It's possible to break the cycle (unless you've done so much damage that you require surgery) but you're likely to be more susceptible to future problems - so once problems go away you should still do things like fixing your posture and taking regular breaks, relaxing and not overdoing it. But that's the sort of thing my parents always used to tell me to do anyway :)
Do you use the mouse frequently? (This is a big problem for many people. I recommend keyboard shortcuts if you can manage, although you want to avoid holding down keys eg shift alot too because that can cause problems) How do you hold your mouse (gripping is bad)? Do you rest your wrist on the edge of the table when typing or mousing - then a proper wrist rest might help? How do you hold your pen? If you don't hold it loosely and in a cup position - I wouldn't recommend going the tablet route instead of a mouse - you'll end up trading one RSI for another. Incidentally, that's something to think about regardless.
Not every programmer gets a repetitive strain injury, just like not all carpenters and blacksmiths used to get them either. If you end up with warning signals and or a full blown RSI - figure out what you were doing that made you vulnerable (and typing all day isn't usually enough alone...). It's not unusual for people who switch to using voice recognition after an RSI removes the keyboard as an option end up with problems speaking (a kind of RSI for the larynx) because they don't address problems in (eg) posture.
Anyway. |
| Wed 22 Jan | Frederik Slijkerman | Good points, Phibian. I guess the bottom line is: don't ignore it. |
| Wed 22 Jan | AW | Had massive problems in my shoulder, too. Physiotherapist
said I should switch the mouse to the other hand. It feels
very uncomfortable for the first weeks to have the mouse
in the wrog hand, but you'll learn it.
I'm switching the mouse now every some weeks and it helps. |
| Wed 22 Jan | Chris Winters | I strongly agree with GiorgioG: the Kinesis Contoured Ergonomic keyboard has worked wonders for me. I don't do any extended (>1 hour) typing without it. It gets some funny looks from people, but that's okay.
And if you're saying 'It's too expensive', just think about how much it would cost you to miss work for more than a week, or to go to a doctor. An ounce of prevention and all that... |
| Thu 23 Jan | Eric Moore | Making some excuse to do something that moves my hands/arms away from the mouse/keyboard for about a minute or two every hour seems to keep things from ever getting serious for me. Even if its as simple as putting my hands on the side of the chair or behind my head while I read something.
I've tried switching keyboards, replacing my mouse with a trackball etc. While it appeared to solve some muscle aches, it never really did anything for the soreness/tenderness in my wrists/forearm. Changing my work habits is the only thing I've found that seems to have a long term effect. |
|
| Code Question~ | Sun 19 Jan | |
| Is there a subtle bug in this code due to size_t being compared with an int? size_t cannot be negative.
Would it be better to declare all variables as long?
// Reverse a string
char *str_rev(char *p_str)
{
char tmp, *p = p_str;
size_t front = 0, back = 0;
int test;
assert(p_str != NULL);
while (*p++ != \0) { back++; }
if (back == 0 || back == 1) { return p_str; }
back--;
do {
tmp = p_str[front];
p_str[front] = p_str[back];
p_str[back] = tmp;
front++; back--;
test = back - front;
} while (test > 0);
return p_str;
} |
| Mon 20 Jan | David Clayworth | There are theoretical bugs in the code due to the conversion of unsigned ints to signed. The only one I can see is for strings of length greater than INT_MAX, where the 'while' test would fail the first time through.
However I was caught by:
vector v;
// assign contents to v
int i;
for (i=0;i<(v.size()-1);++i) {
// replace all but the last character with X
v[i]='X';
} |
| Mon 20 Jan | Ichabod Crane | Both C and C++ have the 'strrev(t) ' function. Why are you re-inventing the wheel? |
| Mon 20 Jan | Better than being unemployed... | Maybe they're a student trying to complete some homework (hence the anonymity) ;-) |
| Mon 20 Jan | Danil | Hmm - I don't have a C standard in front of me, but I'm pretty sure that
(size_t) 6 - (size_t)7 == (size_t) SIZE_T_MAX, which is pretty big (and positive).
That leaves you with (int) SIZE_T_MAX; the value of this expression is implementation defined.
But I'm not sure, which indicates to me that a clearer implementation should be chosen. ;-> |
| Mon 20 Jan | | Yea, I'm a student trying to implement a strrev routine. The assignment is to implement the routine without looking at the hundreds of available resources to find code for the pointer implementation. (Thanks Andrew. hehe jk) We then have to point out and document deficiencies and limitations in our code. Fun Fun Funny Fun Fun So Fun. NOT. |
| Mon 20 Jan | Andrew Simmons | Mr or Ms un-named student, shame on you!
Actually, I think David's right that there is a problem. The result of size_t - size_t will presumably be unsigned, which then gets assigned to a signed int. According to K&R this is fine if the result is in the range of a signed int, and is implementation-defined otherwise, which it will be if back < front. |
| Mon 20 Jan | | Yea, that's why, before handing it in, I changed the while condition to:
while (test != 0 && test != UINT_MAX);
and the data type of 'test' to size_t;
According to Microsoft docs the maximum size_t = UINT_MAX = 0xFFFFFFFF = 4294967295 which coincidentally? = unsigned long. Actually prolly has to do with the fact that i'm running on a 32 bit machine and the compiler is inherintely 32-bit. So when you subtract size_t from size_t the result simply rolls over to UINT_MAX. Welcome back to the basics eh? This code is prolly not portable either unless UINT_MAX is used to define max size_t on different platforms. I could not find some of the constants/defines mentioned here, such as ssize_t and SIZE_T_MAX in VC++ 6.0. Although ssize_t is defined under windows in windows.h. (I'm using console mode.)Now even when using pointers, the pointer can only theoretically access 4G of memory max on a 32 bit machine (Not sure on this, 1 segment of 4GB... umm). So i'd say my routine is sufficient enough to do the job just as well as Andrews, it's just not as pretty becuase it does'nt use pointers. It also might be slower, but given an optimizing compiler... Well I'd guess you'd have to look at the assembly language generated. My guess would be that incrementing DS:SI and ES:DI might be faster than adding an offset to them, would have to look at the instruction timings on that one. And there might be assembly instructions for swapping data. I'm not a asm guru. Anyway, just disregard my mumbling. |
| Tue 21 Jan | Foolish Jordan | I don't understand why you can't just say
while (back > front);
and just be done with it. If it takes 20 intelligent people collectively an hour to figure out if your code has a subtle bug in it or not, there are worse problems with your code than whether '6U - 7U == -1' or not. |
| Tue 21 Jan | | 'I don't understand why you can't just say
while (back > front);
and just be done with it. If it takes 20 intelligent people collectively an hour to figure out if your code has a subtle bug in it or not, there are worse problems with your code than whether '6U - 7U == -1' or not.'
Well Foolish you can write the while loop like that. BUT the point of the assignment was to take the first incarnation of the strrev routine that you come up with and point out bugs. This was MY first coding of the routine. Notice, It was MY first coding, not YOURS, but MINE. It is written from MY perspective. What it boils down to is that any programmer, including myself, realizes that you only need to compare if back is still greater than front and that these two variables can be used as pointers into the string and you would end up with what Andrew wrote. But that was not the point of the assignment. The routine that I have written is in fact very stable and so far has worked under VC++ and GNU. Hopefully will be able to test it under a 64 bit compiler soon. There are no other 'problems', as you say, with my code. In fact, I challenge you to point out any bug you find and of course prove that the bug exists. Your statement are foolish.
Here's my version that I handed in:
char *str_rev(char *p_str)
{
char tmp, *p = p_str;
size_t front = 0, back = 0, test;
assert(p_str != NULL);
while (*p++ != '\0') { back++; }
if (back == 0 || back == 1) { return p_str; }
back--;
do {
tmp = p_str[front];
p_str[front] = p_str[back];
p_str[back] = tmp;
front++; back--;
test = back - front;
} while (test != 0 && test != UINT_MAX);
return p_str;
}
Here's the next revision:
char *str_rev1(char *p_str)
{
char tmp, *p = p_str;
size_t front = 0, back = 0;
assert(p_str != NULL);
while (*p++ != '\0') { back++; }
if (back == 0 || back == 1) { return p_str; }
back--;
do {
tmp = p_str[front];
p_str[front] = p_str[back];
p_str[back] = tmp;
front++; back--;
} while (back > front);
return p_str;
}
And the final revision:
char *str_rev2(char *p_str)
{
char tmp, *front = p_str, *back = p_str;
assert(p_str != NULL);
while (*back) { back++; }
back--;
while (back > front) {
tmp = *front;
*front = *back;
*back = tmp;
front++; back--;
}
return p_str;
}
So there you have it. The 'evolution' of the str_rev routine. |
| Thu 23 Jan | -Ray G- | The last version looks pretty good, but
while (*back) { back++; }
back--;
will invoke 'undefined behavior' if the string is empty.
Your earlier versions had a separate test to see if the string was empty. Here, you would be decrementing a pointer below the point where it started. This is not allowed in C. |
|
| Updated Software Engineering Course | Fri 17 Jan | Adam Young |
| Im picturing an updated software engineering course that covers the topics of the past decade:
The course would be split between lecture and lab time.
1) Extreme programming: Explain Unit Tests and Pair programming, code standards, etc. Small programming taks can be assigned during labs, and partners rotated often. Lab consists of a Graduate Student Instructor playing the role of the Client, helping the team come up with one short story to be implemented during the lab
2) Refactoring: Lectures cover the refactorings themslevs, with homeworks to refactor small chunks of code. This could be like math problem sets. A lab could have the team wokr on a larger refactoring of a real piece of code (I have several I am willing to offer ;)
3) Design Patterns. Once the class is comfortable with refactoring, Design patterns would be introduced. I like the industriallogic.com ordering. Students would be encouraged to form study groups.
4) Refactoring to patterns: A set of programming problems would be analyzed in lectures showing how the code could be better structured using design patterns.
5) Use acceptance testing: The studesnt would switch roles to be the client. In several media, the students would work through automating acceptance tests.
6) Optimization: Students are taken through optimization issues on several platforms, from Database queries to embedded applications. The practice of profiling and optimizing would lead, followed by a cross section of the skills to optimize. The use of design patterns for effeicincy would probably be covered here as well.
7) Code analysis: This is where students have to read prexisting code, and come up with ways of understanding it. Reverse engineering using tools like UML/ERD diagrams, notation.
Obviously there would be quite a bit more here, but I think quickly you would find that you needed to prioritize and only teach what could fit in to a semester course.
Any thoughts? |
| Mon 20 Jan | | I doubt that optmisation is taught in many Uni SE courses these days. For most people that kind of thing would be wasted because you don't get to do it in RL. Some areas (embedded, graphics, etc) it is common, but in my experience most companies won't allow its engineers to sit around and twiddle to get an extra point of performance, whereas in the areas I mentioned it is often necessary in order to get the software to fit into the constraints (speed, available memory, etc). |
| Tue 21 Jan | Adam Young | I think the elements of the course I've laid out would be a follow on to basic 'how to program' course. This style of programming is what distinguishes a professional from a ...not sure what term to use here. I've coined the term ICIC which stainds for I Code in C, meaning people that code in OO languages without taking advantage of the OO sturcture. But even in C there is organized and there is disorganized. There are well though design patterns visible in both the Linux Kernel and GTK+ code I've examined.
Is it Buzzword compliant? Nah, there are sload of current bozzwords we haven't even mentioned. Is Design Pattern a Buzz word, perhaps amongst managers it is. But when my coworker and can cut a conversation short by talking about 'Repository Pattern' as happened this morning, they obviously have value.
Applied Software Engineering seems a little redundant, don't you think? |
| Wed 22 Jan | Evgeny Goldin | Teaching XP is good. My university still explains the waterfall .. |
| Wed 22 Jan | Stephen Jones | I think that instead of studying XP you should 'reverse engineer' it and find the problems it's trying to solve.
You can argue over the solutions, but they do address serious problems. |
| Wed 22 Jan | Giovanni Corriga | >Applied Software Engineering seems a little redundant, don't you think?
I dunno. In my uni, the 'Software Engineering' course is quite theorethical. You know, process models, cost estimates, risk management... not the kind of things that a student may immediately use. Design patterns and refactorings, on the other hand, are more 'hands on' topics. So, I think 'Applied' is justified. |
| Wed 22 Jan | Giovanni Corriga | Antoher thing has come into my mind: what about adding CRC cards to the course? |
| Wed 22 Jan | Adam Young | I personally have never used CRC cards. How would you suggest they be added to the course? |
| Thu 23 Jan | Giovanni Corriga | CRC cards are quite useful when designing a system, for they allow a rapid individuation of the key objects of the system. You may use them to explain the design patterns (using CRC cards instead of the Booch's diagram used in the Gang of Four book), or when analyzing existing code.
For more info on CRC cards, see
http://c2.com/doc/oopsla89/paper.html
http://c2.com/doc/crc/draw.html |
|
| Another entity class question | Thu 16 Jan | R. Kingan |
| For any of the Fog Creek folks (or anyone, for speculation):
I enjoyed reading about the entity classes; I did something similar on a recent project. I was wondering about a couple of details.
1) The description hints that an entity class may hold the results of a more complex query, not just all fields from one table; it also says that the field values can be updated. What if the query includes aggregate functions? Is there a restriction to prevent this?
2) The entity classes seem to hide the details of recordset interaction; what (if anything) hides the SQL used to get the specific set of records you want? In other words, how is the query set up to begin with?
Best wishes-
-R. Kingan |
| Mon 20 Jan | rkingan | Thanks for the information! |
| Thu 23 Jan | AEB | HeyMacarana, We're using COM+ (EnterpriseServices) in .NET. Works fine, was easy to implement, but if you are doing any intensive database work (i.e. transferring tons of data in bulk) expect a 10% hit in performance time.
And yes, we are using stored procedures for our data access. The only drawback with stored procedures is that it is easier to create dynamic queries if the SQL is in the code (i.e. adjusting the where clauses, sorts, etc.) |
|
| Google Language Translation | Fri 10 Jan | John |
| Google offers a BETA version of its language translation software. I had fun using it to translate translated versions of Joel on Software and comparing with the original English version. (French to English, German to English, Spanish to English) |
| Thu 23 Jan | David Clayworth |
I thought the results were rather good. This link gives the translation from the French version of The Joel Test back to English.
http://216.239.37.120/translate_c?hl=en&ie=UTF-8&oe=UTF-8&langpair=fr%7Cen&u=http://french.joelonsoftware.com/Articles/TheJoelTest.html&prev=/language_tools
(it may be too long to work. If so, sorry).
I'm very fond of item 12 'Do you make tests of usability of corridor?'. Yep every day, and it's proved very usable so far. |
|
| CityDesk Flash demo: how was it created? | Tue 21 Jan | Matt Harris |
| Id like to record a Webcast demo of one of our products with a simple voiceover, exactly like the CityDesk one.
Whats the cheapest, easiest way to do that? Im assuming I need something from Macromedia??
Thanks in advance
Matt Harris |
| Tue 21 Jan | Joel Spolsky | We hired a flash programmer to do it for us; email me if you need his name.
There are also tools like qarbon and camtasia which are supposed to make it easier. I haven't tried either, but I believe that I am scheduled to write a review of Camtasia for Programmers Paradise sometime in the next few months so it's in my future. |
| Tue 21 Jan | Herbert Sitz | Camtasia does make it a snap. You just record the video and save it in flash format. Simple as that. You can edit it in the Camtasia 'Producer', which is also very simple.
When you save a Camtasia video in flash format, you'll just get a blank screen while waiting for the flash video to load, no progress bar or 'please wait' message. I assume you could do real flash programming to add those, but I've never used flash so I don't know. And you won't have any interactive buttons on your flash app either, don't remember whether Joe's video had those. |
| Wed 22 Jan | David Geller | I'd like to recommend Swish for those of you with a desire to create your own Flash. You could certainly create something like Joel's demo, though it would be a bit trying. Visit Swish at http://www.swishzone.com.
Another, tool, perhaps more closely aligned to what is being sought, is Qarbon. I've played around with their demo ViewletBuilder (developed in Java!) and found it to be quite impressive. Unfortunately, it's also pricey; around $900. But... that's close to what you'd be paying a professional to help do this for you, so it's probably a wash if your're doing just one presentation and worthwhile if you're considering a whole series of training products. You'll like what you see at http://www.qarbon.com. |
| Wed 22 Jan | Troy King | Camtasia Studio is excellent. It's very easy to use, and its export formats are fantastic. I am working on a demo for our product with it right now, and I am amazed at how easy it has been to produce very high-quality work with inexpensive ($350) software. Their site is http://www.techsmith.com/products/studio/default.asp .
One tip, if you do use Camtasia -- follow their suggestions in the help file! Captures really are 2 - 10x faster/smoother if you pick the 'turn off hardware acceleration' feature. |
| Wed 22 Jan | Albert D. Kallal | It is too bad that MS-office gave up on MS-cam
It was included on the office 97 disk. It was a screen capture utility with sound capture also. The compression was very good also.
For a company to give out instructions on common tasks, using a screen capture with voice is a fabulous way to quickly email, or inform users of how to do a new task.
Of course office had this screen capture because Lotus had a good one also.
The ms-cam however does not work beyond win95, and does not work with the high res screens we run today. However, it was very useful.
The other possibility free approach is to use the windows media encoder. Included with the download is a screen capture codec. The result is a standard wmv file playable on most pc’s with the media player.
I played around with it a bit, and if you have good hardware, then the media encoder with screen capture does work very well.
For quick and simple explain of tasks, a screen capture/video is the cheapest and most effect way to communicate something to your users.
Albert D. Kallal
Edmonton, Alberta Canada
Kallal@msn.com |
|
| No Hebrew translation of JoS articles? | Tue 21 Jan | Bod |
| Why is there no Hebrew tranlsation?
I would have thought it would be one of the first languages with a full set of articles translated, since Joel (presumably) speaks it. |
| Tue 21 Jan | Michael H. Pryor | Look at
http://www.joelonsoftware.com/LanguageSignup.html
Scroll down to Hebrew. |
| Tue 21 Jan | Joel Spolsky | I already have a bunch of Hebrew translations lined up, but I need to get the bidi support working in CityDesk (basically I think all I need is a button to add dir='rtl' to a tag). As soon as that happens Hebrew and Farsi will show up. |
| Wed 22 Jan | Yoav | Using ASP (VBScript) I created a website that has both Hebrew and English text. The same *.asp page could show either Hebrew or English depending on what you wanted.
In order to align the English and Hebrew properly I (hopefully the code appears correctly):
1. Put all the content into database fields
2. At the tope of each *.asp page I put in the following: <%@ Language=VBScript Codepage=1255%>
3. The charset was:
4. Depending on which language appeared I had a stylesheet for English and another for Hebrew. The Hebrew stylesheet had the following: direction: rtl; in the paragraph tags.
It came out OK. |
|
| MS VB6 designed by Totalitarians | Mon 20 Jan | WNC |
| MS VB6 designed by Totalitarians
It must be true that VB6 was designed by Totalitarians.
Consider this: you have a form with a data control on it. You set the source property to your cool Access database. You add textboxes and DBComboboxes and connect all your controls to your data control. It all works wonderfully. But then you decide that, since one of your Access fields has a currency data type, you want it to be displayed as a currency type. You try to set that control’s Data Format property to currency, but you get a message! “The Data Format property is not supported by this DataSource.” Why is that anyway? Why doesn’t the DataSource go, “Oh, look the underlying data is a Currency type, let’s display it as currency!” This is one of the frustrating and incomprehensible aspects of MS VB6 objects. They work right up until the last detail and then you discover you’ll have to go through all the trauma of changing to some other DataSource scheme! Why can’t they play nice?
Yuck! |
| Mon 20 Jan | WNC | Not trying to start a fight, just wondering if anyone understands this strange behavior. |
| Mon 20 Jan | Matthew Wills | WNC,
I would suggest asking this question at http://peach.ease.lsoft.com/scripts/wa.exe?A0=visbas-l - it would seem to be a more appropriate forum that this one.
Another list to try might be http://peach.ease.lsoft.com/scripts/wa.exe?A0=visbas-beginners - particularly since not many members of the first list use the Data control (see http://www.vb-faq.com/Articles/Chang/NoBoundControls.asp for some discussion of why).
Seeya |
| Mon 20 Jan | WNC | Thanks. Very nice of you to reply with links to help for this problem. I will consider avoiding posting such a comment to this site in the future.
Reading the last ten threads, it doesn't seem so out of place. But I'm not sure I wanted help- I know how to get what I want another way- as I wanted to understand. Since Joel helped implement VBA in Excel and since there are several similar questions in the list, I thought I'd mention it.
Thanks again |
| Mon 20 Jan | WNC | The solution, of course, is to spell currency correctly.
No. The solution is to put a on change even in the text box that says:
txtDepositAmount.Text = Format(txtDepositAmount.Text, 'currency')
But WHY doesn't it format it correctly to begin with? That is the question. Not, How do I do it!
If the underlying data is currancy, why can't the brilliant VB6 controls display it as currancy?
Now, who is going to answer my question? |
| Mon 20 Jan | WNC | I meant to type On-Change EVENT... swine keyboard! |
| Tue 21 Jan | Wayne | >>But WHY doesn't it format it correctly to begin with? That >>is the question. Not, How do I do it!
Because if it did, then it would only work for Access and not SQL Server, Oracle, ODBC Datasources, etc.
If it did, the data-binding would be less flexible. |
| Wed 22 Jan | Troy King | Good God, WNC, I've never heard so much whining. VB6 isn't telepathic, and neither is any other environment. If you're a programmer, why don't you just, oh, I don't know, write a line of code to handle it? If I recall correctly, currency is just a display format for convenience within Access, not an actual storage format. I could be wrong; it's been 6 years since I've used Access or written code that uses it. |
| Wed 22 Jan | WNC | Microsoft Jet is the database engine that is used to do the actual database work in MS Access. Jet has a Currency data type (8 bytes) that stores over nine-hundred-trillion dollars with up to four decimal places. |
|
| Which technology for RPC through the Net? | Mon 20 Jan | Frederic Fauer |
| Hi,
Im currently looking at the different solutions available to move to a multi-tier architecture, and would like some opinions on the good technologies currently available to make that code accessible to our customers over the Net (ie. unknown latency, security risks.)
As a newbie, Ive heard of XML-RPC, SOAP, DCOM (non .Net envt), Remoting (.Net), and Corba.
Are there others I should know about? Ideally, it should be easy on a VB developer (ie. should not require learning a new and difficult language if the code on the server needs to be rewritten.)
Thx much |
| Mon 20 Jan | Li-fan Chen | Either DCOM and .Net involves a lot of licensing fees (because you have to own either Visual Basic 6.0 or VB.NET 1.0) so use the one you can afford. If you can afford to upgrade you might save sometime using .NET, but really depends on your requirements. Tell us more! |
| Mon 20 Jan | Just another dude | Technically neither DCOM or .NET *require* any licence fees beyond owning the OS.
You can write .NET code with just the freely download able SDK. You might not get the nice (?) GUI of VS.Net but it will produce the same code.
To be more helpful: why are you looking to move to a multi-tier environment? Answering that question would help you decide which RPC technology to use rather than making a pure technology decision.
Probably the easiest to get up to speed on would be .NET remoting or maybe SOAP using one of the toolkits if you don't want to make the jump from VB6 to VB.Net.
(.NET remoting as a technology can use different formatters between end points, one of which is SOAP under the hood). |
| Tue 21 Jan | Frederic Faure | Thx guys... but I'd rather avoid going .Net right now, and SOAP seems more complicated than XML-RPC. And Corba seems even more of a pain. Are there other ways that I should know about?
However, I'm a bit concerned about performance since a call to a routine on a web server through XML-RPC should be pretty slow. Are there JIT compilers for PHP, or some caching software to avoid reinterpreting the code every time a routine is called?
And if someone has a working VB5 client + PHP server sample, I'm interested :-D
Thx |
| Tue 21 Jan | Benji Smith | PHP has some caching technology available for it. Zend technologies, home of the guys who wrote PHP, has a product called the Zend Performance Suite. It compiles your PHP code (which gives faster execution times, since your script doesn't have to be parsed every time it is run) and caches database results for whatever interval you specify. They claim a performance increase of 25x (though I've never used it, so I can't vouch for that). You can read more at http://www.zend.com . |
| Tue 21 Jan | Benji Smith | ....Of course, I'm not sure what PHP has to do with RPC.... |
| Tue 21 Jan | Li-fan Chen | Hey I went and checked out some licensing information and just want to retract what I said about the fees. But yeah you gotta pay for the OS tax as long as you're with Windows. REalistically most of us will be shelling out for a productivity tool like Visual Studio .Net though so don't discount that cost out of your balance sheet. |
| Tue 21 Jan | Li-fan Chen | Well RPC is a tool and so is PHP. In the end how you fit these modules into a solution really depends on the problem. You can have a fast solution with caching and ahead of time script compilation, and you can do the same with RPC calls over balanced servers accessing a common DB-backend farm. There are more than one way to skin this cat. |
| Tue 21 Jan | Just me (Sir to you) | 'Ugh, holy hacking batman. The more XMLRPC gets put to the test, the more is shows just how weak it really is.'
http://radio.weblogs.com/0104813/2003/01/13.html#a204 |
| Tue 21 Jan | Ralph Chaléon | I would replace CORBA with java/RMI in your list, maybe it's worth a look.
Starting from scratch, I would go to .NET, because it's really easy to use. |
| Tue 21 Jan | Just me (Sir to you) | Frederick,
Since you are talking about 'customers over the Net', make it easy on yourself and disqualify anything not HTTP based. It will not work 'in the wild'.
If you feel like it I would also be interested as to why you reject .Net for the server, coupeled as suggested with a VB client (with some SOAP toolkit). Seems like such a natural choice for your VB dev. team. |
| Wed 22 Jan | Frederic Faure | Thx everyone. I'll take a look at Zend and other solutions to improve performance. I'll also take a look at Java/RMI.
As for rejecting .Net, it's because I prefer to use open-source and light solutions over bloated and proprietary solutions. I keep an eye on DotGNU and Mono, though.
Thx again. |
| Wed 22 Jan | Just me (Sir to you) | As you stated:
'Ideally, it should be easy on a VB developer (ie. should not require learning a new and difficult language if the code on the server needs to be rewritten.)'
I think your decision to go with Zend optimised PHP or Java/RMI is one of almost Dilbertian excellence.
'As for rejecting .Net, it's because I prefer to use open-source and light solutions over bloated and proprietary solutions.'
Always a pleasure to meet an open mind. |
|
| Why didn't you tell me!? | Sun 19 Jan | Stephen Jones |
| Something happened yesterday that reminded me of when I bought my first computer. It was in Barcelona in November 1996. A cloned Pentium 133 with 16 MB of RAM, no CD, a 14 monitor that always ran in 16 color mode because nobody told me how to get it to run any other way, an HP 690 DeskJet, and Windows 3.11 pre-installed (W95 was costing $100 more).
I took it home by taxi, went into tech whiz kid mode, put all the wires in the right place, and fired it up. I got a black screen with some writing finishing in “C:\” . I found I could type what I wanted and it would show up on screen, but nothing exciting appeared to be happening. Now, I knew that Windows wasnt all it was hyped up to be, but this was ridiculous. I dove in a taxi and went back to the shop. Ah, but you must type in Win they said. Thanks, but you could have told me before! I say.
Back I go home and sure enough it works. The joys of the Windows Welcome screen appear. But now we get to the second problem; the mouse doesnt work. There is a very helpful tutorial on screen, and Im sure it would tell me how the mouse would work but unfortunately you need the mouse to work in the first place to access it. I look at my watch, and find its too late to get to the shop but theres still enough time to hit the bookshop. I get to Plaça Universitat just before the shop closes and pick up a 700-page book on DOS and Windows 3.1
I spend the whole night reading the book but getting nowhere, and went bleary-eyed the next morning to the shop. The saleswoman gave me a patronizing smile, and the tech guy explained that I had to install something called the mouse driver which came on the floppies theyd given me. And once again, but stronger, out came the cri de coeur, Why oh why didnt you tell me!
What bought this to mind was that yesterday I finally hit the bullet and started to redo an Access application Id written a couple of years ago for work. As you probably know I am an English teacher not a programmer, and the particular program to keep track of job applicants, was written with the aid of a very large book on using Access, so it has lots of macros (none of which are grouped), no code or comments, and some truly marvelous kludges, such as making a whole new query to get a calculated field for the source of a combo box, because I hadnt realized I could just type the formula in the combo box properties.
One thing the program does is open up a mail merge document to print a report on a candidate. This has certain disadvantages too obvious to mention, so I decided I was going to design an Access report to look like the original Word document and print that.
What I needed was the code to get the report simply to print the current record from the form. I check the help file and it comes up with
>>>To open a report and restrict its records to those specified by the value of a control on a form, use the following expression:
[fieldname] = Forms![formname]![controlname on form]<<<
So I type in
Dim stDocName As String
stDocName = Evaluationquery
DoCmd.OpenReport stDocName, acPreview, , ID = Forms!Evaluationquery!ID
The report opens but at the first page, with all 400 odd reports there.
I go and check similar code in the application used to open a form at the correct record. The code is in a macro and works perfectly. So I change the SQL where clause to what works in the macro
[ID] = [Forms]![Evaluationquery]![ID]
Still opens the form at the beginning with all records. I play around a bit, manage to get the header to show on a separate page and not show on a separate page, spend over an hour looking through the help file and various books, but get nowhere.
In desperation I go to one of my books and adapt a sample of code that opens a report with a subset of records.
Dim strReportName As String
Dim strFilterName As String
strReportName = Evaluationquery
strFilterName = ID = Forms!Evaluationquery!ID
DoCmd.OpenReport strReportName, acPreview, , strFilterName
Whoa and behold, it opens one record at the right place!
Puzzled, I quickly check out what happens when I substitute the last line by
DoCmd.OpenReport strReportName, acPreview, , ID = Forms!Evaluationquery!ID
And it still works perfectly.
Now the reason for this is obvious a posteriori. In VBA the embedded SQL WHERE clause is a string, and thus needs the quotes. But nowhere does the example tell you. Nowhere accessible does the help file clearly mention that actions such as OpenRecord only work with macros, and that for code you must use methods of the DoCmd action, or that your field names will always be enclosed in square brackets in macros, but that this is not necessary in code.
This is just one minor example of a most irritating trend which is not confined to Visual Basic, but appears more there. The lack of any book that actually gives you any basic theory. Its as if the language was called Visual Botchit instead of Visual Basic.
I have read through various VB in 24 hours books (it normally takes 24 hours to read the book and another 24 to debug the faulty code samples but thats another story) and yet nowhere is it explicitly stated why this verbose code below
Dim strReportName As String
Dim strFilterName As String
strReportName = Evaluationquery
strFilterName = ID = Forms!Evaluationquery!ID
DoCmd.OpenReport strReportName, acPreview, , strFilterName
is better than the more concise one line
DoCmd.OpenReport EvaluationQuery, acPreview, , ID = Forms!Evaluationquery!ID
I would think this is obvious to nearly everybody on this forum (and is the answer to Weis complaint about VB being verbose) but to the non-programmer trying to get his office app to work its not.
On the VISBAS beginners forum a week ago there was somebody whose code didnt work because he had not used a Set statement. It was completely beyond him why he needed to, until somebody explained it. NOBODY HAD TOLD HIM.
Everybody here complains about having to clear up spaghetti code from the VB-in-24-hours-brigade. But has it never occurred to you that the reason this is so is that nobody has ever told us any better. How can you be expected to comment code when you havent the least idea how it works in the first place?
The purpose of the for dummies books is supposed to be to make you smart. Can somebody, and Joel obviously springs to mind, write a Visual Basic book that is not aimed at ensuring you really are a dummy after youve read it. A book for Visual Basic along the lines of Greenspuns book on database web applications.
When youre cleaning up code in a few years youll appreciate it! |
| Mon 20 Jan | Albert D. Kallal | The real key here is having a writer that can tell you what is important, and what is not important. I always hate paging through 30 pages that tell you about the file-open dialog! And to “save” something! It is like telling you that you have to open the door on a car before you drive it!
However, you can not learn brain surgery in a day by reading a book. Fortunately, for us developers, programming is skill that takes a good deal of time and you also can’t learn it in a day.
Further, you also have to understand that you are dealing with multiple technologies, and each single technology can be the subject of a great deal of learning.
Thus, the “where” clause is a expression. You now need to learn how to make expressions in VB (by the way, the programming language in ms-access is VB).
Lets take your docmd.OpenReport example.
First, the help says that the where clause is in fact a sql where clause! This is critical piece of information. Anyone who has ever used sql knows that you must enclose text values in quotes, and you don’t for number values. However, don’t confuse that problem with your problem of knowing that a expression needs to be surrounded in quotes! For example, your example of:
DoCmd.OpenReport strReportName, acPreview, , strFilterName
Will not work if you use quotes around the FilterName as:
DoCmd.OpenReport strReportName, acPreview, , “strFilterName”
Thus, there is no way out:
You have to learn how to create expressions in VB to use the OpenReport command.
Further, you need to learn how to use sql. And you need to rules for condtions in sql for JET. Some of them are:
For strings you must surround values with “
For numbers don’t surround
For dates, you must surround the value with #
I suppose the above could/should be added to OpenReport help, but the OpenReport help page is already quite large in the help. While it is not the best to tell you to go and read up on sql where clause, it is probably what you should in fact you should do!
Hence, you now need to learn sql to really use that command correclity! Well, learning sql, and learning to build a “where” clause in sql is not rocket science, but just telling you to surround text in quotes does not really help. (and my above exaple with quotes around the the where clause in fact would not work!). quotes are not the problem, using expressions is!
Also, by just looking at examples and not actually understaing what is going on, you create a lot of confusion. For example you tried:
[ID] = [Forms]![Evaluationquery]![ID]
Looking at the aobve, the squrare brackets are legal, but not for keywords like the forms 'keyword'. Hence you CAN USE:
[ID] = Forms![Evaluationquery]![ID]
So, I can’t just say use square brackets, and don’t use square brackets. In fact, your complaint about using square brackets is not really fair. You are in fact completely free to use square brackets around your field and form names. However, you are also trying to place square brackets around the word “forms” and that does not make sense. No more then:
docmd.[OpenReport]
As the above shows, you would not want to place the square brackets around commands or keywords. The real key to unlocking how those expressions work is to start understanding collections in VB. The forms object is a collection. If I were to say what the #1 problem area people have in ms-access is a lack of understanding of how to use collections. The second most problem is how to build expressions.
The following examples are all legal ways to reference a form:
Dim strForm as string
StrForm = “Evaluationquery”
Forms![Evaluationquery]![ID]
Forms!Evaluationquery![ID]
Forms!Evaluationquery!ID
Forms(“Evaluationquery”)!ID
Forms(strForm)!Id
All of the above are equivalents. In fact, you can even use the forms index value. If you knew that your form was the 3rd form that you just opened, then you could also use use:
F orms(2)!id
(the values start at 0, and work their way up).
So, to use that stupid OpenReport methoed also with your where clause you need:
* to understand how to create expressions in VB
* you need to understand how to create where clauses in SQL
*you need to understand how to reference collections in vb to correctly use the right form in code.
Gee, collections, expressions, and also SQL where clauses is tall order for a simple page!! It is not good enough to tell you to use square brackets in a macro, but not use them in VB. In fact, you can use square brackets all over the place in your VB code as long as it is a reference to a collection object that you created (ie: forms, reports, queries, tables). In all other places in code you should not, and can not use square brackets. Hence, the above is the REAL rule for square brackets. But now, you need to understand what a collection is to understand that above rule! (because in all those cases where you are using square brackets you are using a collection).
So, no..there is unfortunately no cut and dry and easy answer here! Each concept you learn is going to be based on another concept. When you stack up enough concepts in your brain you will become a software developer!
In fact, just so you know, the real reason why square brackets should be used in code is WHEN YOU have spaces in form names, and spaces in field names (in fact, in all of the user defined collection objects). However, you should avoid spaces in field names like the plague (since most databases systems don’t allow this). Thus, exporting your data to other systems will cause all kinds of problems. Even MS’s own SQL server does not allow spaces in the field names!. Hence, just don’t do it! And you will never need square brackets!
You can see already in my simple and short response to you I am already writing all kinds of things that you need to know. (like no spaces etc). I could easily write 20 more pages on just that simple one line of code called
docmd.OpenReport
In fact, the
docmd.OpenForm is even more complex!
Further, I am not even starting to talk about the different modes that you can open the form in (acDialog, and model forms in ms-access are for two VERY VERY different purposes in ms-access. Yet most books don’t explain the difference between the two, and further they fail to explain when you use acDialog forms, and when you should use Model forms. (acDialog forms even disable your custom menus!). Again, I could write a dozen more pages on additional options available in the OpenFrom command.
Just how many pages do you want me to write here? I absolutely convinced I could continue typing here for 20 pages and I would start scratch the surface here!
Further you are in fact not even forming the where clauses correctly! You are very lucky that your example actually works (shame on those books for bad examples!). I don’t like those examples at all!! In fact, your expression only works because ms-access has a expression evaluation system that kicks in and evaluates that forms reference for you!
How would you search a bug database for a form named:
“BugForm = Forms!Evaluationquery!ID'
Is the above going to search for a form named Forms!Evaluationquery!ID ???
What happens when you actually want to search for a form named
Froms!Evaluationquery!ID
How can the system tell the difference between the two? As mentioned, I am actually VERY surprised that your example works. (is does work because ms-access has a expression “service” that evaluates it for you. That is what Joel calls a leaky abstraction!!).
The correct way is in fact is:
StrWhere = “id = “ & Forms!Evaluationquery!ID
If you are searching for a string, then you need:
StrWhere = “id = “ & “”” & Forms!Evaluationquery!LastName & “””
Or, it is common to use:
StrWhere = “id = “ & chr(34) & Forms!Evaluationquery!LastName & chr(34)
Furtther, to search for a form name in your data base you would use:
StrWhere = “BadForm = “ & chr(34) & “Forms!Evaluationquery!LastName” & chr(34)
Notice the “ (quotes) surrounding the form name. So, your original problem is not that you need to be told to surround the values in code, but you need basic knowledge as to how to build string expressions in VB, and that again is another whole area.
Also, your use of FilterName is confusing, since the docmd.OpenReprot has both a FilterClause, and also has a Where clause! Now, you have to start reading up on the concept of filters in ms-access.! A where clause, and a filter clause are different.
The arguments for Open From are:
DoCmd.OpenForm formname[, view][, filtername][, wherecondition][, datamode][, windowmode][, openargs]
Note both the filter option, and the 'where' option (they also exist for Reports).
So, yes, some books are not the best, but I can’t see any shortcut on how to learn the tons of concepts you need to use the simple OpenFrom.
This stuff is not really hard, but you do in fact need several layers of concepts to actually use that command. You have to learn to walk before you learn to fly. That is what all developers have to learn!
So, yes..we need good books, but there is no secret shortcut to learning this stuff. Sorry!!
Albert D. Kallal
Edmonton, Alberta Canada
Kallal@msn.com |
| Mon 20 Jan | Kyralessa | The reason nobody told you is because you buy crap books. No offense; it's almost definitely not your fault; until you've bought a few good ones and a few bad ones, it can be hard to tell the difference. Heck, even after you've bought quite a few, it can be difficult to tell with some of them.
The simplest test for a computer book (or any book) is the apparent pages / real pages ratio. How wide are the margins? How big is the type? How many blank pages are left at the end of each chapter? One example I noticed recently (partly because of its sheer ubiquity) is those Left Behind books that are being snapped up by millions. Open one of those, and you find that the margins seem to be about two inches on each side, and the text is practically double-spaced and larger than it needs to be. I'd put the apparent pages / real pages ratio for those at 2 / 1. Obviously the higher this ratio is, the higher the price will be without the content to back it up; you're paying for dead trees, not brilliant content.
To go beyond that simple test you have to have some familiarity with your subject matter, and of course you won't till you've read a few books on the subject, so we get into the chicken-egg thing here. One thing to do is find as many local, city, county, or university libraries around as you can and see if they carry computer books. If they don't, see if they will, or if you can get them through interlibrary loan. Generally, if a book is worth having, you can't absorb it in two weeks, but it's enough time to give you a feel for the book so you can figure out if it's worth spending your money on it.
I had a 'nobody told me' moment myself this past week: At work, I've been struggling with a better method for source code control in Access (without buying VSS). Just last week I discovered that you can set references to a database you created and use its procedures. It's precisely what I needed, and I felt like an idiot not knowing it, but then who has time to read all the books in the world? I imagine that anyone who programs has a fair number of such moments, and a fair bit of old and embarrassing code created before they knew certain important facts they know now. I wouldn't let it get you down. As I was saying to someone the other day, the painful lessons are the ones you learn best. |
| Mon 20 Jan | Stephen Jones | Albert,
Thanks for all the advice. Can I just comment on a couple of points now.
The main thing I was objecting to was that the help files do not clearly distinguish between the OpenReport action (which only works in macros) and the OpenReport method of the DoCmd action. If you type in OpenReport instead of DoCmd.OpenReport you will get an error in the code window. The OpenReport only works for macros, but the help doesn't make this clear.
The syntax for the embedded where clause will work in Access. In fact if you try to run a macro using any other syntax it will fail. In particular you cannot put the controls parentage in the first part of the sequence you will not get the required result in either VBA or macros.
'Queries!Evaluationquery!ID =Forms!Evaluationquery!ID
will not work.
I have tried using your syntax
StrWhere = “id = “ & Forms!Evaluationquery!ID
but have not found any way to get it to work.
The thing is that it appears you must use the exact syntax I have used in Access with OpenReport or DoCmd.OpenReport I am quite aware of the fact that standard SQL requires other syntax.
>>>Also, by just looking at examples and not actually understaing what is going on, you create a lot of confusion. For example you tried:
[ID] = [Forms]![Evaluationquery]![ID]
Looking at the aobve, the squrare brackets are legal, but not for keywords like the forms 'keyword'. Hence you CAN USE:
[ID] = Forms![Evaluationquery]![ID]<<<
It's not me that's placing the square brackets around the keyword Forms, its Access itself. If you leave Forms without the square brackets in the macro editor in design view, and save the macro, you will find that Access has put the square brackets back again! In VBA both yours and Access macro's code will work as long as you put quotes around the whole expression.
>>>Notice the “ (quotes) surrounding the form name. So, your original problem is not that you need to be told to surround the values in code, but you need basic knowledge as to how to build string expressions in VB, and that again is another whole area. <<<
The problem in this case appears more simple. When you are using a macro you don't have the quotes. When you are using VBA the where condition is a SQL string and to the best of my knowledge all string literals in VBA must be in quotes. It's just that it's not the kind of thing that's in the forefront of your mind. I still maintain that the 'leaky abstraction' is that the Access help moves seamlessly between macros and VBA code, but the syntaxes, although similar, are not the same.
>>>Also, your use of FilterName is confusing, since the docmd.OpenReprot has both a FilterClause, and also has a Where clause! Now, you have to start reading up on the concept of filters in ms-access.! A where clause, and a filter clause are different.<<<
Yep, horrible isn't it! But it's not my use of the FilterName it comes from; the official Microsoft Press books on using VBA in Access 2000. I would change strFilterName to strWhereClause if I was writing the code myself. And just to show that the right hand doesn't know what the left hand is doing the only example the help gives for the DoCmd.OpenReport method is
DoCmd.OpenReport 'Sales Report', acViewNormal, 'Report Filter'
In this case the ReportFilter is a string literal the name of the particular saved filter; that is why you see the extra comma in my code, the comma is there to replace the non-existent filter.
In short I am in fact aware of many of the things you say, though to have them said again clearly is a great help. However my point is that both the help file and most VBA books are sloppy about these things, and that we should not have to be picking up the basic concepts almost by default. Above all it should be made clear where Access macros are different from Acess VBA and where Access VBA is different from VB and where Access SQL is different from standard SQL and where embedded Access SQL is different from either.
Incidentally Albert I had great difficulty a year and a half ago trying to persuade another VB expert that the syntax for the macro command in OpenForm was correct.
Dear Kyralessa,
>>>The reason nobody told you is because you buy crap books. No offense; it's almost definitely not your fault; until you've bought a few good ones and a few bad ones, it can be hard to tell the difference. Heck, even after you've bought quite a few, it can be difficult to tell with some of them<<<
No, I can tell the difference; I have a fair number of good books for varying things (for Access programming my favourite is probably the O'Reilly book by Steve Roman) but the real problem is that there do not appear to be any good books for VB. You have to work things out indirectly by yourself. Good for mental agility no doubt, but a highly ineffective way of learning a particular domain.
What books for example will bother to explain clearly why OK is nearly always boolean but Cancel is an integer? To put it in a nutshell, you can get books about programming theory, you can get books about VB, you can get books about programming theory using, C, C++, Python, Lisp, DosBasic, Perl, Java and Spaghetti Carbonari, but you can't get a book on progrmming theory using VB. |
| Mon 20 Jan | Ged Byrne | Stephen,
I had the same problem when I was learning VB.
The ironic thing is that I finally got the high level overview of VB I was looking for by reading the language specification for Lotuscript.
I too was completely confused by the square bracket notation (I believe Joel was responsible for that feature). 95% of the time its intuitive and nice, but then it would stop working and I wouldn't know why.
It was in the Lotuscript manual (A pdf which came with the Smartsuite installed on my machine) that I finally read about collections. To access a control on a form you would write something like:
Forms('Form1').Control('txtName').value
Then it explained that the square bracket notation was a shortcut to the above notation.
[Form1]![txtName]
Finally it explained that the components had a default property, which in the case above was value.
The finally missing piece was that my context also had a default object - the Application object. The default property was a collection of currently loaded forms.
This was all expressed in about three paragraphs, and suddenly it all made sense. A simple object hierarchy with default properties and a shortcut notation for the collections. Thats it.
Albert is right to explain the complexity of when and when not to use square brackets, but really there is a simple concept behind it all that just doesn't get explained. The vast majority of the books for VB just encourages a cut and paste approach.
So too the need to encase an SQL statement in quotations it that complicated once you understand that the SQL is not part of the language, but is a string that you a passing to be processed by a separate object.
btw, have you tried Hardcore VB - http://www.mvps.org/vb/hardcore/ |
| Mon 20 Jan | Ged Byrne | Joel was responsible for the square brackets. He discusses it in this thread:
http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=1303&ixReplies=6
Just to be clear - I'm not criticising Joel and the square brackets. It really is a nice syntatic feature. My criticism is that it is never explained to newbies properly. |
| Mon 20 Jan | Stephen Jones | The trouble with hardcore VB is the name. The Saudi authoriites think it is a porn site (Visual + Basic + Hardcore) and the result is that it is banned. I will try again to get them to lift the ban, but I am dubious of success.
I'll be in Sri Lanka on holiday in two and a half weeks so maybe I can get it then. If you could email me anything you see on that site that is useful I would appreciate it. Click on the link to contact me, and I'll send you the address privately - if I put it here I'm likely to get another load of Viagra ads. |
| Mon 20 Jan | Martha | One of my 'nobody told me' moments with VBA was bang (!) versus dot (.) -- I would get newsgroup suggestions to do stuff like Me.ControlName, even though all the help files use Me!ControlName (or maybe it was the other way around? Don't quite remember). Took a while to figure out the difference, i.e. when they're interchangeable and when they're not. I still haven't found a book that adequately explains the distinction.
Another problem I had when starting out with Access was the casual use of specific terminology. An Action is different than a Method, but there's nothing in the terms themselves that tells you which is which. (Makes the help files rather hard to understand. 'The xyz method performs the xyz action in VBA.' Gee, how helpful.) A Module sounds like a fancy mysterious something; nobody tells you it's just a place to put code. |
| Mon 20 Jan | Albert D. Kallal | I will just jump in with a few more comments:
>>>The OpenReport only works for macros, but the help doesn't make this clear.
All of the macro commands in VB are run by using the DoCmd. The very second you find the docmd, you should be home free!
You only have to use the DoCmd. I never used macros in ms-access anyway. Maco's are also a maintenance nightmare.. The question you are asking is how do you run or use macro commands in VB? The answer is to use the DoCmd object.
>>'Queries!Evaluationquery!ID =Forms!Evaluationquery!ID
>> will not work.
Of course it will not work!!. It will not work in SQL either. What part about the where clause being standard sql did you not understand? Sql where clauses are usually
City = “Edmonton”
Or
SomeFieldNameInTheQuery = some value
In the above, you are asking for sql to search a field named Queries!Evaluationquery!ID = to something. There is no field named that!!. So, that above is terrible example.
MyTableName!Id =
Again, the above will NOT work. You HAVE TO use a standard sql legal expresison.
Again, you have not yet grasped the concept of creating expressions. You can use the standard SQL table qualifier such as:
MyQueryName.ID
The above is standard sql. If you know sql, then the above will make sense. You are trying to build expressions in sql without knowing sql!
So, the query name is Evaluationquery, then you CAN USE:
“Evaluationquery.ID = “ & Forms!Evaluationquery!ID
The table qualifier in SQL is VERY standard.
Again, you are having problem here since you need to know SQL syntax.
>>>> I have tried using your syntax
StrWhere = “id = “ & Forms!Evaluationquery!ID
My example should work. The above assumes that you have a field called “ID” the query. The above also assumes that id is a number type field. Is Id a number type field and does it exist as a field in the query? As mentioned, I actually laid down the rules for SQL queries in my example? Did you bother to read my comments? Also, I was very clear that the above was NOT a filter. Hence, try the following code:
Me.Refresh
StrWhere = “id = “ & Forms!Evaluationquery!ID
docmd.OpenReport 'YouReport',acViewPreview,,strWhere
The above will work. Note the number of “,” for the parameters. If id is a text field, then the above will NOT work. Also, since you are in a form, the me.refresh forces a disk write. The reason you need that is when you are in a reocrd, the data has not been saved yet. You do realize that ms-access does not save the current record until you move to a new record, or exit the form right? Ask your self when does ms-access save the record? I am 100% certain you realize that ms-access saves the record when you close the form, or go to the next record. Thus, how can you possibility launch a report to the same record without saving the record first? It does not make sense to launch a report to report on that record without first saving?
While I accept that some manuals are not good, you have not taken the time to learn how to build expressions. You are still making basic mistakes. This is the source of your troubles.
Try the above example. It is correct. The only reason why it would not work is if ID is not the right field name in the query, or id is a text type field. Try it and post back here. If id is a text type field, then you need to surround the value with quotes IN the string.
>>> It's just that it's not the kind of thing that's in the forefront of your mind. I still maintain that the 'leaky abstraction' is that the Access help moves seamlessly between macros and VBA code, but the syntaxes, although similar, are not the same.
Not really. The problem here is that you never made a distinction between methods of the docmd and macro actions. All actions in the help refer to macros, and methods refer to the docmd object. There is not more here to know, but you at least have to make that distinction!
Also, my example of using [] brackets was not the best. In fact, in my examples I said to not surround keywords with [] brackets. This is correct advice for commands. However, in my examples the forms keyword is NOT a command. (so, I fact, I was wrong!). Hence, you CAN IN FACT fact surround the word “forms” with [] and it will work.
Remember, those macro commands send off that stuff to the VB docmd object anyway. So, if it works in a Macro, then it WILL WORK in VB. I don't even have to test this to know what will happen. Just like spock says I don't need to see a hammer hit the ground if it is dropped. So, if the square brackets work in the maco, then they will work in the VB. If they did not, then again you are doing somthing wrong. You *can* surround the word forms as [Forms].
Anyway, that above OpenReport example will work. |
| Mon 20 Jan | Super | In the amount of time it probably took to write that massive post, you could have rewritten everything from scratch in C, starting with your own from-scratch revolutionary database, all running on an Intel Paragon. As an added bonus, the Paragon could scroll your data in five foot tall letters while it processes. The program could also do some complex bioinformatics work on the side. |
| Mon 20 Jan | Bella | O'Reilley books are generally very good. Stick to those. |
| Mon 20 Jan | Stephen Jones | Albert,
Just a quickie before I go off to work. Your code with the Where does NOT work in Access. TRY IT OUT. I have read your comments, was aware of most of them anyway, and yes of course ID is a number field and of course it is present in the underlying query (and everywhere else in the database for that matter).
Putting the name of the Query before the form as in
'EvaluationQuery.ID = Forms!Evaluationquery!ID'
works. both in the macro and in the code. It is not the format used in the Access help though, was touched on by another poster, and the fact that you use the . instead of teh ! in the first part of the expression is something you are more likely to find out about by making a typo than getting it from the Access help.
If am aware of the deficiency of macros, which is why I am changing everything to code. However you completely miss my point when you just tell me to use DoCmd What I, and Bertha, are saying, is that non-standard SQL works in Access, is on occasion the recommended syntax, sometimes standard SQL does not work, and nowhere in the Access help is any of this made clear. |
| Mon 20 Jan | anonQAguy | Jeeze, guys -- just gotta say 'ditto' to all that.
and this sort of shit is why my wife of now almost 19 years learned some time ago that when I'm back in my corner of the office at home surrounded by server's, laptops, and monitors, eyeballs bugged out staring holes into a monitor (often swearing assertions about the questionable parentage of the machine), and she calls back to remind me that tomorrow is trash pickup, my reply of ' Uh, yeah Hon, I'll get the trash in a second...I'm almost done...just let me try this one more thing...' really means that sometime in the next 8-12 hours, hopefully before the trash pickup the next morning, I'll actually get the cans to the curb.
damn these machines!
;-) |
| Mon 20 Jan | David Fischer | I had a 'why didn't you tell me' experience last week with PHP (the scripting language for web programming). I was upgrading from 4.1 to the latest 4.3, but it wouldn't work. After hours of monkeying around, mucking with the registry (on my Win98 machine) and trying some older versions I finally found the problem: they changed a security setting that required a flag to be set to '1' instead of the default '0' in the middle of the 1500 line php.ini file. And the installer failed to do that.
The only reason I found it is because the previous version, 4.2, issued an actual error message on failure, saying something about this security setting. Though 4.3 doesn't give any errors, it finally clicked that it might be the same error.
Once it was working, I just boggled over it, wondering why this wasn't mentioned somewhere obvious?
And then I discovered my efforts had bolluxed my computer and I spent the weekend re-installing Windows... |
| Tue 21 Jan | Albert D. Kallal | Final notes:
The example of was sent to me by the original poster:
stDocName = 'Contacts'
StrWhere = “ContactID = “ & Forms!Contacts!ContactID
I stated the above should work. I usually write my posts for this BBS in word, and then paste it. My example was “air code”, but it still should have worked. Of course I use ms-word and the above “quotes” are actually the wrong quote characters!!
The above should be
stDocName = 'Contacts'
StrWhere = 'ContactID = ' & Forms!Contacts!ContactID
Notice the non curly quotes used
Thus, when Stephan cut and pasted the code, the quotes were of the wrong type!
In fact, those quotes don’t even generate a compile error (they evaluate as an expresison to null!).
I was straining my brain as to why my examples did not work. Thankfully Stephan took the time, and emailed be a tiny copy.
Sure enough, just changing the quotes to the *correct* quote character fixed all problems.
Albert D. Kallal
Edmonton, Alberta Canada
kallal@msn.com |
| Wed 22 Jan | Stephen Jones | Well Railtrack has the wrong kind of snow, and Microsoft has the wrong kind of quotes!
For those of you who want ot persist in using Word as your text editor, then you can turn off the curly quotes feature by going to Tools|Options|Autocorrect and uncheck the box 'replace quotes with smart quotes'.
Still not my favourite MS bug though. That is the one that explains why PhotoDraw doesn't start - 'You have an odd number of fonts'. Yep, you can only use Photo Draw if your font folder has an even number of fonts; doesn't matter how many, nor does it matter what (though there is one nasty font that makes Access 97 come up with a 'You haven't got a license to use Access on this machine message) .
So don't come to me and say 'Why didn't you tell me?' :-) |
|
| C++ == Crap | Sat 18 Jan | anon |
| In another thread, Curious points out the following:
Nobody has problems with pointers in general, Everybody has problems with C/C++ pointers in particular.
Bravo, Curious!!! Im glad someone had the balls to say it. The hipsters who designed C and C++ were utter retards. Theyre so proud of their little minds that devised a language with so few keywords! That because everything in the language is overloaded in fifty different retarded ways. (=0 means purely abstract class!?!? Thats *really* intuitive. But, hey, that hipster didnt have to add a keyword!!!)
Youre absolutely right, *nobody* has a problem understanding pointers, its the idiotic syntax of that ridiculous language that makes it a difficult concept. When I was learning C++, I cant tell you the number of times I had to look up what things like char *( *(*var)() )[10]; meant. Is it because I couldnt grasp the concept of pointer? NO! My mind can wrap around things like algebraic topology quite nicely, so Im gonna say that pointers arent over my head. Its because Ritchie and Stroustrup are imbeciles. What sort of retard would decide to overload the indirection operator to also mean reference?!? The two concepts are close enough in meaning that it almost seems like Stroustrup did it with the intention of making it difficult for beginners.
Lets face it. Thats exactly what it is. People with small brains love the fact C++ has an artificially high barrier to entry. This means that they can have jobs. If languages were easy to use, only intelligent engineers would have jobs - having a retarded language like C++ means that idiots, too, can have jobs because they memorized the unnecessarily convoluted syntax.
By the way, would someone please tell me what was going through Ritchies tiny little brain when he decided that making a languge case-sensitive was a really *cool* idea?
Long live Ada! |
| Mon 20 Jan | Daniel Shchyokin | Didn't read the whole thread, maybe someone already linked this but ...
here is a funny and relevant article:
http://www-users.cs.york.ac.uk/~susan/joke/cpp.htm |
| Mon 20 Jan | John Burton | I think that one of the biggest problems with C++ is that it tries to cover too many different applications in one single language and ends up doing none of them particularly well.
For example raw pointers and memory access and full control over memory allocation is very important for a certain class of application, or if you need absolute control over it to be able to optimize. But for an average desktop application you want garbage collection and higher level containers that are 'safe'. The fact that C++ has to support the first makes it hard to do the second as it's too easy to subvert the garbage collection or safety using the low level factilites.
Strings are another example of high and low level stuff being too mixed. std::string at first sight looks great. But it doesn't work as a string! You can't pass one to the constructor for 'ifopen' for example as a filename. You'd expect that as a file needs a name and a name is a string that you'd be able to pass a string to the function... But no. It needs a char*. Ok so it's easy enough to call c_str() but why do you need to?
And why doesn't string have simple things like the ability to make a string uppercase. Or functions to encode a unicode string into utf8 etc.
And don't get me started on templates... When templates were invented they looked like a really nice facility. But now the code written with them is almost incomprehensible in my opinion. Although I understand and use the 'stl' parts of the standard library, I think they are a complete disaster. I know of few people who actually use more than a small part of the library.
A few years ago I liked C++ and enjoyed reading some of the well respected books. Like 'effective c++' and one I forget the name of that's all about template idioms. Both extremely well wrtitten book that I used to like. Now I look at the with a sick feeling thinking that there is something fundementally wrong with a langauge which requires books like this. 'Exceptional c++' is a great book in many ways but to me now it almost seems to be a catalogue of what's wrong with c++.
Basically I think the code langauge is 90% ok but the standard libraries are horrible. I'm always tempted to just ignore the standard libraries and build my own code for these thigns. I know better than to do that, but it's damn tempting.
Anyway, rant over. I use c++ daily for building applications so it's not all bad - but I'd rather use something more comprehensible for higher level applications (like C# - In my opinin java is even less useful than C++), and something like C if I ever have to do any low level stuff. Perhaps simple C++ as a better C with use of classes and virtual functions would be ok for that too. |
| Mon 20 Jan | Dan Maas | Interesting thoughts... I should point out that if you follow all the guidelines in 'Exceptional C++' your software will be much more robust than a similar program developed without regard to exception safety. ('robust' meaning that your software will continue to behave predictably even if say a malloc()/new fails somewhere - just try failing a call to malloc() in most C code and see what happens :). The exception-safety one can achieve with careful C++ code is very significant, almost on par with the 'atomic transaction' abilities of databases (as Sutter discusses).
However, despite the availability of these tools, you'd have to look very hard for a C++ programmer who can apply them correctly in his own work (I certainly don't qualify).
I'm sure the LISP/ML/Ocaml programmers out there are laughing hysterically at this point, since pure-functional programs are exception-safe by their very nature :). On the other hand, doing I/O and interacting with hardware in a purely-functional language gets to be 'interesting;' perhaps as complicated as doing exception safety in C++... |
| Mon 20 Jan | Raist3d | Fly on the wall said...
'Wow, what a great thread.
Everyone is shouting at the top of their lungs about the one true take on C++. Everyone posting here is wiser and more insightful and more wonderful than the next guy. The other guy's opinion is always invalid or incomplete. Any summarizing comments are dismissed as complete ignorance. People's positions on technology are being taken as indication of their worth as human beings.
No wonder most companies cordon off hard core technology people as interpersonally repulsive and put them in their own sandbox to duke it out... '
Wow. I have not seen a more accurate description of a thread in a long long time. I sincerely hope my post did not add to that.
Curious:
Crash Bandicoot was not made in LISP, but it did use LISP for the AI of the entities in the game. The rest was done in a mix of either C/C++ (can't remember which of the two ) and assembly.
This does not undermine your point- just wanted to comment on that. LISP would not have been fast enough to pull off the graphics that Crash Bandicoot is doing running on the PS1.
I know there are some developers out there using LUA for AI/other tasks too, because they are easier also. Witness also Unreal's Scripting language- which they actually use to code the AI and mods of the game.
|
| Mon 20 Jan | Sebastian Wagner | > yes it is 'cool' that the programmer can define a new value
> type in C++ [...]And then you ask yourself, what is this
> feature used for in the 'real world'? Umpteen billion
> different 'string' classes. What else? Not much.
It's used a lot. This improves proper designs a lot, if used properly. The complexity arising may turn out to be heavy, sure, but it's worth it when you're working on larger software.
> And IMHO C++ would have been a much nicer platform if
> strings had really been part of the runtime...
Not at all. It's good to be able to write superior versions (Unicode, faster, special cases, ...), give them the same interface and use them like you'd use std::string.
> And why doesn't string have simple things like the
> [...] functions to encode a
> unicode string into utf8 etc.
I wouldn't call that a simple function, not if it is supposed to be platform-independent! The idea of having as much as possible in libraries instead of the core runtime environment is a good one IMHO.
> And don't get me started on templates...
Then use them and don't write them yourself. This is a feature that no other major language supports, it's mighty hard and it *does* give you possibilities way beyond 'simpler' languages. All people who have few experience with Templates are allowed to cry out in anger now and call me names ;)
I think it boils down to C++ having lots of flaws and defects and most programmers using it should either learn more about it or start using other languages (C++ is used way too often IMHO). Even better: start interfacing C++ with other languages and use it where needed.
Also C++ provides facilities that are mighty strong and mighty hard to use right. They may change in future and not have their final form right now, but it's already impressive and usable. Just look at boost and Loki. |
| Mon 20 Jan | | 'Wow, what a great thread.
(snip)
No wonder most companies cordon off hard core technology people as interpersonally repulsive and put them in their own sandbox to duke it out...'
ROFL! My sandbox is more like a litter tray. |
| Mon 20 Jan | Passater | You see a plethora of buffer overruns because of programmers who don't care much. That has nothing to do with the language. |
| Mon 20 Jan | fool for python | Another OO overlay of c is objective-c. It minimizes pointer syntax though doesn't eliminate it. It is 'less ugly' then c++ though not particularly intuitive. I do find that it's narrower scope makes it easier to get forward motion.
If you want all your pointers under the hood, use java or c#
or better yet....python. |
| Mon 20 Jan | Bill Carlson | C++ has a monetary cost and a cost in stability. It does have benefits for large projects, but that's precisely where the stability issue comes in. One or two good C++ developers won't get themselves into trouble, but it's hard to write a robust application in C++ with 100 developers. Someone isn't going to get it or there will inevitably be a miscommunication between layers.
As far as speed, we're at a bit of a crossroads. Most execution time is spent within APIs, SQL queries, etc. The choice of language doesn't impact much relative to the underlying layers.
One of the delimmas with very high level languages is that they're often hindered by bad API support. It will be interesting to see what .NET does to this. One could introduce a brand new 'ultra high level' language based on the CLR that could be used to actually do something.
Personally, writing C# code brings a smile to my face, knowing everything I don't have to do or worry about that I would've needed in C++. For the small fraction of time you need raw power, there's COM interop, unmanaged code, unsafe code, etc.
No one really needs heat in their cars, or automatic starters, or power steering, or airbags, or a radio. After all, race cars don't have there. See the analogy? We're not wusses, we're just lazy and lazyness is an important programmer trait. |
| Mon 20 Jan | Nat Ersoz | 'We're not wusses, we're just lazy and lazyness is an important programmer trait. '
Nevertheless, being pro-wuss does not support the notion that C++ == crap. Correct? |
| Mon 20 Jan | Bill Carlson | Nat, C++ == crap for some cases. Yes, it can do most everything, but for many (most?) instances it's boated, unsafe overkill. I've made a career out of C++, but I won't miss it, except when doing systems stuff.
Historically, C++ was a brilliant extension to C. Nice abstraction of objects with minimal execution overhead (as long as you knew what was going on under the hood).
I think much rejection of C++ decendants (C#, Java) comes from people who enjoy the act of programming more than the results achieved. |
| Tue 21 Jan | John Burton | Yeah - to follow up on my earlier post and agree with some of the comments.
C++ is a great language in many ways but over the years it's become far to complicated for most people to be productive in. C# for example is very nearly as powerful for most application type programs and it's far easier to write code in. And the library is much better.
boost and loki might well be great achievements but again they seems so complicated that it's hardly worth learning them. (And I do understand and use them so I can say this - but that doens't mean I like them) |
| Tue 21 Jan | Danil | I dunno, John; destructors are awfully useful, and I don't see a lot of appeal in using a strongly, statically typed language which doesn't support templates.
Personally, I mean. I do recognize that those languages have bits that others consider to offset those tradeoffs. |
| Tue 21 Jan | | 'If you want all your pointers under the hood, use java or c#'
or write a smart pointer. or just pick one off any decent website that caters to c++ developers |
| Tue 21 Jan | w.h. | I used to have a fascination with programming languages.
Somewhere was the perfect language with a perfect library and completely orthogonal syntax.
Then I realized that I was bellyaching over nothing. I came to the realization that I would probably hate coding with any programing language a certain percentage of the time, I would hate the OS and its associated APIs. Every time that my environment would do nice things for me, it would, at the same time, drive me stark raving mad very likely using the exact same facet of the language.
And, really, there is no real difference between Pascal's pointer syntax and C++'s pointer syntax except that C++ makes no real difference between a pointer to a value and an array. And that ceases to matter when you consider that boundschecking in Pascal is usually turned off for performance reasons, most memory bugs are a lot more subtle than going off the edge of an array, and you should be using STL vectors and iterators anyway in C++. All that GC'd languages like Java and C# do is take away some of the power and give you other issues. Memory can still stick around without you realizing this, and since you can't be sure that your destructor will be called, you can't be sure that resources reserved in an object will be unreserved when the object goes away.
All coders notice things that suck about their programming environments. Wise coders know that even if they switched things around, all you do is exchange one list of gripes for another. The best tool for the job is something that doesn't make your life difficult all of the time and is well supported.
Oh, and C++ is getting better as new paradigms are discovered that use templates and operator overloading and other such things in new and innovative ways. Only in C++ can you build a parser by simply typing the EBNF and letting templates and overloading do the work. Only in c++ can you pick between functional programming, procedural programming, generic programming, OOP, and more.
This is why I love C++, even though it has driven me stark raving mad on numerous occasions. This is why woodworkers use a table saw that can easily cut off your fingers or impail you on a flying piece of wood if you aren't paying attention. Sometimes you need to be dangerous in order to get the job done right. I used to *hate* C and C++ with a passion. |
| Tue 21 Jan | w.h. | Oh, and also the CLR isn't going to truly enable cool new languages to have API support. You only can use the CLR if the exposed objects fit within the CLR object model, which is somewhere between Java's and C++'s object model. You have to cut down C++, CLOS, and Python's objects to fit within the CLR and the GC'd language nicely.
One day I have the dream of writing a GC that provides more gurantees than the one with Java and CLR and at least enough gurantees to do exception handling and RAI (Resource Allocation is Initialization) correctly. Of course, I'm not even sure if such a thing is possible given my decided lack of GC knowlege, but I can still dream, can't I? |
| Wed 22 Jan | Dan Maas | I agree with you about GC, wh. C# and Java have focused on collecting persistent objects with unpredictable lifetimes. But it is also important to have stack/LIFO/nested scopes with predictable destruction. I remember reading a looong Usenet thread lamenting C#'s inability to allocate an object 'on the stack' (i.e. with deterministic cleanup as the scope is exited). Some possible solutions were discussed, and I hope future developments prove that persistent and stack-based memory management can co-exist.
From my own experience it seems that stack-based resource management is more important in non-interactive 'batch' software, whereas persistent/unpredictable resource management is more important in interactive or GUI software. (probably because batch programs tend to have a linear or tree-like sequence of actions, whereas an interactive program dispatches from an event loop). Given that the initial focus of Java and C# was interactive software, their choice of persistent GC over deterministic stack GC makes sense. |
|
| Pointers for dummies | Fri 17 Jan | Better than being unemployed... |
| I was just discussing with a coworker the article Joel wrote some time ago about for some strange reason, most people seem to be born without the part of the brain that understands pointers.
I think Id like to add to that : And the people who are born with the part of the brain that understands pointers cant explain it to them.
I cant actually put my finger on any point in time where I thought Yes, I get it. This is what a pointer is. It just sort of happened, really. I tried thinking of an analogy whereby if you imagine the memory to be a large block of pidgeonholes, each with a bit of paper in it, the pointer is the pidgeonhole and the value dereferenced by it is the paper ... but that doesnt really explain it well enough.
Just wondering if anybodys got a good way of explaining pointers to new programmers - or, indeed, if there even _is_ a way. |
| Mon 20 Jan | Benji Smith | The biggest problem with people understanding pointers is the notation used to represent them. I feel like I have a great understanding of pointers, and it came to me rather quickly. But, when I look at some code (especially someone else's code) those damn asterisks can sometimes make my eyes cross.
The asterisk is used to declare pointers and to dereference them. I think that that's a big big mistake. I think that twice as many people would be able to get a clear understanding of pointer usage if the declaration and the dereferencing used different operators. Or, even better, if you could call a dereference() method to dereference your pointers. |
| Mon 20 Jan | Nat Ersoz | I think that Benji correctly identified the stumbling block for most pointer newbies: that the declaration syntax is the same as the dereference syntax.
I don't think that the syntax needs to be changed. But realizing that it is a common source of confusion and being able to address it and help novices identify it as such is a great help. |
| Mon 20 Jan | dunno wair | I already understand pointers...but could you please explain how a bank of numbered pidgeonholes works? |
| Wed 22 Jan | Biotech coder | I don't think a library/card catalog is a very good analogy... both are physically sorted in some way (books into Dewey decimal system, card catalog alphabetical by author or subject, etc.), and inserting a new book or card involves physically moving all the other books/cards (or it would, if librarians didn't thoughfully insert lots of empty shelf space throughout the collection, as a buffer). Once you get a beginner onto a false analogy like that with a strong concrete image, s/he will be totally up the wrong path.
I like the pigeonhole image much better. |
| Wed 22 Jan | Mike McNertney | I disagree with whoever said that only C/C++ pointers are a problem. That may be part of it, but a lot of people simply can't grasp the concept of the extra layer of abstraction. I took pascal in high school, and most of the class was able to follow along reasonably well until we were introduced to pointers, at which point most of the class was hopelessly lost. |
|
| Griping about Dell | Wed 15 Jan | Eric W. Sink |
|
OK, Joel. I agree with most everything you write, but I have to give a little pushback on this one. You describe the effect as a local optimization that actually harms your business as a whole. I prefer to think of it as achieving one specific goal and accepting its natural tradeoffs.
The world is filled with people who dont understand that everything involves a tradeoff. Almost everything is a double-edged sword, and that other edge is ready to cut our finger off if we dont realize its sharp.
We get this problem because we dont usually talk about things in pairs like we probably should. We talk about the benefit were seeking and rarely mention its attendant downside. Sometimes we are naive enough to not even know its there.
For example, we talk about achieving performance in our software and sometimes forget that it involves a tradeoff for things like disk space and developer time.
Perhaps we should use more contractors and hire fewer permanent staff, so we can keep our fixed payroll down? Great, but the other edge of that sword is reduced core competencies in house. When you reduce your fixed costs you reduce your fixed IQ points.
There are lots and lots of examples of this. The point is that its okay to accept the downsides if you are aware of them and consider them to be acceptable. The stupid thing to do is to be unaware or underestimate their effect.
I dont know Michael Dell, but I generally assume that people who cant understand tradeoffs at this level will rarely achieve his net worth. |
| Wed 22 Jan | Nuno Leitao | Joel, you seem to forget that JIT (Just In Time) production has proved very effective in many other industries -- particularly the automotive industry.
As the computer industry matures, we'll probably see more and more JIT models appear (like Dell and say, Eicon) -- JIT means smaller inventories, diminished risk and a smaller financial footprint.
About the point you've raised on delivery delays, well -- most businesses plan ahead, and don't really require the hardware on 'next day' delivery -- you might do as an individual, but this probably shows lack of planning on your part, and not a problem with Dell's model.
Best Regards, |
|
| Curious - impressions of military background | Wed 15 Jan | anonQAguy |
| Ive seen lots of threads here re value/liability of varying amounts of experience or age ranges in how folks are considered in IT for hiring, promotions, etc.
Im curious to hear your thoughts regarding the value/liability of somebody who has military time in their background. Examples of some variables to consider:
- length of service
- nature of service (e.g. junior/senior levels, assignment to combat vs support type units, ground/air/naval forces)
- leadership time
- specific technical fields
Thanks for your thoughs... |
| Wed 22 Jan | David Clayworth | Totally agree with you about 'your troops eat first'. All the good managers I know apply this principle, and almost all the bad managers don't. There is one kind of manager who appears to violate this rule, who thinks he is satisfying his troops needs when he isn't, because he thinks his troops needs are the same as his.
This is the kind of manager who tries to make his 'troops' work 60 hour weeks all the time, and justifies it to himself by saying that he is prepared to put that effort in, so why shouldn't they. He may get a kick out of that kind of worklife, and assumes that they would too if only they would make the effort. |
|
| ADO.NET book recommendations? | Mon 20 Jan | Sam Gray |
| Anybody have a favorite (preferably sub-300 pages) book on ADO.NET? I know OReilly is coming out with a Nutshell book on the topic next month, but I need to get started Real Soon Now. |
| Mon 20 Jan | Dave B. | Not a sub-300 page book, but the first chapter tells you what you need to know to get started with C# or VB.NET.
Professional ADO.NET Programming - Wrox Press |
| Mon 20 Jan | Sam Gray | Really? I picked up Professional XML from Wrox and found the multi-author format incredibly annoying -- each author had a different style, some had spent more time on their work than others. IIRC, code samples were in the individual author's language of choice... in short, it was kind of a mess. I'll check it out on the shelf, though. |
| Mon 20 Jan | Regular Reader | This one, by Mike Gunderloy, is pretty good. I think the author visits this forum as well:
http://www.bookpool.com/.x/icsjny4a24/sm/0782129943 |
| Mon 20 Jan | Dave B. | Although the book has multiple authors, they stick with the C# language throughout the book. At the time I bought it, it was the only one on the shelf at the B&N in my area. Personnally, I've used it, the .NET help files, the Internet and various magazine articles to learn ADO.NET. Having a background in ADO is recommended.
Just my 2 cents. There may be better books out there now, have'nt really looked into it. |
| Mon 20 Jan | Dave B. | I should say they stick with C# after chapter 1 or 2 because the first chapter or two gives examples of connecting to a database, creating a dataset, datareader etc. They show these in VB.NET C# J# and Managed C++ I believe. |
| Mon 20 Jan | Li-fan Chen | It is kind of surprising WROX is so successful with books having such problems with flows. Usually with other publishers I have little trouble moving on to the next chapter, but with WROX books it just seems more daunting. O'Reilly & Associates' works flow pretty well as does Addison Wesley and Prentice Hall. A lot of companies are learning from their mistakes too. I think computer books now days are much easier to read than even a few years ago. |
| Tue 21 Jan | Chris Tavares | For a good 'How the heck do I use this thing' discussion, I like Shawn Wildermuth's Pragmatic ADO.NET
http://btobsearch.barnesandnoble.com/booksearch/isbnInquiry.asp?userid=0FJMV5RAUI&btob=Y&isbn=0201745682&itm=4
For more detailed background, try Bob Beachamin's Essential ADO.NET:
http://btobsearch.barnesandnoble.com/booksearch/isbnInquiry.asp?userid=0FJMV5RAUI&btob=Y&isbn=0201758660&itm=7
-Chris
Disclaimer: I was a reviewer on the first book, and a friend of both authors. |
| Tue 21 Jan | René Nyffenegger | | IIRC, code samples were in the
| individual author's language of choice
This could be a problem when dealing with something
else than .NET. But as .NET is really language neutral and
ADO.NET is a framework that is equally accessed from
all languages that can access it, the language with which
it is accessed should not be so much of a problem
m2c |
| Tue 21 Jan | Sam Gray | René: Not so much, no, although I still have issues looking at VB.NET code when I'm more familiar with C#. That was more of an issue with the XML book.
BTW, I picked up this book last night: http://www.manning.com/feldman/
The author's writing style is comfortable and so far, the reading goes pretty quickly. |
|
| Java client app framework? | Mon 20 Jan | Thomas |
| Is there an application framework for creating heavy-weight Java apps? Something along the lines of MFC perhaps? I hate reinventing the wheel, and so would sure like to use someone elses. |
| Mon 20 Jan | Justin Van Patten | Check out the SWT:
http://www.eclipse.org/articles/Article-SWT-Design-1/SWT-Design-1.html
It was created by IBM as part of the Eclipse Project and provides 'native widget functionality'.
Also, see this post: http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=3330 |
| Tue 21 Jan | Baz | Or if you want to use the 'standard' Swing components, download the Netbeans platform from www.netbeans.org. Much the same idea, a modular framework, originally designed for making an IDE, but which can be applied to most sorts of app. |
| Tue 21 Jan | Neil E | Naked Objects looks very interesting, you can get fully working apps running *very* quickly:
http://www.nakedobjects.org/ |
| Tue 21 Jan | GUI developer | I would not call Naked Objects a 'Client app framework'. 'Raw domain model viewer/editor' sounds more appropriate. |
| Tue 21 Jan | Neil E | True... I just finished the book and was feeling evangelical. |
|
| Good C book for newbie | Mon 20 Jan | Patrik |
| I apologize if this question has been asked a billion times before; what C book would you guys recommend to teach oneself C. I know other programming languages including Delphi, assembler and such...but I need to refresh my syntax knowledge to get my **chars and char**s right. |
| Mon 20 Jan | Better than being unemployed... | Well lots of people (including many people on this site) recommend 'The C Programming Language' by Kernighan & Ritchie (universally known as 'K&R'), though personally I learned C from 'C How To Program' by Deitel & Deitel - though I don't know if that's still in print.
Don't get put off by talk of stacks, memory allocation and pointers, to be a C programmer you gotta learn them... |
| Mon 20 Jan | HeyCoolAid! | I have 'C++ How To Program' by Deitel & Deitel, and it's my favorite out of all my C++ books. If you can find the C version of this book, I'd recommend it. (The one I have is the latest 4th edition) |
| Mon 20 Jan | Danil | http://www.accu.org/bookreviews/public/reviews/0hr/beginner_s_c.htm |
| Mon 20 Jan | Ian Stallings | I just picked up Beginning C by Ivor Horton and from what I've read it is a great book. It covers everything very thoroughly but in an easy to read way. I picked it up because of his superb C++ book under the same publisher (WROX). |
| Mon 20 Jan | Lennart Fridén | You should go for the 'bible' i.e. R&K's 'The C Programming Language'. Straight from the horse's mouth. |
| Mon 20 Jan | Li-fan Chen | K & R is better reference than tutorial. But nothing teaches you like experience. So pick some random goal and code it. Pick another goal.
WROX and Waite Group both are dedicated to publishing modern C walk-throughs. The kind of book at college bookstores will insist you learn some computer science too. |
| Mon 20 Jan | C | Mastering Standard C by Rex Jaeschke is pretty simple to understand. Also, read alot of code and practice. Reading a syntax book won't help you understand anything. |
| Mon 20 Jan | Nick Hebb | 'K & R is better reference than tutorial.'
I disagree. I thought K & R was a great tutorial, but only if you take the time to work through the exercises. Also, there are several sites with solutions to the exercises:
-- http://www.kamilche.com/c
-- http://users.powernet.co.uk/eton/kandr2/
These are useful if you get stuck or would just like to see how others approached the problem. Also, it is the de facto learning edition book discussed on the usenet (Google Groups) site:
http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&group=alt.comp.lang.learn.c-c%2B%2B
Lastly, I think that the only reason that K & R is not on the ACCU highly-recommended list is because they've never reviewed it (which is odd, if you think about it). |
| Mon 20 Jan | Chad R. Millen | A second on the Deitel & Deitel text.
Well written and concise. |
| Tue 21 Jan | pb | I wouldn't call K&R a bible considering it's brevity.
I wouldn't consider K&R worth getting because it's authored by the language's creators. They are frequently lousy book writers.
But I would strongly consider K&R. |
| Tue 21 Jan | Patrik | Thanks for all the replies guys! I will check out the titles
recommended and go with one of them. |
| Tue 21 Jan | Kyralessa | I have had good success with K. N. King's _C Programming: A Modern Approach_. Lucid explanations and plenty of exercises.
I have the Deitel & Deitel C++ book and can't stand it; the content seems decent but there's so much visual clutter (colors and more colors, tips scattered everywhere) it's a pain to read. It's the literary equivalent of Attack of the Clones. King's book has good layout as well as good explanations.
(Of course, whatever books you end up with, you'll learn the language best if you use two or three instead of just one.) |
|
| I don't know how to feel | Mon 20 Jan | Brad Siemens |
| I got a Spolmail recently that went like this:
As a way of saying thank you, Id like to offer you an upgrade from the CityDesk Home Edition to CityDesk Professional for only $99. Normally, the Professional edition costs $349, so this is a one time chance to save $250! But you have to act fast. This offer is good for 72 hours only.
I dont know how I should feel about this but my first inclination is You greasy bastard! followed almost immediately by cool use of urgency at a time of year when most new budgets kick in. Price is down to the point of petty cash (not including the original $99). I almost reached for my CC. Almost.
So what say ye? |
| Mon 20 Jan | Ed | If you need it it sounds like a bargain. |
| Mon 20 Jan | Bob Greene | I think it's a nice marketing tactic. I would love it if Joel clues us in on how successful it was. |
| Mon 20 Jan | David Clayworth | I'd be interested to know why the offer was made. I know some companies do it because they need the revenue to meet a target for the financial year, so the deadline is a real one. Can't imagine that applies to Fog Creek. Joel? |
| Mon 20 Jan | Mitch & Murray (from downtown) | He may also be sending this to different groups with different upgrade offers, just to see where the sweet spot in the response is.
The 72 hour deadline is a classic marketing strategy - act NOW! or lose the great deal ... |
| Mon 20 Jan | Stephen Jones | If he's really into selling his program perhaps he might consider non-US educational licenses.
I asked for pricing for educational licenses for Saudi but was told that they thought I had a great use for City Desk, but no they had no intention of offering the college an educational license 'cos they only had them for the States. |
| Tue 21 Jan | programmer | Let's say the 72 hour window expires -- I wonder: if you wrote them and said, 'I would like to buy it but I'm only willing to pay the discounted rate you offered me a while back' --
Would they agree? |
| Tue 21 Jan | Brad Siemens | Would you? And what would be the next step? |
| Tue 21 Jan | programmer | I would accept your offer to pay the discounted rate of $99, even when the 72 hours have expired.
It's $99 more bucks than they would have if they didn't accept your offer. What drawback could there be to their accepting the offer?
The only one I can think of is that word would get around that 'you can bargain with Fog Creek about how much you pay for their software,' and they are inundated with 'offers' to buy it for $99. And perhaps this would negatively affect their bottom line.
On the other hand, I suspect it would be a good thing for them if they had a bunch of people clamoring to buy it for $99. I suspect that those people are folks who would NOT buy it for $349.
I have gotten similar e-mails to the one you described, offering CityDesk Pro for $99. My suspicion is that the time window is tied to the date when you downloaded it. I don't think anyone at Fog Creek was sitting around, looking at their balance sheet, and suddenly blurted out, 'We need a cash infusion, fast!' and sent out that e-mail offer. I think those e-mails go out year-round, depending on when you downloaded the trial version of CityDesk. |
|
| Rentacoder sites | Sun 19 Jan | Tj |
| Im a bit tired working in IT, and wondering about those rentacoder type sites. Im thinking of working with one in my spare time (as a codemonkey) for fun. Which ones are decent? I only know of two:
http://www.elance.com/
Requires you to pay money in advance, ugh. Only good if youre serious and want a barrier to entry. At least eBay pimps it.
http://www.rentacoder.com/
The only drawback is they encourage buyers to require ownership of the copyright. How many times a day is that violated or worked around? |
| Mon 20 Jan | Matthew Lock | I just had a quick look and noticed that they all want exclusive legal rights to the code.
I had once thought about banging out some common functions/classes and reselling them there, but I don't think that would be possible under the agreement they offer. |
| Mon 20 Jan | Slava | Boris, is Bulgaria so cheap? Really? Only a few companies from Russia work on elance, because it`s a way too cheap and full of BS.
And I don`t think anyone work with Rentacoder, because it is even cheaper and it is even more BS here. |
| Mon 20 Jan | Slava | More on Rentacoder. We (me and my friend) were browsing this site and then we found a request for some software, for the price...hmmm...may be about $200-250. The funny thing was that we were working on $50+K project for US client with the same functionality:)
The estimation in man-hours was above 1000 hours for experienced Russian developers. So can anyone here imagine the guy that can do the same work for about $0.25 per hour? Even in the world`s poorest country? He`ll have to pay for Internet traffic and computer, right?:) |
| Mon 20 Jan | Justin | I came to the same conclusions about elance last year. Even signing to the subscription service (about £75 I think, for 2 or 3 categories), there are still a few people bidding with outrageously low bids.
Having said that, there were more than a few projects on which I could have been earning between $5k-$6k a month.
The main thing that put me off was the tendering process which involved several days work creating a proposal for a very loose list of functional requirements. I seemed to spend all my time writing these, before either being ignored or asked if I could do it cheaper.
I now use UK specific sites for additional pocket-money work, to supplement my main freelance income.
Weblens.org has quite a good list of sites. |
| Mon 20 Jan | Curmudgeon | Question:
Is anyone else here independent?
If so, has any other independent here been burnt BADLY by a fixed price contract? Where the client either withheld 50% of the complexity from you until work was started, or the client gradually (or suddenly) inflated the scope of the work, and they wouldn't pay jack s*** until you performed a whole bunch of extra free work? Or, the client did things that made either discovery, specs, implementation or debugging almost impossible, but would not renegotiate?
I have, and *all* of these scenarios have happened to me. It really surprises me that nobody in this thread has yet tried to compare rentacoder site type work to 'normally gotten' contract work.
A key point: fixed cost contracts are absolutely the riskiest undertakings that you can engage in. You can get TOTALLY burnt on just one such project, even though everyone in the picture is talking US scale development rates.
THEN, to compound this inherently high business risk, the bottom feeders posting the 'we want an MS OFFICE clone running in Linux for $2000 or under' RFPs provide loose, unprofessional, handwaving style specs, so in the context of a fixed bid you don't even KNOW what the client really wants. As someone else correctly pointed out, just to communicate properly with any of these people you have to spend boocoo time and effort doing a spec that you throw over the wall. And who's to say that your words don't wind up as enhancements to the RFP without pay?
My point is: it's hard enough to make money off of fixed price development when the client is local, and is looking for simply a 'break' on hourly work. I just don't see how it could possibly work when the BS level of dealing with the bidding systems of these websites and dealing with random, unknown clients is added in. |
| Mon 20 Jan | No baths yet | 'or the client gradually (or suddenly) inflated the scope of the work, and they wouldn't pay jack s*** until you performed a whole bunch of extra free work?'
Um.. That's why getting the client to sign off on the requirements/features to be implemented is so important. You don't do substantially more than what is in the negotiated requirements, otherwise you are likely to take a bath.
At time of signing the contract, you also negotiate a price for hourly work for 'Out of Scope work'. If the client adds to the scope, you let them know a time estimate (and whether it will throw off time estimates and by how much, if it is critical to be implemented before the first Phase is implemented). In general, you also tell clients that additions will be implemented in Phase II (within reason of course).
You should also set up a payment schedule where by neither party feels like they are assuming all of the risk. We usually do a 25% down, 25% half way point (completion of x milestone as defined in the contract), 25% completion, 25% after 90 day 'bug fix period'. If the client refuses to pay at the half way point - then we quit developping.
Of course, we'll always do more work if requested, but if you start letting people manipulate you into doing alot of extra work free, you are going to have a hard time staying in business. |
| Mon 20 Jan | Curmudgeon | No Baths Yet said:
>>Um.. That's why getting the client to sign off on the >>requirements/features to be implemented is so important.
..
>>At time of signing the contract, you also negotiate a price >>for hourly work for 'Out of Scope work'. If the client adds
..
>>You should also set up a payment schedule where by >>neither party feels like they are assuming all of the risk.
I agree with all that you state about best practices in fixed price contracts. The subject here is the bidding for work web sites, where the price levels proposed for a lot of this kind of work wouldn't even fund someone to do a proper specification or project plan.
>> Of course, we'll always do more work if requested, but if you start letting people manipulate you into doing alot of extra work free, you are going to have a hard time staying in business.
Au contraire, I've worked with some companies that pride themselves on extorting free work out of technology people and they DO stay in business. Regardless of the ethics of mistreatment of vendors, there is always some desperate idiot who needs a job who will work for such companies. But I don't think that there is any permanence about the parties advertising jobs on rentacoder sites anyway.
I do know what you're saying and I agree totally. The bottom line is that independents MUST have standards that their clients must meet, or else the client isn't a good risk and the vendor risks becoming a casualty. Being able to negotiate in good faith is an integral part of this standard. This isn't a haughty value judgement either, it's survival. But I think you know that too.
I think the relevant point to be made is, do the rentacoder sites meet a reasonable standard of representing 'good' clients? Answer, probably not for anyone in the developed world.
Thanks for adding to this. |
| Mon 20 Jan | Norrick | $10/ hour?
I won't even get out of bed for less than $35/hour. |
| Mon 20 Jan | Boris Yankov | Well, guys, in Bulgaria the average sallary is about $150/month.
I am earning much more from RentACoder so it is just perfect for me. Of course it is impossible to get $3000-$4000 to justify working for this site instead at a regular job in USA.
There are much BS projects. I have added one to my favorites list. A full clone of WinZIP, skinnable and supporting all the formats the buyer had known for under $500. Of course there were people that had bid on it. All of them underestimated the work or the requirements. One of the bidders had sent a sample project: a simple app in VB that just compressed or decomressed ZIP files (one edit box and one button)!!!
But there are serious projects. The trick is to get them :) |
| Mon 20 Jan | Tj | It looks like an important skill on these sites is noticing problem-clients and dropping them before committing. Some seem to realize they're paying bottom dollar and are reasonable about it; others think they're Santa Claus because they have $5. |
| Tue 21 Jan | Slava | There are no serious projects on these sites, Boris. If you work as a freelancer (and want to stay freelancer for a long period of time) it`s ok, but if you`ll ever seek some serious regular job with career growth and so on - what you`ll write in your CV? Work on RentaCoder? Don`t think so.
Projects on these sites are so cheap that people tend to skip code commenting, testing, performance tuning, documenting, specs, etc, etc, etc.
So you may end up skipping all these skills that are required for good regular programming work. |
| Tue 21 Jan | Boris Yankov | Well, I have worked at a regular job before I start doing projects for RentACoder. So I can write this there if I don't think that doing RentACoder projects is a serious job.
If you look at the Top Coders list at the real top there is an indian who does many small projects. He gets really good money (if he is living in India) but he will not be able to write much in his CV later.
I have different approach. I know I am very good programmer (of course :) ... but seriously!) so having won and finished some smaller projects I started bidding on ONLY large projects. Still they are one-man-only projects. But my last three projects I got are $1000, $2000 and $3000.
It's not like saying I have been a Project Manager of Windows XP but it is still a decent work.
I think and I hope that I will not get a regular job but start working by myself and doing software that I will sell by myself. Something like Joel :) |
| Tue 21 Jan | Slava | Well, I`m not a programmer, I`m economist with a proper education. And I can surely say that software business is only 20% programming skills and 80% sales, support, marketing, whatever else skills.
And software product isn`t just a portion of good code, but also thorough testing, good user manuals, etc, etc, etc.
BTW, what were these projects about? Could you please provide me with links to them? Just curious:), we are rather expensive for offshore company, so elance.com and other sites are not for us. |
| Tue 21 Jan | Tj | Thanks for the tips, and to Justin for the weblens.org link. I'm not too interested whether it's financially sustainable; I said it was pretty much for fun. But people like talking about these things, and I thought it was interesting. ;) |
| Tue 21 Jan | Curmudgeon | Ok... to Boris and a few others who say that they do get some work from the bid-for-work sites.
How many projects would you say that you bid on in order to land one paying development contract?
And how many hours would you say you spend on the bidding process for such a group of bids that lead to a paying project?
After scanning these sites for awhile and bidding on some projects and seeing my bids absolutely buried in the volume, seems to me that you'd have to bid on a LOT of projects in order to win just one... playing the laws of averages, that is. |
| Tue 21 Jan | Boris Yankov | See some samples of what I did recently at
http://borisyankov.hit.bg
(I am not very sure that it is visible outside my country, tell me if it is not).
About the bidding...
Well, first it seemed that I have to bid on every bid that I can accomplish and even on such that it will be hard for me. I was bidding at the absolute minimum so I can get a project, finish it and get a rating.
Well this was not smart at all. It seemed that I am just one of the many that can not do that or that seem 'suspicious'.
The first project I got was for $30 and I was doing it over a week!!! I knew it was pretty cheap but I was doing this for the rating. Then I did some projects that were cheap too but for me it was good ($50-$100) for the same buyer. Then I just had enough project to prove I can do the stuff.
What turned to be very successful to me was that I bid only on very serious projects and only on large (over $500).
So I do not do much bidding. But I do serious bidding. If I decide that I will bid on it I do it the best way possible.
Having a look at my last 10-20 bids I realized that I have been overcame by bidders who had bid less.
Serious % of these bids (the expensive ones) are being cancelled.
So the trick is to be a good developer and to find the good buyers :) |
| Tue 21 Jan | Boris Yankov | To: Slava
I know it includes properd UI, good usability and much marketing.
I consider myself to be an educated man and I know a lot about these things. I am thinking to start a particular software product for an year and I think it could be a serious success if done properly. I know that everyone thinks that his product will be success.
We'll see. If you contact me the next year to by a product of mine that will be a success :) |
|
| Java vs. Perl/PHP | Fri 17 Jan | Brian R. |
| I have to make a decision between whether to take a class in Perl and one in PHP w/Apache taught as well, or a class in Advanced java.
The java teacher is really smart and a good teacher (Indie lady w/no accent).
I look at the job ads and see 1)M$ followed by 2)Java. Perl and PHP are almost completely off the map - less than 5% ads mention it.
Does anyone know why Perl and PHP are not asked for much. I have my own suspicions, like versatility and the fact that most co.s are only interested in high-end, high scalability apps.
CGI may be slow, but for personal systems it should be quicker to develop w/for the web.
I dont have much confidence in the ads (lots more right now BTW, in general [Jan must be hiring season]). |
| Mon 20 Jan | another perl fan | short version: you want a better chance at a job: do Java.. you want to really learn something about programming that is outside your existing skills: try Perl
I've spent a long long time learning Perl, I dont program internals but I've done almost everything else in it (by long time, I mean 3-4 years.. what can I say, I'm a slow learner).. Once you know Perl well, learning PHP is not that difficult..
For most of what I do at work, I officially need Java, but I think I am much much more productive because when the other guys are doing some things manually or in Java (report parsing, file manipulations, quick web stuff), I do them in Perl in considerably less than half the time.. in short, Perl is a great Swiss army knife (its been called that by many people), but it may not have many hiring opportunities because its not from one of the big corps (jobs.perl.org might give you a glimpse of openings for Perl programmers but try ANY job site for Java) |
| Mon 20 Jan | Just me (Sir to you) | I go with Tom on this one. IMHO PHP is great for whipping up a few quick pages, but I shudder at the thought of using it for a big app. The two serious webapp environments for the moment seem to be Java and ASP.NET. |
| Mon 20 Jan | Whee | I did what I would call a 'medium size' project in PHP because it was all I knew at the time. Now it's an unmaintainable, unscalable mess.
Now that I've been doing Java for a year or so, I just shudder at the thought of doing anything substantial in PHP.
PHP is great for its little domain though. My personal homepage runs like a champ on PHP. My massive server side applications run like a champ under Java, and are flexible, extensible, and easily understood. |
| Tue 21 Jan | BDKR | Well, I was a little harsh eariler. I apologize for that.
Anyways, it's a little interesting that a language is considered toy like based on the extent that it panders to particular paradigm. And besides, to use the same reasoning, one must conclude that C is a toy language as well. Entire OS's must be toys due to the fact that they are based on a toy language. I've never considered Unix a toy. The best real time 3d engines (Q1, Q2, and i'm pretty sure, Q3) are written in C.
Cheers,
BDKR |
| Tue 21 Jan | Tom Payne | BDKR wrote:
> Anyways, it's a little interesting that a language is considered toy like based on the extent that it panders to particular pa |