last updated:06 Aug 2003 14:57 UK time
|
 |
|
(Comments added for week ending Sun 09 Mar 2003) | View Other Weeks
|
|
| Reading Habits | Sun 09 Mar | e.e.ph.d |
| In a past life, I was an electrical engineer. I got bored with it and decided to start over in software a while back.
I remember that the EE folks I used to work with would read a lot about stuff out on the horizon. Most of the material was in professional journals and white papers and other things like that, very rarely in books.
The software folks I work with seem to read reactively. They come across a problem at work and they go find something to read on it, often times big fat red books. Is this more or less common across the software industry, or at least among this group? How do you choose what you spend time reading? Proactive or reactive? Is it even possible to *be* proactive, in this industry? |
| Sun 09 Mar | Tony Little | I can't predict the future so I read what is interesting. I never read the big technology-of-the-day books or syntax books; they are manuals and just boring. I tend to go with the Programming Pearls and Code Complete types. Also, books I think would be good are self-marketing (aka power BSing). |
| Sun 09 Mar | realist | I have worked as a contract developer for more than 10 years and often I find myself working in fields where I know little about it, sometimes the technology used by my client can be something I've never encountered before, so yes, as you said most of my reading is definately reactive.
I need to know the subject matter and the technology to do it, probably only once in my lifetime, as more than likely my next jobs will be in different fields altogether.
I think the difference in reading habits is defined by whether or not you are a specialist or a generalist. |
| Sun 09 Mar | runtime | I used to read a lot of software books, but when I go to the bookstore now, most of the computers books either for 'dummies' or are too manual-ish to be interesting. I've read two non-manual-ish software books I've read recently that I really liked.
'The School of Niklaus Wirth: The Art of Simplicity' is a collection of papers by students of Niklaus Wirth (the creator of Pascal, Modula 2, and more).
http://www.amazon.com/exec/obidos/tg/detail/-/1558607234/103-8279428-4437441
'Patterns of Software' by Richard P. Gabriel (ol' time Lisp guru) discusses programming language design and abstractions.
http://www.amazon.com/exec/obidos/tg/detail/-/019510269X/103-8279428-4437441 |
| Sun 09 Mar | ODN | I find my reading defined by both the proactive and reactive labels, and the specialist and generalist labels. The generalist reading is usually proactive, and the specialist reading is usually reactive. I try to keep a good mix of both types, since I need the generalist stuff to work smarter not harder, but my work requires the down-in-the-trenches 'gotcha' details that only the specialist books give. |
| Sun 09 Mar | e.e.ph.d | That's interesting, ODN. It seems logically reversed to me. Seems like you'd want to develop the specialist skills proactively, since you know in advance what area you want to specialize in, while the generalist skills seem to be more the kind of thing you'd try to pick up on an as-needed basis. Is this common?
My own reading habits (for software) seem similar to what's been said so far. I typically read proactively about the big picture, invariant kind of stuff and reactively about the implementation details. Seems to be kind of hard to always be proactive since by it's nature, software is 'soft.' When I was a E.E. most stuff got standardized relatively quickly since it's really the only way to get work done. The reading was mostly about incremental improvements to these standards or new ways to combine the standards. |
|
| Parade Magazine - What People Earn | Sun 09 Mar | T. Norman |
| The PARADE magazine in March 2s newspaper had a feature entitled What People Earn. They showed about a hundred peoples pictures, along with their age, occupation, income, and location.
One of the faces on the front page was:
Nick Tesi, 40. Computer analyst. Copper Mountain, Colorado. $50,000.
Whats your take on this? Is/was he:
1. A real underacheiver
2. Unemployed (or without a contract) for a number of months in the past year.
3. The owner of his own small company, but takes a relatively low salary for now in order to reinvest in the business.
4. Due to age discrimination and the bad economy, he took any crappy job he could get. |
| Sun 09 Mar | big bob | 50 grand ain't bad. I know a lot of people that would be happy with that. |
| Sun 09 Mar | The Real PC | $50k only seems low compared to the inflated salaries pre 2002. What's wrong with making $50k doing something you like, as opposed to not having a job at all or making half that doing unskilled work? And he probably isn't required to work 80 hours a week. |
| Sun 09 Mar | d'oh | 1. What is a 'computer analyst'? Obviously, someone who analyses computers. Yeah, I'd pay the big bucks for that.
2. OTOH, salary ranges are all over the map. We paid a young network technicaian $100K/yr the day she came out of the army. She was 24 in year 2000 - don't get me started.
So I wouldn't get too carried away with rating people by their salary. It will be years before this begins to straighten itself out. We'll probably have another transient impulse to the system prior to the natural forces taking over. |
| Sun 09 Mar | Bella | I was going to spout off about how people always ignore cost of living and look at the absolute salary. But Copper Mtn, CO, doesn't seem like the cheapest place to buy a home, so I would agree that $50k for a 40 year old seems low.
Underachiever could be a possible assessment. Maybe he went to that area to be a ski lift operator, and eventually stumbled into what he's doing now. $50k beats $8/hr outside in the snow. |
| Sun 09 Mar | Bella | He may not be a programmer at all. 'Computer analyst' is vague, and may be misused. He may be the desktop support guy in a small 15 person office. Or something. |
| Sun 09 Mar | Pigs | Why does everyone here think $50k is low (even with a maybe slightly higher COL) . I'm happy to find a job that pays $6.75 an hour where I'm living and that's minimum wage I think. Granted I'm just out of school, but give me a break, you guys are spoiled as hell. That makes me sick. I can't even get a decent job and you guys think $50k is peanuts. No wonder America is going under. Greed, greed and more greed. |
| Sun 09 Mar | T. Norman | $50K is a good living almost anywhere in America, except certain places like New York and California. However, the point is not whether one should be satisfied to live on $50K. The point is that $50K is low for a 40-year-old systems analyst (if that's what is he really is) in Colorado.
Similarly, although $200K is a very good amount to be earning each year, it would be extremely low for the CEO of a Fortune 500 company. And most people would consider $500K to be low for an Oscar-winning lead actress of a blockbuster film, even though most of us would be more than happy to earn half that much.
Those of us who are commenting are doing so mainly on the basis that we already earn much more than that guy (at least those of us who are employed), so we are wondering why his salary isn't equal to or higher than ours. |
| Sun 09 Mar | Herbert Sitz | Pigs -- And what if you were 35 years old, married with two kids, trying to save for retirement and college expenses? $50k wouldn't even cut the mustard then. Even if husband and wife earning $50k for a combined $100k, you wouldn't be living very high on the hog. And you surely wouldn't be able to send your kids to a private college, unless maybe you were willing to forget about saving for retirement. (And no, I'm not necessarily in favor of parents paying for their kids college at all -- I don't have any kids myself -- but this is the position many people are in.)
In any case, you should expect to be making a lot more in 15 years than you are now. And it's not because of greed. |
| Sun 09 Mar | Daniel Shchyokin | give pigs a break, he probably hasn't worked a year or two of 60+ hour weeks, only to give 40%+ of it away in taxes (don't forget state, SS, and Sales taxes for those of you who doubt my percentage).
pigs,
don't judge a man till you've walked a mile or two in his shoes. |
| Sun 09 Mar | Hardware Guy | Please, let's not be too hard on Mr. Tesi. The same issue of Parade Magazine said that Elvis Presley made $37M last year. And the guy's been dead for 25 years.
Given the right frame of reference, we're *all* underachievers. |
| Sun 09 Mar | mackinac | My general impression of life in resort areas is that wages tend to be low, even if some significant fraction of the housing is expensive and owned by outsiders. I have no specific knowledge of Copper Mountain.
Some people will prefer living in the mountains with a low paying job over living in the big city with a high paying job. I find it interesting that he found a 'computer analyst' job at all in such a place. I wonder just what it is that he does.
None of the original four options sound likely to me. Here are a few more:
5. Chose quality of life issues over high salary.
6. There isn't enough information here. This is all idle speculation.
7. None of the above. |
| Sun 09 Mar | Pigs | I've worked 80+ hour weeks before and I do know what Uncle Sam takes away. Where do you guys get off correlating salary with age. There is no relationship there. You might correlate salary with experience, but not age. I could be 40 years old and just have gotten a BS in CS. FYI: I have walked in many a mans shoe, I can say without a doubt that if you are making $50k a year, then you have it good. It's the people who make this much a year that get used to extravagent lifestyles, New cars, new houses, luxury items such as boats, motorcycles, new everything and it's these very people that can't seem to remember what living on $25k a year is like. |
| Sun 09 Mar | somebody | Have you considered the possibility that he might be new to the career? Maybe he decided to go for a midlife career change and is fresh out of college. Regardless, he's apparently happy enough with his income to appear on the cover of a nationally distributed magazine, instead of arguing about it anonymously on some internet message board. |
| Sun 09 Mar | limited edition life | I feel sorry for people that measure their self worth by how much money they are paid. I couldn't imagine a more shallow, futile and ultimately soul destroying existence. |
| Sun 09 Mar | T. Norman | Pigs,
Again - it is not about the quality of life that $50K can bring. The question is why isn't he making more than that, given his age and given that 'analyst' is usually above 'programmer' on the pay scale. If the CEO of IBM made $250K, you would wonder why his salary wasn't much higher than that, even though $250K is more than enough to have a high standard of living anywhere.
So we have to wonder about things like whether it is because Mr. Tesi doesn't have as much experience as his age might indicate, or is it because he took a relatively low paying IT job due to the crappy economy (and have others here done a similar thing), or is it that his actual job may not have the type of responsibility normally associated with the title, etc. |
| Sun 09 Mar | Why | $50k and happy, living in the mountains, possibly skiing frequently, healthy etc, sounds good to me.
I only earn $50K now, and it's been hard to achieve (I was earning $200K+ in the stupid ole days). Now I 'try' to have at least 3 months off a year, which thankfully seems to be getting easier. My wife and I both work part time, she studies as well, I want to study next year.
Never lose site of 'why'. |
| Sun 09 Mar | mb | Unforutnatly, the price of something doesn't really depend on what it costs to make it. So if you have 2 kids to put through college, your employer doesn't get more out of you than if you just got out of college yourself. You may of course have more experience and thus value than the new grad. It is possible that people will pay you more due to social desires (raising a family has social value, so we'll pay you to do that), globalization and other forms of competition work against this and thus you need to save early and often to build your own defenses.
Personally I see a future at least short term of deflation, especially of salaries (definately mine right now though I hope to change that). |
| Sun 09 Mar | tim | 50k/yr is a decent salary imo. i think the issue here is that many computer people are spoiled due to the dot.com boom and have no idea how much what they do is actually worth. myself, i will feel lucky merely to get a job post graduation. and if i made 50k/yr then i would beat the avg salary of last term's grads by about 5k (those 3 that got job offers out of 33). also, my parents both have masters in their respective fields (social work/psychology and english/teaching) and they make about 40k each. consider that an average teacher these days is lucky to make $35/year. janitors at schools sometimes make more than teachers. maybe 50k is low for someone who has a lot of experience in our field, but maybe 100k a year is actually way too much for someone in this field. not that we shouldnt make big bucks, but if i'm not getting more out of my job than the salary, then the salary is pointless imo. just my thoughts |
| Sun 09 Mar | Troy King | Tim: janitors at schools sometimes make more than teachers.
That's because the janitors perform a more valuable service. Take away the janitors and everyone wallows in trash. Take away the teachers and we might actually be able to teach our kids to think again. It's moreso the system that sucks than the individual teachers, but they're just glorified government employees in a scheme to teach conformity, deference, and destroy the ability to think independently. |
| Sun 09 Mar | Some Pigs are More Equal than Others | Pigs et al,
You all are right - anyone making more than minimum wage doing computer analyst work is greedy and doesn't even deserve to have a job. People who work as programmers shouldn't even accept a salary if they REALLY enjoy what they are doing. In fact, any one who accepts a salary is obviously incompetant. The real experts do it for the sheer joy and refuse compensation. They are simply happy to help. Thanks for pointing out these obvious points. We pigs need to stick together and make sure the other barnyard animals are contributing their fair share |
| Sun 09 Mar | tim | troy - you sound like someone who is bitter b/c of a bad experience in school. not all schools/teachers are bad. sure not all of my time in school was useful, but i had enough teachers that cared and that were willing to challenge me to do my best that i dont regret a bit of it. you can say that schools suck, and many do, but like most things, you can't say that getting rid of the teachers would make things better. what needs to change is the attitude many kids have towards school/life in general. i'm not happy about the state of america's future (aka the people i've played against on xbox live, who seem blissfully ignorant) but the problem can't be blamed on one source. |
| Sun 09 Mar | 'Nuff Said | Don't even get me started :) |
| Sun 09 Mar | anon | This thread is degenerating. While I personally believe that programmers have been very overpaid, I am also curious about market rates. The world works in strange ways. |
| Sun 09 Mar | Bored Bystander | Someone, quick, be sure to hop right on it and tell this guy that he's an underachiever, after all, we have a mission here:
http://www.markwatson.com/
Except:
>>Mark Watson: Consultant and Author
I am a consultant specializing in Java development, artificial intelligence, and natural language processing.
>>I also am fluent in C++, Smalltalk, Common Lisp, and Python. I charge $20/hour for my time.
Wow, he must SUCK! That's only $40K/yr if you annualize the hourly rate.
Oh yeah, right.
For my money, some of the worst (arrogant, snide, anti-teamwork) pieces of s*** for developers that I have run into in this industry have been grossly overpaid - due to personality and PR, and *no* other reason.
Besides - many here are taking Parade Magazine's assigned title of their one subject as an 'analyst' as the gospel. That must be right - after all, Parade is the preeminent IT publication, right? (My point, of course, is that Parade is mass market pap and the guy profiled as an 'analyst' could be anything - a LAN technician, a PC technician, a programmer, or yes, an honest to god analyst in the old 'big company' sense.)
Myself - I recall back during the big internet boom reading posts on NGs and forums; I recall one in particular where this guy was talking glibly about 'losers doing loser work for $60/hour.' (uh, guess what rate I was getting...) Today, 2002, that infant/prima donna is probably engaged in a rewarding career as a Starbucks barrista while I still earn my conservative, Midwestern rate of ... er.... $70/hr....
Techies doing the 'my money weenie is bigger than yours' thing are repulsive and should be used for SDI target practice. |
|
| Building communities via e-mail lists | Sat 08 Mar | Alex Chernavsky |
| Two related questions:
1) Under what circumstances, if any, is it more desirable to build an on-line community using an e-mail list rather than a web-based discussion board?
2) Can people recommend a mailing-list system similar to Yahoo Groups, but better? Yes, Ive done some Google searches, and found some likely candidates, but I value the opinions of people on this board.
Thanks. |
| Sat 08 Mar | TK | I maintain two mailing lists for a high school. One is for mailing a calendar every Friday. It's an ordinary mailing list that is part of the hosting package I use. We have about 460 addresses. I publish the weekly calendars on the schools website but I don't think anyone but me ever views them on the web.
The other is a LUSENET forum. We use it to report event results: sports reports, debate results, awards and the like. We have about 200 folks on the email alert list. This one is probably more pertinent to your question. In nearly two years, I've only found 7 people who are willing to post to the forum. A few others email me the reports and I post them. Nonetheless, folks really enjoy getting the reports and I'm certain they contribute to the school community. A further advantage of the forum is that we have an archive of information about the school and that students that otherwise would be lost.
So, the community benefits even though few of them surf and only a tiny number of them post.
I really like LUSENET but I'm always looking for a substitute. |
| Sun 09 Mar | Thomas Eyde | I am a remote worker and use a VPN connection to my office network. The problem arise when I send mail. When on VPN I use our Exchange Server, when off I use my local ISP's email server. In both cases the email server will reject all emails whith the wrong sender.
I have chosen to use my private email on all mailing lists and web forums to keep my office email spam free.
So to send a private email I have to log off VPN, log off Outlook, log on again and select my private profile. Then I can send. Needless to say, most of the time I don't bother.
Why not combine the two? I like having new replies sent to my inbox. The email could have a reply to link, which give me a web form to edit. |
|
| POST XML document via HTTPS | Sat 08 Mar | T.S. |
| Can anyone point me in the right direction on how to POST some XML via HTTPS? I have IXMLHTTPRequest working with pure HTTP, but I cant figure out how to get it working with HTTPS. Thanks! |
| Sat 08 Mar | Patrik | That means your client software needs to know how to negotiate a SSL session.
http://www.openssl.org
should get you started with how SSL sessions work.
Good luck |
| Sat 08 Mar | mb | xmlhttp? just use https instead of http in the url and it should work just fine.
but it might fail if there is a certificate error of some form. can you browse to the url in IE without any warnings?
what error does xmlhttp return? |
| Sun 09 Mar | BC | libcurl may give you some hints...
http://curl.haxx.se/ |
|
| followup | Sat 08 Mar | anonymous |
| I gave an interview at a company 2 weeks back and they were supposed to get back to me end of last week.Should I followup with them next week, or wait some more time? |
| Sat 08 Mar | Bored Bystander | There's no good single answer. Maybe you should find and buy a generic book on job searching etiquette and techniques, seriously. It's probably going to depend on the personality of your contact in the company, the company's sense of urgency about filling the job, and the number of other applicants that the company wants to cherry-pick.
You want to appear aggressively interested in the job but not desperate. Contrary to what a lot of job seekers think, begging and crawling for a job can be interpreted as having something the matter with you and drives away some employers' interest.
One piece of advice that is pretty standard is - when you interview, pin down your interviewers on the next step and when it is expected to happen. IE: are you supposed to call them, or are they expected to call you? And when? |
| Sat 08 Mar | Bored Bystander | Actually, I just re-read your message and it sounds like the company blew its own commitment. Yeah, call them ASAP and remind them that you were looking for a word from them last week. |
| Sat 08 Mar | Vincent Marquez | I haven't had a lot of experience in this industry compared to most of these guys, but I'll say this: Every one of my jobs required me following up. Workplaces can be hectic, to you its a big deal, but unless its a huge company, hiring the 'right guy' is just one small part of their job. They probably have a million things to do. In my opinion, a friendly check up phone call can go a long way. As long as you didn't appear desperate in the interview, it says 'i'm assertive, responsible, and I want the job'.
Good luck. |
| Sat 08 Mar | Alberto | Dont call and accuse them of not contacting you, tell them that you are following up on your interview and wondering if any decisions have been made yet.
If they say they've hired sombody and its not you, abuse them and slam the phone down - just joking... |
| Sun 09 Mar | Nat Ersoz | It really stinks. Our HR department has delayed as long as 4-6 weeks gettig back to people, with no reason why they would not reply earlier. Who knows. Its the most inconsiderate thing I can imagine and inexcuseable. I have no good advice on the subject, excpet that they live up the Catbert reputation.
The perverse thing I learned in the last 5 years is that people live up to their stereotypes and most of the rumors you hear are true. Bizarre. |
| Sun 09 Mar | Kyralessa | To get my most recent job, I sent a resume in mid-December. I called a week or two later, and finally got from HR the number of the department doing the hiring. Talked to them. A week later, got a call from the boss to set up an interview...for a week after that. After the interview, didn't hear from them, and finally ended up calling once a week just to see if they'd made any decision. Finally got hired no less than THREE MONTHS after I'd originally sent the resume, and two months after the interview.
You have to find a good interval where you can call and look like you're checking up and not begging. I don't know whether I reached that interval, but I do know that I got the job. Not a great salary, but mid-level for the salary scale of that position, which is unusual for this place. So I must not have looked completely desperate.
I also agree with what someone else said, which is that calling and reminding them they were supposed to call you will get you nowhere fast. |
|
| Specialization of developers good for a business? | Fri 07 Mar | Nathan Arthur |
| Im looking for resources (anecdotes, ideas, and mostly books/articles/studies) about what effect the specialization of developers has on an organization. Should I try to make everybody know everything, or aim for focused on one thing and interested in others or is totally focused and excellent in one thing best somehow? What about short term and long term considerations? |
| Fri 07 Mar | flamebait sr. | XP tries to avoid specilization, as does the general Microsoft hiring practices.
Most of the arguments for either way are pretty much common sense. If you hire a graphics maven and then don't end up needing a graphics maven, you either end up with somebody who is unhappy, laid off, or who leaves the company. If your graphic maven leaves the company or is hit by a truck, you are screwed.
On the other hand, forcing somebody who just doesn't have the abstract stuff in their head to understand graphics to write a 3D engine is also asking for trouble because the graphics maven could get it done in a fraction of the time and write something that is much much better.
A comprimize is prolly better. |
| Fri 07 Mar | T. Norman | You need both specialists and generalists, with the majority being generalists. The specialists can lay the architectural foundations and give direction because they know the ins and outs of the particular platform and language. While the generalists (if they are generally smart!) will be able to pick up enough to do the job, as long as the specialist is available for answering their questions and reviewing their code. |
| Fri 07 Mar | pair designer | The choice of specialist versus generalist actually has a logical solution. Each system has a throughput limiting activity - the constraint. In order to elevate your constraint, you should get someone that specializes in the constraint area. You don't want this guy doing anything else because every hour he gives to something else is an hour of throughput lost to the whole system.
In order to further elevate this constraint you can try to hire generalists in other positions. Since these folks have excess capacity, it makes sense to try to get them to use this excess to help out your constraint resource. So, if your constraint is testing, maybe you hire some programmers with some test-friendly abilities that can do some of the simpler stuff. Cross training against your capacity constraint is always a good idea if it is possible. Steve McConnell has some great material on how to properly do this on his website at http://www.construx.com
Because your system is so sensitive to the performance of this constraint, you need to make sure you have options available if something happens to it. If the guy quits, you need to have a plan to immediately farm out the work to a contractor or something similar. You also need to make sure this guy never runs out of work, so keep some ready for him at all times.
You might also want to look at what are called 'near constraints' These are things that are almost capacity constrained or that will become the next constraint if the current one gets elevated. It pays to plan ahead.
The other thing you need to consider when staffing up is quality. If you put bad material through the constraint that causes rework, that is output lost to the system. You should inspect each input to the constraint to ensure quality is as high as possible. That might motivate you to hire specialists upstream as a hedge. |
| Fri 07 Mar | Nathan Arthur | I've been working on a theory that says 'Never have a specialist who isn't matched by somebody else who knows a lot about their area of specialty. That way, you never do things without either having at least a 2-person concensus or having a detailed analysis of the issue, resulting in better decisions.' Any thoughts?
To the 'constraints' comment: What if the model is 'very good at one thing, but can do others' and I distribute those people around the specialties? It feels like that should even out the constraints, as long as I have the right ratios (enough DBA's, for example).
(Also, I'm still looking for any documentation that anyone has seen. I feel like I've seen this discussed in a book or a study somewhere, but I can't remember where.) |
| Fri 07 Mar | pair designer | The main thing with the constraints is to try to balance the flow of work. You should not try to balance capacity - that will make the situation worse, not better.
As far as books go, Steve McConnell has some advice about staffing. Capers Jones maintains data on something like 7,000 projects. His analysis shows that specialists are more productive than generalists, but this factor isn't even in the same league as others, like reuse, at driving up production rates.
You can look at the quality work of W. Edwards Deming or any of the Six Sigma stuff, too. These pursue quality improvement and process predictability by trying to control and subsequently reduce variation. If you have one guy producing ten items, they will usually be more uniform than if you have ten guys each producing one item. My favorite book on this stuff is 'Understanding Variation' by Donald Wheeler (ISBN: 0945320531). |
| Fri 07 Mar | big bob | Gotta disagree about having specialists do architecture, at least in my experience.
A specialist is myopic in nature, the last kind of person you want to make architectural decisions.
A generalist is usually better at seeing the big picture, and delivering a better architecture.
I've worked with highly specialized people before that have architected things, and when I ask them to explain it to me they immediately jump into the internal details of the code ('We're using j2ee, ejb, xml, jakarta struts, ant, ...'). Ask a generalist and you might get something along the lines of 'Well I was talking to Jim in HR and he said if only the old system would do X, Y, and Z it'd be perfect'
YMMV |
| Fri 07 Mar | Nat Ersoz | Nathan sez: 'Never have a specialist who isn't matched...'
I totally agree. The 2nd person can help the specialist too. Everyone needs someone with whom they can discuss design decisions, debugging problems, ... Having the 2nd set of eyes and ears to help in the tough going is essential. It becomes a productivity multiplier for the specialist. Sometimes, you get stuck on a problem, and just explaining it to someone else helps construct a framework for analysis.
Anyhow, I think specialization is very often necessary. It is division of labor and the reason why a team of mecahnical engineers can design a car engine where civil enigneers would fail completely.
It is essential to have specialists on your team who will contribute to your core competencies. If your product is a forward looking infrared system, then you'd better have some high powered DSP gurus on your team. I don't think you'd hire a database guy for the job. Nor would you hire a device driver guy to write user interfaces. It takes time and energy to become proficient at something. As much as possible keep your people honing their skills in what they love. |
| Sat 08 Mar | Bored Bystander | Just curious. How does the attribute of 'specialization' relate to the attributes of experience level and ability to architect software, and are we assigning 'good' or 'bad' qualities and value judgements to these attributes?
I've never gotten a good fix on this issue. Some companies endlessly debate the fine tuning of these attributes, as though the quantity of competent people excelling in any particular attribute of these three can be found falling off trees and it's the responsibility of the hiring authorities to endlessly nitpick the exact right blend of candidates and to string candidates along almost indefinitely with a smirk that the company is looking for 'excellence'.
I say - just HIRE someone, and select the candidate(s) that display the most promise (and preferably past track record) of temperamental flexibility.
I believe that a highly competent and productive 'can get it' software developer can readily float between being a generalist and being a specialist, and in fact, likes to do this rather than stay at either end of the spectrum for very long.
The 'stupid' developers (or rather, the ones so smart that they are downright foolish) have appeared to me to be the ones that have a lot of trouble moving between the big picture and the detailed low level intensive work that may take weeks or months. I am as infinitely suspicious of the architect that never writes a line of code, only delegates the work, as I am of the career low level dweeb that has a brain aneurysm if you ask him where an end user would see his stuff operating in a finished product.
IE: a guy that only wants to do OS internals for a living and can't even semi fluently describe the value of what he's doing in some kind of real world terms (at least related to the applications that sit on top of it, for starters) isn't a genius - he's more of a childish kind of a boob. When you're being paid the big bucks, you should expect to have to talk just a *bit* once in a while to another real human about your role in things, and defend what you're doing to others. Not constantly, but occasionally and when necessary.
It furthermore seems to me that a highly intelligent person consigned to doing Windows VxDs (or whatever they're called now :-) ) or graphics internals as a job title would go ape s*** out of boredom after a couple of years.
All in my opinionated opinion, which renders the diatribe I just posted highly suspect... |
| Sat 08 Mar | T. Norman | big bob:
When I mentioned a specialist for the architecture, I was only referring to having them doing the architecture within their area of specialty. For higher-level enterprise architecture where disparate systems have to interoperate, the generalist will be needed.
So if you're developing a major J2EE application, it helps to have somebody who knows the ins and outs of how and where to use EJB, servlets, JMS, JNDI, etc. Without having the specialist with solid experience in Java/J2EE to set direction, the team of generalists will often end up wasting a lot of time doing things in inefficient or error-prone ways, being unaware of the 'gotchas' until they actually 'gotcha'.
But when that J2EE application has to also talk to an IBM mainframe, an Oracle database, and a document management system, you'll also need a generalist to organize how they will all work together.
That myopic individual you referred to is not a specialist -- that person is what they call a 'one-trick pony'. There is a difference. A real specialist knows where his/her specialty ends, while still being able to cooperate and communicate with others to enable his/her specialty to interoperate with other technologies. |
| Sat 08 Mar | Vincent Marquez | Norman, I've worked on some pretty good size J2EE projects, so i'm going to pay devil's advocate and disagree:
Because specialists can sometimes have a limited view of the big picture technology their working with, and because they are so eager to employ the tricks of the trade (for instance EJBs) they often miss the simpler, more elegant solution (of course this is not always the case).
In my few years of experience, i've learned that it is better to have a team of quick learners who have a very solid grasp of software engineering and design, and get them to 'specialize' along the way. For instance, I'm not an expert at Entity Beans, but for X project i'll do some extra reading and be the authority on them.
This is also a better solution when employing XP, because of the shared 'code ownership' idea. |
| Sat 08 Mar | pair designer | Vincent Marquez said, '...but for X project i'll do some extra reading and be the authority on them. '
I tend to trust authority gained through proven experience a lot more than authority gained only through reading or other kinds of analysis. These last I view as a supplement to actual experience, not a replacement for it.
Obviously, for bleeding edge work, you have to take what you can get. In general I'd rely on a proven track record more than broad familiarity with the literature.
Experience is what I think a specialist brings to the table more than anything else. Someone who's seen all the issues, who's learned the hard lessons, who's dealt with all the implementation nasties that spoil all those pretty, abstract designs. Books and anecdotes just don't let you deliver to the same level. |
| Sat 08 Mar | T. Norman | Remember, we're talking about *good* specialists and *good* generalists here. Bad ones of either type will mess up your system. A J2EE 'specialist' who insists on creating everything as an EJB when plain servlets or a simple Perl script would be better, is not a good specialist. Myopic behavior should not be an argument against having a *good* specialist. |
| Sun 09 Mar | Nat Ersoz | BoredB.
I like what you wrote there. I also tend to think that if someone can do one difficult thing well, they can do anything well. And for the most part that is true. But people do need to specialize, I think. Not that they should be stuck with a specific specialty, but that no one can touch bottom on all aspects of a project.
There is significant overhead involved in becoming fluent in an area - say cryptography for example. The novice will completely miss things like man in the middle attacks and other vulnerabilities until they obtain more skill in the art. That learning curve is steep enough that you can expend the time and energy to have everyone beome expert in every area. At least that's what I think. |
| Sun 09 Mar | T. Norman | Nat:
Did you mean 'CAN'T expend the time and energy ...'? |
| Sun 09 Mar | Bored Bystander | Hi, Nat:
>> if someone can do one difficult thing well, they can do anything well. And for the most part that is true. But people do need to specialize, I think. Not that they should be stuck with a specific specialty, but that no one can touch bottom on all aspects of a project.
>> There is significant overhead involved in becoming fluent in an area - say cryptography for example.
I absolutely agree. But this industry sucks too much to make specialization a prudent career choice. So guess what, specialists are *very* rare.
Mainly, real specialization in something esoteric (good example of cryptographic programming) is bad for your long term financial health, except under very unique circumstances.
That's why I have avoided specialization like the plague. I think most programmers know this intuitively. So that's why certain 'deep' programming talents such as device drivers, kernels and OSs, and cryptography tend to be so hard to find. Companies just want to hire people long enough to do the heavy lifting, then chew them up and excrete them. The main problem is that you're only seen as being valuable in only one capacity, and so you're vulnerable to being too dependent on one job.
Specialists are generally denigrated by many hiring parties as being 'one trick ponies'. That's another self justifying HR culture thing. The person that has specialized within a company will usually be very unemployable on the outside.
As far as those 'unique circumstances' in which specialization is good or worthwhile - this would be the case if you were a consultant with a REALLY good network and you had an industry reputation including speaking and published books and articles. You'd pretty much have to be a consultant because companies are loathe to keep specialists on the payroll, and also because most private business is loathe to allow a mere scum employee to promote himself in the outside world unless it's shilling for the company. Having the high profile is also essential to staying employed as a specialist.
Conversely, there is NO, and I repeat absolutely NO market for an unknown specialist - you can know a subject inside out, but lacking the press or network, you look like a *really* unemployable body to smirking HR people and smirking recruiters. You can say that you know X to the Nth degree til you're blue in the face, even with a track record of actual products, and you will still get the cocked eyebrow that indicates that you're wasting their time. Believe me, I found this out the hard way!
Hence, the conclusion I've arrived at, which is: the very best that private business can hope for is to develop their own specialists on an as needed basis. |
| Sun 09 Mar | max | BoredBystander makes some excellent points, though they are from the opposite perspective of the subject of this thread. Specialization, especially deep specialization, is a risky career move. I don't think it's so much that the industry sucks, though. It's economics. In order to build a large market for your special skills, you need a lot of instances of the problem you are so good at solving. As Joel says, though, software is infinitely clonable. If someone provides a really good solution to your problem the market will want to buy the solution as a product from them rather than as a service from you, due to economy of scales. Figure out if you can turn your specialty into a product that you can mass produce and beat them to the punch.
You also have to choose your market carefully. The problem you solve has to be worth a lot to solve. No one's going to pay you for your expertise in button design because good buttons just don't have much value add relative to bad buttons. You have to solve one of those make-or-break problems.
Another problem you run into is the rate of change of market drivers. Last week's VB6 golden child might quickly wind up this week's maintenance programmer if his specialization is too narrow. If the time line for developing a master level of something is longer than the period of change of the associated market drivers, you are going to get into trouble.
When you do find a market suitable for specializing in, you have to do like BBystander says: you have got to develop the market. Write books, author articles, speak at all the trade shows, and so on. Also, get good at financial planning. Instead of a nice uniform series of regular payments, you're probably going to get big lumps of money followed by long, irregular periods of nothing, for the most part. |
| Sun 09 Mar | T. Norman | I agree that specialization is generally not good for the career of a developer, because HR hiring practices are based on the length of the laundry list of acronyms that you put on your resume. But for an employer, I think specialists are good to have on staff as long as they aren't the majority of your workforce. |
| Sun 09 Mar | Bored Bystander | I think specialization that serves *only* the interests of the employer happens regularly in this industry. The 'only' means that, just as stated in the last few replies, highly specialized techies are at a distinct liability in the job market.
So if your employer grooms you to be a specialist, it's generally to your disadvantage because they can do what they will with you as your list of skills is 'shortened'. There is a slight chance that the specialization is in something that will be considered desirable in the job market because it's an emerging technology on which you can catch the rising wave if you leave, but it's usually not the case. As your 'marketable skills' become narrower, the employer has more ability to dictate terms.
A concrete example of this is that just about every embedded systems developer I've known in my area has had (not in the last 2 years, but more like the last 15 years) one *hell* of a time finding stable, non abusive employment. Embedded work is grueling, nitpicky stuff in the best of times, and your 'reward' to do this stuff in my region is to work in a sweatshop, followed by a layoff.
And disadvantageous forced specialization is one big reason I started contracting. It's a lot harder to stay with the market as a contractor than to veg out in a so called 'stable' permanent job, but nobody's had the opportunity to 'groom' me into a corner, either.
This whole subject of specialization raises my ire (IE, it PISSES ME OFF!) on many levels because so many techies and programmers naively walk into what is basically a career cul de sac without anyone stating the pitfalls.
And the 'we don't like contractors' party line that managers and executives love to state as their mantra is accompanied by an understanding that the only desirable people in their eyes are FTEs that become epoxied to a job description.
And if business culture wasn't so dysfunctional and abusive by design, there would be an efficient market for dedicated specialists that aren't 'world class' by self-marketing standards. Instead, even if you can solve a prospects's problems, chances are that HR and their management will buzzword-nitpick you to death. |
| Sun 09 Mar | Nat Ersoz | Wow, I really like this. Bored is on a roll - tihis is as good as it gets at JoS from my perspective. Lappin' it up over here. Let's change the subject - how 'bout the format of the discussion board... hell, no. Don't go there.
Have to say that you hit a nerve over here with the 'chewing them up and excreting them out' paragraph. I gotta think about that a bit.
More later... |
|
| Pair Programming Experiences | Fri 07 Mar | Brent P. Newhall |
| Im sure some of us have tried the Extreme Programming principle of Pair Programming, in which two developers work on the same piece of code at once.
For more, see this page: http://c2.com/cgi/wiki/wiki?PairProgramming
Have you ever Pair Programmed? What was the experience like? |
| Fri 07 Mar | Jimmy Chonga | Perhaps I'm just a cynic, but the pair programming aspect of XP just seems ridiculous to me: To have two guys at a computer jockeying over who gets to play with the steering wheel just seems absurd. What I could imagine working are two eyes, but this would require, in my opinion, two developers with their own workstations working in a common workspace, each with an edit pane on the same code, but each with the ability to do independent research and to bring information to attention, etc.
In brief, no I don't have experience pair programming. :-) |
| Fri 07 Mar | Matt H. |
Two different cases:
(1) You're using pair programming with a person who really doesn't 'get' your language as way of teaching, say, perl or C++. You let him be the driver and you tell him what to type.
(2) You BOTH 'get' the programming language, and you are implementing a feature. You understand the design better, so you let him be the driver and you talk about what do type.
In my experience, #1 will fail terribly (he'll type it but not know what he typed) and #2 is -wonderful-. I've had nothing but success. Bug count goes down, and speed -increases-. Maybe not 2x, but, including all the breaks you skip because you drive through, it's pretty close.
regards, |
| Fri 07 Mar | sedwo | What about two people in one common workplace (eg. cubicle), each with their own computer, understanding of the language, and design. But while one guy writes the functions, the other writes the tests for those functions? |
| Fri 07 Mar | pair designer | I've tried it and really haven't been able to get into the groove with it. When I work with good coders, I just seem to sit there, because they don't make mistakes or they catch 'em quick when they do. When I'm working with a coder that's not so careful, I feel almost compelled to snatch the keyboard away after a little while, so I can get a little crabby.
When I'm on the other side and I'm doing the typing, the talking and whatnot interrupts my train of thought and rapidly becomes annoying. Even worse is when we have a bug to puzzle out. I'm trying to keep a lot of details in my head and I have a theory about where the bug must be located and it usually conflicts with the other guy's. So he's announcing his chain of reasoning for me and telling me to check this and print that and I grind my teeth :)
Seems my temperament isn't well suited to this sort of thing except on an 'as needed' basis. Left to my own devices, I'm a pretty cheery fellow, too.
My team tried to enforce pair programming for a while, but no one really seemed to like it and it kind of fizzled out. We're back to doing code reviews and writing individually.
What I do find extremely worthwhile, though, is pairing up for some design work. I know the XP crowd eschews this, insisting that the code is the design, but I don't work that way. I don't design the entire system in infinite detail up front, but I do like to have the 'next few things' laid out and understood before I start typing at them. I also like to have an outline made up before I start writing anything of consequense as well, so maybe it's just me.
Finally, I like to capture requirements using a four man team: two developers and two customers. I like to have one developer doing the interview and capturing the requirement, while the other one observes, asks clarifying questions, and so on.
Having two customers is helpful because if there is even the slightest disagreement or misunderstanding between them they will debate it between themselves and get clarity without me having to try to pull stuff out of them. Makes my job a lot easier. |
| Fri 07 Mar | Chris Tavares | I've never really done pair programming, but I *love* pair debugging. Works great, having someone to discuss the problem with really opens up ideas, and two get to a solution much quicker than either individually would have. |
| Fri 07 Mar | KenB | The way we did it at my last job was myself and a fellow developer shared a large double cube. I found it a nice experience because we were building a website and he was an excellent client side developer (HTML, JavaScript, Photoshop) and I knew the server side aspects (JSP, Servlets, Beans).
Working together we taught each other a lot!!!!! |
| Fri 07 Mar | UpAndDownTheCityRoad | Tried it once with a guy who was a /massively/ quicker typist than me. When he was coding, all my comments were four lines behind the cursor, and when I was typing it was 'why are you so slooooow!!!'.
We ended up hating each other in about 10 minutes so went back to being good colleagues with our own PCs. |
| Fri 07 Mar | satya | I got to try it only once 'accidentally'. Two of us were working on the same problem and due to some constraint got to sit at the same terminal for sometime. So we started working together and actually finished both our tasks in less than the time it would have taken had we done it separately.
We did not know about 'Pair Programming' then, and we pleasantly surprised by it (in fact my collegue commented that together, we became better programmers than individually :-)
So I guess, there is something to it after all. The best thig that happened is that he caught mistakes (bugs) as I typed and I did as he typed. So when we compiled, we had pretty clean code that just worked! |
| Fri 07 Mar | Nat Ersoz | My ass is so wide, I take up 2 chairs. All I need is a second personality. |
| Fri 07 Mar | z | How does it work out if your pair partner likes to chew bubble gum and you have to listen him slurp, munch and pop while talking and typing? |
| Fri 07 Mar | Brent P. Newhall | It sounds like much of the experiences folks here have had is with something other than XP-style pair programming, which is a shame.
In XP Pair Programming, programming is performed by peers. Both should be of roughly equal competence in the job they're doing.
Neither developer should be 'jockeying for the steering wheel;' they should be alternating control of the keyboard. The average seems to be to switch every fifteen minutes or so.
Neither developer should be just sitting there dumbly. That's not pair programming; that's solo developing with an observer.
I've done pair programming in person, and over the 'net (using a shared desktop and talking over the phone), and it's been highly successful. The code we've produced has been robust and powerful. |
| Fri 07 Mar | pair designer | 'In XP Pair Programming, programming is performed by peers. Both should be of roughly equal competence in the job they're doing.'
I think this is a fallacy of XP. XP seems to call for a large team of generalist developers, each capable of working on any of the development artifacts. Industry data clearly shows that teams of specialists outperform teams of generalists, however. (See Capers Jones work as described in 'Beyond Chaos' by Larry Constantine, ISBN: 0201719606). Experience from other industries bears this out.
This generalist approach does have some benefits, most notably the ability to flexibly move developers to places where capacity is lacking. Properly managing a team of specialists can avoid the problem altogether, though. (Except, of course, for *the* system constraint as described in 'The Goal') In fact, because XP allows this movement of capacity, it may actually be the root cause of what appears to be a moving constraint/bottleneck. This is a difficult situation to manage and even more difficult to predict effectively.
This 'peer programming' model is also destructive to the goal of elevating the aggregate skill level of the team: you won't learn much from someone that's basically a copy of you. My approach is to avoid it. |
| Fri 07 Mar | Olivier Dagenais | I have tried it once for a school project, and it worked great for, I believe, these reasons:
1 - we each had our own keyboard (one PS/2 and one USB plugged in the same machine - it works)
2 - we each had our own pointing device (again, you can plug two mice in your PC, PS/2 and USB is what we did)
3 - we had different skills and hence different tasks
4 - there were two monitors, so there was that much more real estate to help us divide the tasks (they were not both showing the same image, we just had an extra big desktop to play with)
Specifically, we were putting together a model with Rational Rose RT. My friend knew the modeling aspects better than I did and so his job was to create the capsules and the finite state machines. Since I knew a bit of the software, I was able to provide input and help him.
I was in charge of the C++ source code that go in transitions and states. Again, he knew a bit what was going on and he would help me.
It was great! We would seamlessly tag team through the development process. He would make a few clicks, type a few things. If I disagreed, I could type something right away. Then, when it was my turn to write code, he could interrupt me and say: 'You forgot to declare that variable' and make the adjustment and I could resume coding.
There was no 'uhhh, can you stand up so I can sit down at the keyboard to do that part?' that really gets annoying because it might be for a big five seconds before you're asked the same thing from the other guy. We just typed when the other stopped. Zero standing up and sitting back down time.
I'm not sure how useful it would be for a piece of software I would be doing for work, but I will definitely try it at my next job. |
| Fri 07 Mar | igor | I have found that peer programming works well when both people have similar level of skill and understanding of the problem, as well as, compatible personalities. I think the latter is the key.
One of the most successful pieces of code I've ever written was done while 'pair programming' with a friend, well before I've ever heard the term. However, on many occasions with other people it didn't work so well. Either I or the other person had much clearer idea of what to do and would up take over the process.
Hard-core XP advocates random pairings every day. I don't know how it could work in cases where people are not compatible or don't get along. |
| Fri 07 Mar | Colin MacDonald | I'll second the votes for pair designing and debugging. It's great to have an extra pair of eyes and someone to bounce ideas off of.
A key point XP makes about pairing is that one person should be the 'navigator' and one should be the 'driver'. One focuses on design and the other on implementation. You have to learn to let go, and not second-guess the other person too much. My first pairing experience was hellish until I realized that I was back-seat driving, rather than navigating.
Other XP point - rotate partners, so you don't just become a clone.
All that said, I don't pair often. Once you've figured out the implementation, the navigator isn't as valuable. Also, with someone looking over my shoulder, I couldn't take the time to post on discussion groups. ;) |
| Fri 07 Mar | Eric W. Sink |
More remarks from someone who has never actually tried pair programming:
Of all the XP practices, this one has the most risk. I understand the reward side of the equation (code reviews simultaneous with coding). The risk is that the chemistry of the pair doesn't work.
Bottom line: If the XP people were objective instead of fanatical, I bet they would admit the following is true:
When pair programming works, it works well, but it doesn't always work. |
| Fri 07 Mar | Go Linux Go! | I've had sessions where I worked with another programmer on a specific routine and it worked out OK. Our intention wasn't do to do 'pair programming' per se, but just kinda ended up that way.
For me, I can see it being useful in very small and specific areas. But if I had to sit down with someone every time I wrote code, I'd wind up doing physical harm to someone.
There are times when I just need to sit there and think for a minute. I may have to try a few tests or go Google something for reference. When I'm doing this, I don't want someone sitting there breathing my air.
In the scenario I just described, how does XP recommend you handle that? Surely that don't ignore the fact that sometimes you just gotta think something through quietly by yourself before you get someone else's opinion on it? |
| Fri 07 Mar | Jimmy Chonga | Many pair-programming advocates sound a lot like communists: They consider only the hypothetical positives while failing to see the realities of the human condition (i.e. egos, greed, self-gratification, inferiority/superiority complexes, etc). Yeah in theory it sounds brilliant that you could drop two people who could project each other into the stratosphere of productivity, but somehow the reality seems likely to be a tad different. |
| Fri 07 Mar | Eric Moore | At my last job rather than pair programming, every time someone started a couple day task he would partner with another person for a couple of hours. We'd share the same PC and work through through several evolutions of a basic design, bounce ideas off each other, question whether we were solving the correct problem, prototype some classes etc.
Once ideas started to settle down, the person who owned the task would go back to his PC and pretty much work by themself. This seemed a good compromise since it addressed some of the problems of a person working in isolation, while allowing an individual to actually own the work, and do things thier own way.
I don't buy into the idea that two people sharing a keyboard are twice as productive as a person working alone. I think the whole idea is naive.
What I think the XP folks are picking up on is that there are social obstacles that prevent many people from collaborating with thier peers as needed, and this causes a lot of problems. Unfortunately in most work environments this is viewed as asking for help, and is heavily stigmitized. |
| Sat 08 Mar | Tj | Pair programming arises naturally among friends (in my experience), but not in corps. With friends, you both care that the code you're using is up to snuff, so you observe each other, especially during that interesting point after a design has been sketched out and tools probed. It's a great learning experience, to watch techniques and comment. Often there are what are humorously called 'creative differences' which are important and flesh things out further.
Eventually, I suspect the need to be close during implementation becomes patchier. At that point, you might be able to scan the other guy's CVS or just eyeball the code and notice little lends itself to interesting comment. But I haven't gone there yet.
Corp environments often feed weird ego neuroses and make it hard to have the trust necessary. |
| Sat 08 Mar | Tj | Testimonial from one of those badass-sounding teams.
http://home.earthlink.net/~kend0/ExtremeSuccess.html |
| Sat 08 Mar | Robin Debreuil | Pair programming works great, as long as each person is capable, each has their own keyboard and mouse hooked to their own (networked) machines, and they are each working on a different task. Ideally in separate rooms.
If your IDE isn't catching your typos, look into a better IDE. |
| Sat 08 Mar | Ben Wint | As we now know, participating in this forum is best done as a pair - one person to make posts and the other to find out whether they were write-once-read-once or write-once-read-many |
| Sat 08 Mar | The Real PC | Where I work, if I try to collaborate with someone to find a bug in my program, they think I'm asking them to do it for me. They might say 'try different things and narrow it down,' or 'keep notes of what you have already tried.' Either that or they take over and fix the bug and ignore me. They have not read XP I guess.
Everyone works alone and solves their own problems. I don't mind, but it can take much longer. For example, I'm currently learning how to use software that I was not familiar with at all, while someone else in the department knows it inside out. Nevertheless, I am struggling alone because that's the only way to appear competent in this department. |
| Sat 08 Mar | Robin Debreuil | Sounds like a problem, but don't confuse two people talking with each other with 'the goodness XP at work' either... |
| Sat 08 Mar | The Real PC | I didn't mean to. I really don't like the idea of pair programming at all. On the other hand, I would like to feel I could talk about problems. I get answers from the people I work with like 'try searching in google.' Well duh.
At least with pair programming you get to talk about problems and work together. However, I like working alone even if it seems like a waste of time when I know someone down the hall could give me the answer in 2 minutes. They spent hours finding the answer the first time, and now I'm spending hours finding the same answer. Seems like a waste. But if they want to pay me for that, I don't mind. |
| Sun 09 Mar | Jimmy Chonga | Sort of like Web Services, it's so easy when one can give absurdly trivial examples. If it's good having one coworker working alongside you to share their prior problem solving experience, why not two? How about 4? How about the entire company all huddles around one PC so they can use the collective knowledge of all of them? Of course this is absolutely ridiculous.
Many of the bogus examples to support pair programming exist in software development TODAY: Got a problem that you think coworkers may assist with? Asynchronously email coworkers and shift gears and work on something different for a while. Hell, perhaps check Deja (err, Google Groups) or other online resources (which is a HUGE collective...a super pair programming if you will). |
| Sun 09 Mar | anon | Jimmy C., are you working at a company where management forces people into the coolaid of the week? Normally, people just consider the pros and cons, trying to see where it would and wouldn't work. Whereas you come out swinging, saying you've never tried it but it's Communism. It's like you're in an environment where you have to fight the trendy coolaid. |
| Sun 09 Mar | Robin Debreuil | Personally when I work, I don't like to be bugged. I don't mind at all if I've just finished a task, look up, and go get a drink of water, but while I'm in the middle of something I find it very aggrivating. Point 2 is that just because I did something similar a month ago, it doesn't mean I'm in an expert and can spit out the code without reference. Probably, if it was tricky, I had the docs on one screen, and possibly a few googled sites and sample code on others. Eventually it all gets peiced together and I keep going. Next time I'm faced with the problem, it is a lot more familiar, but it still involves checking, and certainly dropping whatever else I may have been thinking about.
So when someone asks for help it can either be no problem at all, or intensly aggrivating, depending on when its asked, as well as what the question is. If a person is in the middle of something, you really shouldn't barge in period. Also, if the question is something that can be answered by documentation, looking at my old code, or google, don't waste my time please! Why should I look up your problem? In fact, that is what you are paid to do, just like me. Good questions address things like implementation strategies, quirks that are outside the docs, vaugness of specs, tips and tricks, and above all, things you have already tried to figure out and couldn't. Annoying questions are things that can be looked up more easily than answered, or worse (and more common!), someone is bored and wants a break. If my question doesn't start with 'I can't figure this out...', I tend to hold off until it does.
I think 99% of what you program can be looked up, and most of the other 1% either requires 'project consensus' rather than 'pair consensus' or an individual with a greater level of expertise in the subject. It makes me deeply suspicious of pair programmings claims. The lack of *reproducable* results are usually attributed to 'the programmers didn't get it', 'the mix was wrong', 'the attitudes were too old school' or 'the sun was in my eyes'. Anyone who doubts it is pretty quickly dismissed as narrow minded with an invalid opinion. This is probably why it starts sounding like religion or communism, it is a familiar pattern to those with experience in those areas...
But hey, not to say it can't work, just it has been running for a while now on claims alone. |
| Sun 09 Mar | The Real PC | There is a lot to be said for working alone, even when there's an expert down the hall.
Last week I had to do something unfamiliar and there wasn't much documentation. And nothing at all that explained it on a beginner's level. I asked the expert for an introductary explanation and he told me a lot but no simple instructions about how to get started. Then he went away to a conference and I just struggled with it for two days. Eventually I got things to work and now I feel I have a pretty good understanding. Much better, maybe, than if he had helped me.
If he had been around I would have felt I had to ask for help in order to save time. Since I had an excuse to do it all alone, I wound up understanding it better and also feeling better about myself, because I didn't need help after all.
On the other hand sharing information and helping each other out makes sense at times. Otherwise, everyone could just work at home. |
| Sun 09 Mar | Danil | What nature of experimental results would lead you to reexamine your opinion that pair programming can't work? |
| Sun 09 Mar | Robin Debreuil | If you are talking to me, I didn't say it 'can't work', just they make a lot of claims without backup. What kind of experimental results? Well, how about the unbiased empirical type? Eg, the ones that don't look like they are from either side of the global warming debate. There are plenty of studies where the basic aim is to figure out what increases productivity in the software world, just that. Most of what I've read on pair programming jumps right in to 'why' it is more productive, but never establishes that it is. Kind of like all the 'why linux is faster' talk you used to hear a few years back me thinks... But hey, if it comes out that it actually works, great.
PS that does not put me in the waterfall camp, nor the camp of social mistfits, nor the camp of enforced solitude. That wiki link at the start is an embarassment! And making credible by calling it a 'design pattern' lol! And all this while I thought patterns were supposed to have a 'liabilities' section - oh, I guess there are none in this case... Even more credible then! I guess that is the kind of thing that turns me away, life is too short to spend debunking things that look that much like psuedoscience. Basicaly if is better, it can be proven to be. And people will no trouble adopting it if it works better either, history bears that out...
PPS Of course everyone programs with other people around when it is useful, that says nothing other than people use common sense... |
| Sun 09 Mar | Daniel Shchyokin | My most enjoyable days doing anything have come when I work in pairs.
Things pair programming is good for:
1. Avoiding Stupid mistakes (arithmetic ...)
2. You have two brains to think about the implication of design deciscions
3. One guy can hold of the manager, make a phone call, answer peoples stupid questions, lookup something in the docs, while the other finsihes whatever was just talked about (easier to maintain flow).
For it to work though they must be close in skill level/confidence in their skills otherwise one of them will tune out. |
| Sun 09 Mar | Robin Debreuil | Did anyone notice on that link[1] that the opening quote says:
'...has shown that paired programmers are only 15% slower than two independent individual programmers...'
ummm, but the rest of the page says you will be much faster? And less bugs, please specify - bug reports from the test team, or compiler caught typos etc that take no more time to correct when the compiler tells you than the person sleeping beside you does.
Also it goes on and on about pairing up a junior and senior, so which is it? There isn't even consensus about something as basic as that?
Well, I guess life is too short, but one can always find time on a slow night too... |
| Sun 09 Mar | Jimmy Chonga | Yes, something about koolaid...
Interestingly my comments regarding pair programming have not bee overly negative, and I personally don't really have an opinion regarding them, however I DO have a cynicism about the latest great thing that people have a horrible tendency to want to advocate something different, so they over-emphasize the positives while failing to consider the negatives...like communism. |
| Sun 09 Mar | realist | I drink a lot, so on those days when my head hurts, it's really good to be team programming with a zealous young programmer, I just sit quietly and utter the odd wise sounding noise of agreement, occassionally I type too.
Usually, with my experience, I can spot any youthful bad decisions pretty quickly and head them of at the pass, sore head or not.
A win - win situation. |
| Sun 09 Mar | Tj | Why not create a new thread arguing why PP sucks in an a priori sense? This one is about peoples' anecdotal /experiences/, good or bad, not about advocacy.
Not that my 'unprofessional' experiences were educational, but at least they were ontopic. ;) |
|
| "shmatta"? | Fri 07 Mar | Leonardo Herrera |
|
I really would like to know what shmatta means. |
| Fri 07 Mar | Simon Lucy | shmatta or schmutter? |
| Fri 07 Mar | mb | in this case, the translation would probably be rag. |
| Fri 07 Mar | UpAndDownTheCityRoad | Schmatters is jewish slang for clothing - more usually called 'the rag trade'.
The term is used (to my certain knowledge) to mean the garment district of London (just North of Oxford St), and presumably also the equivalent district of New York, USA. |
| Fri 07 Mar | Joel Spolsky | http://www.jr.co.il/humor/date.txt |
| Sat 08 Mar | Tomasz P. Szynalski | 'Szmata' (pronounced 'shmatta') means 'rag' in Polish. |
| Sat 08 Mar | AnonymousPhilologist | ...and, since many Jewish immigrants to the US were involved in the garment trade, it took on the meaning of 'Jewish person'. Probably with negative connotations. The rival mob boss in 'Miller's Crossing' uses it to refer to John Turturro's (Jewish) character. |
| Sun 09 Mar | Gregg Tavares | shmatta in Japanese means 'Oops, I f*cked up' |
| Sun 09 Mar | reader | shmatta in the Arabic language means to be joyful of someone else's misery. |
|
| The personal voice. | Fri 07 Mar | sedwo |
| Joels article (http://www.joelonsoftware.com/articles/fog0000000021.html) regarding the personal voice in business is very interesting. It explains why Joel runs his business the way he does and why it makes sense that the business of technology (Software/web in this case) requires such methods more than ever.
When I was on vacation in Cairo a few years ago, I stumbled across a small shop in an alley that sells various perfumes, carpets, and papyrus. I just got into the city and was eager to explore. The moment I stepped within a meter of the little shops open door, the owner stepped out to greet me and invite me in. For the next hour I sat in a super tiny room, on a second floor with no windows, surrouned by wall-to-wall paintings, sipping tea and listening to the stories that the man had about the paintings meanings, his family, his life, and if I liked the hibiscus tea.
Needless to say, I did walk out with a few artifacts, but most interesting was the amount of energy and time that the man dedicated in persuing the goal of satisfying the customer with a most personal touch.
To try an achieve this through a web page is impossible. But sites like Joels and a few others try with construction in a personal manner. Text that is written by a human, not a robot, with an attitude about it and not Marketing suckup.
Business doesnt have to be cold and impersonal. Yet a lot of sites seem to depict such an image. Maybe because they think its unprofessional. Whatever happened to tell it like it is? Or maybe its only something that can be pulled off by a small group, and not a conglomarete.
It definately made me rethink my focus regarding my businesses site. |
| Fri 07 Mar | X. J. Scott | sedwo,
Thanks for bringing this up. I like this topic. Agreed - the internet is often used the opposite for what its good for.
There are tens of thousands of little shops on the internet run by one person or a husband and wife or such, selling hand made baskets, historical costumes from the Renaissance or Civil War, strange pieces of art, original craft items and even unusual software. Heck, somewhere out there there is an aboriginal tribe selling their pots direct from the outback via satellite internet uplink. Many of these sites lay their life story out for you and when you email them, they email you back. These are great places to get unique and original items and this sort of relationship with distant artists and craftsmen never would have been possible before the internet. |
| Fri 07 Mar | Brent P. Newhall | One quote mis-attributed to Mark Twain is, 'Only presidents, editors, and people with tapeworms have the right to use the editorial 'we'.'
Don't be formal unless you have to. If you're a small business, act like it. |
| Fri 07 Mar | mackinac | My previous employer recognized the value of the personal voice at least in some situations. They were a software development house and were particular about hiring developers. It usually took code and writing samples and a couple of interviews. But they were also careful in hiring receptionists.
He or she was the person who answered the phone and was the customers first point of contact. They were always friendly and the best ones would get to know the customers. And they did answer the phone during the day. There was no automated attended implying to the caller that his time wasn't important; he could work through a menu of choices before talking to anyone at the company.
Although they did get music-on-hold they were even careful about the selections. A few callers even commented, that while they might not like MOH, at least the piece they had to listen to was pleasant.
They didn't do so well with their web pages. As the WWW was becoming common they were also getting larger, then got bought out, so all that personal voice got lost. |
| Sat 08 Mar | backintheday | A previous employer definitely used the royal 'we'. There were two of us, plus a couple of freelancers, but he thought it would be a good idea to tell clients we were an eight or nine strong team. To the point of writing down what job each of these unpeople did.
Oddly enough, clients got pissy when their work wasn't done on time.
And guess what, employee (the real one) got pissy with working until 1am, and left. And employer *didn't see this coming*.
What a dick. |
| Sat 08 Mar | Bored Bystander | This is a really good topic for discussion.
I've experimented with variations in the continuum between a personal voice and a corporate 'we' in marketing and presenting my own small company to prospects.
There are a lot of factions arguing in both directions, especially in this industry.
The problem with the personal voice in the B2B market is that there is a proportion of business people who simply don't respect smaller businesses and who won't slow down and listen to what you've got to offer that makes your services or products unique. Example: a while back I sent my URL to a former classmate who is now an IT manager in another state. He wrote back that I needed a graphic artist to redo my web site because it looked too amateurish. (not that *he'd* ever have the balls to go out on his own, but hey, I asked!)
Shallow glib slickness seems to be the de facto expected style in our business. I know myself that a bodyshop type IT service agency usually underpays so it can't afford (typically) to hire anyone who is a serious developer for very long, but just try to get past the 'preferred vendor' crap in larger companies. There may be a project in that organization just SCREAMING for someone who knows their stuff to save it, but the entire system wants to see vendors with head counts and an editorial 'we'.
Massive kudos to Joel for recognizing the lack of a personal voice in our field, and creating an effective marketing engine that uses it FOR his interests rather than AGAINST him. I'm sure none of it is set in stone and it's an ongoing experiment, but he's definitely created a new prototype for a successful business that doesn't feel stupid or marketese driven. |
| Sun 09 Mar | Daniel Shchyokin | 'Massive kudos to Joel for recognizing the lack of a personal voice in our field, and creating an effective marketing engine that uses it FOR his interests rather than AGAINST him'
but don't forget that Joel markets to consumers or small orgs not fortune 500's |
| Sun 09 Mar | Darren Collins | I have an old university buddy that runs his own computer installation and networking company. He set up a web site, and throughout it all tries to sound like he's got a large staff of experts just waiting for your project.
Since I know he works alone, I know he's lying through his teeth on his website. He claims his business is capable of all sorts of things that I know he can't do. If he ever gets an inquiry in one of those areas, he madly scrambles to find someone that he can subcontract that part of the work to.
I see a lot of other people doing similar things. That style of business is sure to cause problems for the customer. As a result, I would never use a business that claims to be bigger than I know (or suspect) it is, and I regularly recommend others against doing the same. I even recommend people against using my friend, because I don't trust him and won't put my reputation on the line for him.
If they lie about their own business structure, what else do they lie about? If they really were good at anything, wouldn't they make enough money out of doing *that* rather than trying to land jobs they can't handle?
I read a quote somewhere, 'A business is only as honest as its advertising'. |
| Sun 09 Mar | Met you at the Wedding? | Darren,
I think I know you. Do you mean our mutual friend SA? If so, I agree with you about his shenanigans!! |
|
| Books on Digital Filters | Fri 07 Mar | Frederik Slijkerman |
| I need to implement a cut-off filter of an old analogue synthesizer as a digital filter. Since standard simple IIR filters arent good enough, Im looking for a good book on the subject so I could design the filter myself. The book should have a thorough discussion of IIR filter design (second-order and higher) and it should be readable to some extent. :-)
I already own a copy of DSP First by McClellan etc, which is very readable but too simple. Most books also just give a few examples of second-order filters without explaining their design, which doesnt help me much.
Any recommendations? Thanks in advance. |
| Fri 07 Mar | Matthew Lock | Analogue synths used low pass resonant filters for that wah wah effect. |
| Fri 07 Mar | Frederik Slijkerman | I know, but simple second-order resonant digital filters that you find on the web sound too harsh and 'digital'. This is because the peak in the frequency spectrum that they create is too narrow. |
| Fri 07 Mar | Sergio Massara | Pretty good book. And free:
http://www.dspguide.com/pdfbook.htm |
| Sun 09 Mar | Jon Hodgson | Well the first thing is to establish what the analogue filter is that you are trying to emulate. What is the original design (get circuit diagrams if you can) Does it get driven into non-linearities? (that's analogue 'warmth') How does cutoff frequency track through the range (otherwise sweeps will sound different), and so on.
Sometimes the architecture of the analogue filter will make the choice of digital filter pretty obvious (say in the case of State Variable Filters), but the devil is in the details, and the only way to get those is a lot of simulations, measurements and listening. |
|
| Dave Frets over Google | Thu 06 Mar | Zak |
| http://scriptingnews.userland.com/backissues/2003/03/06#weaningOffGoogle
Google buys Pyra (developers of popular Blogger software), and now suddenly theyre too powerful and scary to be trusted?
Its as if Google cant just be a talented and run a good company, they also have to put a smiley face on and make promises to everyone that theyll behave nice and predictably. If not, they must be hatching a plot to become the next Microsoft.
Dave Winer will now use his Scripting.com pulpit to lead a pseudo groundswell of opinion against Google.
Makes me wonder if Joel had to kiss Daves ring before the launch of CityDesk.
John Stossel impression: Give me a break! |
| Thu 06 Mar | John Rosenberg | Newsflash: All companies want to become the next Microsoft. |
| Thu 06 Mar | pb | Google's been garnering ire for awhile now an it just seems to be coming to a head. With Yahoo taking it's 30% of Google's traffic to its newly acquired Inktomi, Overture snapping up FAST (which is more or less usable as a primary search engine) and Alta Vista and Microsoft and AOL with cards to play, I suspect Google's marketshare is near its peak. In fact, they may have waited too long to IPO. |
| Thu 06 Mar | Zak | C'mon, Pb, this doesn't look like something that's been brewing for all that long. I didn't hear this kind of uproar when Google added its News page. It was clear at that time that Google was experimenting with more than search.
Dave enjoyed the influence that blogdom had on Google results ('blogrolling'). As long as the Pyra guys were a tiny outfit and charting a linear course, Dave was pretty comfortable with them.
Now that Google has taken a major stake in blogdom, there may be a shift in the balance of power. From what I can see, what irks Dave most is that he was taken by surprise-- Google crossed a line.
I hope Dave is able to put it aside for a while before over-reacting. It's a bit premature to form an anti-Google crusade. After all, what would be the point? Because Google got became more powerful than Dave wanted them to be? |
| Thu 06 Mar | ummm | That's the way dave winer always reacts. he's worth reading because he usually discusses interesting topics. but he goes all over the place on topics he discusses.
There's even an anti-blog called 'winerlog'. Search for it if you wish to see invective thrown his way. |
| Fri 07 Mar | pb | Uhmmm, yes it has. Stretching back a year or more there have been issues related to paid results, privacy, PageRank adjustments, competition with partners, portalization, news, arrogance, cached pages, renewed search competition, googlebombing, etc. |
| Fri 07 Mar | Konrad | pb, these issues you speak of - why are they considered to be issues? A company can't be everything to everyone, and on the internet, it's difficult for a company that is so high profile not to get attacked by kooks.
At the end of the day, it's a great search engine - my opinion is that it doesn't owe anyone anything. If I've missed the point please illuminate! |
| Fri 07 Mar | Tj | If Google bought one of your competitors, wouldn't you be a bit nervous? Especially if you've been cheerleading them a lot, and now they seem to have a conflict of interest by indexing you but also competing against you?
In the absence of any official word from Google, I'd consider the worst. Before now, it seemed Google's programs were all about increasing traffic to other sites, rather than competing against them. (Aside from other search engines.) |
| Fri 07 Mar | Rob Moir | It seems that people have this problem with other people being too successful. Why is that?
Thats the problem here isn't it? We all like google when they are small but they get too large and all of a sudden we have: 'Hey, look how big that company has gotten. They must be evil now. I can't believe I used to support them, I feel so violated and I must go and wash away the stain.' |
| Fri 07 Mar | Zak | Yes, I would be nervous. But then I'd also try not to inflame the situation until I had a better strategic/business response than 'Google-free Fridays'. Dave is playing the victim.
What Google has done is not at all unusual, it's normal business strategy. Maybe it would've been nice if Google stayed out of the blogging realm, or if they had teamed up with Userland instead of Pyra.
Having seen Google's Pyra-play, perhaps Teoma or AlltheWeb would be interested in an alliance. Not sure if their search algos rely as heavily on cross-linking, though. |
| Fri 07 Mar | MaisOui | Konrad, Google makes me nervous too, and it has nothing to do with success and everything to do with the 'issues' pb mentioned.
No, I haven't stopped using Google (like Dave Winer, I still think it's 'the' authoritative source). But, I'm not thrilled about the amount of data they track about me and my search results, and I worry about what they could do with this data. This is unlike the paranoid ravings of people who worry about banks and tracking of purchases on credit cards - because unlike most banks, Google not only is capable of tracking your search results and matching them to an individual, but can (and is actively working on) draw meaningful conclusions from the results - which they then sell (have sold) to other people. It's like Statistics Canada on steroids, because the info is personally identifiable. I more or less trust Statistics Canada because it is subject to specific guidelines and regulations, theoretically controlled by people I can vote against, and it does not sell personally identifiable information.
I don't trust Google - mainly because I don't think they have any business in tying particular searches to an individual.
I also worry about their increased emphasis on geo-location based searching, which is often annoying if you are looking for something specific that recommended to you by someone who is not in your location, and invisible if you don't know what result set to look for. A heavy reliance on Google long-term gives them the power to turn on and off parts of the Internet depending on where you live (and they have the technology to do it). Again, and based on their actions to date (eg. why do they need to set a cookie that effectively never expires when you visit?), I'm just not sure how much I trust them with that level of power.
As a webmaster, I find the opt-out vs opt-in model of caching to be somewhat annoying (although I like the concept of a cache). Getting Google to update what it has in its index is also like pulling teeth. If there is an article that was modified, changes don't take effect for weeks (if at all), which can lead to many problems.
Google has done a lot of things right - no banner ads, clean interface, fast searching, text-only ads based on context of the search. I don't even have a problem with their analysis of search trends, nor the sale of search trends.
But I think returning results based on your location is a bad thing (unless you specifically turn on that option), tracking personally identifiable information is also bad, as is the lack of any control over the articles I own.
This is why I find myself agreeing with Dave Winer. It's not a new thought (rumblings of discontent with Google have been getting louder and louder for the last year and a half). It also has nothing to do with their success. They could be bleeding money, and I would still be looking for alternatives. |
| Fri 07 Mar | Tj | 'Local shopkeeper urges protest against Walmart, news at 11.' I might like how Walmart saves me from local stores, but in the abstract a free person should be suspicious about successful, dominating entities that can control your world. Google did something suspicious, and it's good to respond, 'Uh-oh, let's think about this and get some answers.' Perhaps Google's entry will actually help the field, and playing a squeaky wheel is the best a blogger can do to bring things along.
If Google was just doing business as usual, Dave is too. |
| Fri 07 Mar | Griz | This has been a common theme for the past 2 decades.
Small company releases decent technology, said company becomes popular, grows and commands increasing influence in the marketplace.
This doesn't bother most folks, but programmers, engineers and computer professionals tend to consist of more rugged individualists than the rest of the population. As soon as the technology is broadly recognized as sufficiently powerful', an undercurrent of fear and distrust begins to emerge.
This group dislikes being 'dependent' on any commercial technology and resents power concentrated in the hand of a single player. Any company sufficiently big enough, popular or successful enough becomes suspect.
I think what happens next is up to Google. As a young company, they probably need to make more efforts at gaining trust. But other than that, I wouldn't go crying about Google not being a flawless or open-source technology.
Everyone wants technology to be like gettin' something for nothin', like rays of sunshine from the sky. |
| Fri 07 Mar | BC | Google has become a competitor to Dave. He's protecting his investments by attempting to minimize the influence of a competitor.
Dave had a huge hand in creating the blogging industry. Used to be you couldn't do much in blogging without having to work with Dave. Now he's facing the difficult situation of having the industry outgrow the influence of any one individual. That can't be easy to see your baby grow up and say it doesn't need you anymore.
BC |
| Fri 07 Mar | programmer | Maybe all companies want to become the next Microsoft ...
But having tried Radio Userland and found it ludicrously buggy and poorly designed, I would have to say that Dave Winer's company is in no danger of becoming 'too powerful and scary to be trusted' (to quote an earlier poster here).
In other words, Dave Winer has ensured that his company will continue to remain small and trustworthy. |
| Fri 07 Mar | TK | I'm reminded of indie music fans. They love their favorite bands but if the bands become popular ... |
| Fri 07 Mar | Flippy the Binhead | He sounds like a sour-grapes whiner to me. Also he seems to suffer from delusions of grandeur as far as thinking he had a big part in making Google as popular as it is. Please... |
| Fri 07 Mar | shrinky | I felt almost kinda a tiny bit sorry for Dave, and then I read the next story about him moving and having to let the gardener and pool guy go.
Life just kicks you when you're down, don't it! ;-) |
| Sat 08 Mar | Stephen Jones | ---'Life just kicks you when you're down, don't it! ;-) '----
Certainly does if you're a gardner or a pool guy. |
| Sat 08 Mar | | Erm. If you actually read about why he's moving, it ain't because he can't afford the pool guy and the gardener.
He's been blogging for ages about how he's going to Harvard to start their blogging program, and as part of that he sold his house (so he doesn't need the pool guy in California to come since he's changing states!), and is throwing out several dumpsters full of accumulated junk. Although I fail to see why this is even relevant to the commentary about Google.
Anyway. Fretting over Google isn't just a Dave thing (as usual he's jumping on a bandwagon that is gathering noise). And, unlike some of the suggestions above, most of the fretting is coming from non-techies at the moment.
I find it fascinating that the concerns being raised are airily dismissed by this group as 'sour grapes' by 'anti-business techie early adopters'. |
| Sat 08 Mar | Robin Debreuil | I didn't realize there were blogs that talked about anything but blogs - I must be missing out. Bloggers do seem to think blogs are hugely important, but that would be the case for anyone if their life consisted of blog feeds talking about how blogs have affected google searches (especially if you use the keyword 'blog' in your search, but then again, who doesn't?).
Google took over the internet, and then tried the news world - but only now, having bought a mighty blogging company, have they crossed the line and shown their true desire for world domination. Ha! That is funny. Please, the tears... |
| Sat 08 Mar | Bored Bystander | Uh, who the hell is 'Dave'? Oh, Dave Winer.
Who's that?
Why, he invented blogging and he runs a (self indulgent?) blog of his own.
Why are people getting irate over Dave Winer and his opinions? Because he's immersed in sour grapes? Or because he's semi successful but has a huge ego?
The way people here are talking, he's manipulating the oil price on world markets, from his blog, for sinister motives known only to the Trilateral Commission. He must have THAT much power.
He DOESN'T? My bad.
Gee, he sounds just like 90% of the people I run into on a local level in the IT business. The techie success track as it seems to me: bitch about unfair, cheap bosses; leave and start company; become successful; then spend 1/2 your energy and time putting down and belittling competitors and people more experienced than you that apply to you for a job at your company. And become incredibly pompous about how your inherent goodness makes you levitate bodily. In other words, become the worst of everyone you hated to work for in the 'before time', but smirk about it as a personal triumph of your own and a failure of others.
Hey, it's what I aspire to. (Joel's missing out on the fun of gratuitous ego stuff and putdowns, IMO... he's stayed a normal human ... huh...)
So, why the hell should I begrudge Dave Winer (whoever the heck he IS?!) the satisfaction of fulfilling the canonical, court-mandated techie success story? I ask you...
And blogs? I read Joel, of course. And Drudge. And a few others. But they are talk and opinions, nothing reliable or substantial, and nothing that can make me a penny. I've checked out blogs. Fulfilling Sturgeon's Law handily, most are 99% CRAP.
And blogs about blogs? Recursion on something of no value is still. ... of no value?
Frankly, I'm much more concerned about: N. Korea or Iraq going upside down pear shaped; my own ability to get the next contract or job; the headlong race of this industry deep into the sewer. For starters.
My advice: find something more substantial to fret over. Something that threatens your livelihood, your personal security, or your life or the lives of loved ones.
There's LOTS of great material out there to go neurotic over, trust me... a thread like this reads like the Slashdot infants pillorying Microsoft or the music industry. |
| Sun 09 Mar | Robert Moir | I liked the comment about trying radio userland and finding it too buggy to use. I did the same, and actually spoke to a friend I knew who worked there about the problems I found, and was told that it was my fault I was having problems.
I don't think that company will EVER see any of my money because of that. |
|
| Any SysAdmins Out There? | Thu 06 Mar | Yoav |
| Id like to read any and all ideas you may have as to my problem:
1. I have an e-mail account in the US and another in Israel.
2. I am ABLE to send e-mail from the Israeli e-mail address to the American address.
3. I am NOT ABLE to send from the US address to the Israel address.
Ive been in contact with both ISPs:
A. The American ISP says that all is configured well on their side and that the Israeli ISP is probably blocking the US IP address.
B. The Israeli ISP says that theyre not blocking anything.
Help!
Thank you most sincerely. |
| Thu 06 Mar | anonymous | It might help if you provided the actual error message or condition. Is the message eventually bounced? Does your client give an error message while trying to send the message? |
| Thu 06 Mar | Stephen Jones | We'll need more details. First of all where are you accessing each email address from. I have a Saudi email address and a Sri Lankan one. When I am in Saudi I can send and receive from the Saudi address and receive but not send from the Sri Lankan one, and vice-versa when in Sri Lanka. This is because if a mail server allows you to access it from another ISP it is in effect running an open relay and is likely to be used as a vehicle for spam, as well as being automatically blocked by most other ISP's.
This does apply to sending messages anywhere however, so if you can send from the American address to everywhere except the Israeli address this is not the problem.
Can other people send to the Israeli address and what error message do you get when you try and send.
If you want, click on my name at the bottom and send me an email with both your addresses and I'll test them out from my end. |
| Thu 06 Mar | flamebait sr. | And there's always seeing what happens when you traceroute (tracert is the micros~1 equivelent, i.e. what you do under windows) and ping from one account to the mail server. |
| Thu 06 Mar | Yoav | When attempting to send a message from the American ISP to the Israeli ISP it appears as if it goes through OK. About 1/2 hours later I get the error message in return:
__________
From: postmaster@YourAmericanISP.com
Subject: Undeliverable Mail
Unknown user: you@YourIsraeliISP.com
__________
Other than that I can basically send to anywhere from the USA address to the Israeli address. And I tried sending to other known addresses on the Israel side with no luck. |
| Thu 06 Mar | Chris | Are you suspecting that your american ISP has blocked Israel addresses? Can you get to Israeli web sites? |
| Fri 07 Mar | Nate | yaov,
have you tried emailing yourself from your israeli account?
or tried emailing your israeli account from a hotmail account or something?
-nmr |
| Fri 07 Mar | Yoav | Here are some of my results:
I cannot send e-mail from the American ISP to addresses that are hosted at Israel's 2 biggest ISPs:
Netvision.net.il
Zahav.net.il
However, I can send to other Israel addresses that are .CO.IL. Maybe there's something wrong with .NET.IL? |
| Fri 07 Mar | Max Crippler | I just got an Idea. look up (over walla.co.il or any other israeli search engine) an israeli site that is hosted on lets say barak or 012. Then find the 'contact us' Email, and send it a test Email. Or better yet, find barak or 012 (or any other) techsupport Email and send THEM an Email. could get you some more leads.
Obviously, the only way to get treated seriously is not to go to the sysadmin on your site provider. They always have something better to do and never really want to help.
Go to customer relations, find the big man, and ask to talk to him and olny him.
Raise your voice and tell him that you have this problem and you need it to be resolved immidiately else they will lose your business. Keep nagging him untill he unleashes his power and get you to talk with people that know their stuff on his side. Not women with nice voices that can only tell you that something is probably wrong with netvision, but that guy with the lispi, ciggarette smoking voice.
From a customer's perspective, you should'nt give a damn for the reason. This is just like not paying for a late pizza. Hmmm.....Pizza... well you get my view. Sometimes you don't need to know the reason, you just need to know that its not working when you paid money for it to work. |
| Fri 07 Mar | Rob Moir | unknown user means it connected to the email server listed as responsible for email at the destination address and it said 'no sorry, haven't heard of that user'. That would suggest the problem was somewhere towards the destination. |
| Fri 07 Mar | Max Crippler | I disagree. I mean, how many times did you get the wrong message?
And if it got all the way to the mail server, while other Emails ARE received, what made this specific Email to be denied? |
| Fri 07 Mar | Stephen Jones | Yoav sent me his email addresses and I've just done a tracert on the Israeli one; it has timed out twice. You can get to Israel but no further.
It looks like a DNS problem for net.il or something similar. |
| Fri 07 Mar | Max Crippler | So could it be just something temporary? |
| Fri 07 Mar | Stephen Jones | Appears so, unless netvision.net.il is dead which I doublt. The tracert still times out at the same place. |
| Fri 07 Mar | anonymous | Traceroute timing out means nothing. Many hosts don't respond to such things. |
| Fri 07 Mar | Yoav | I'm able to send to a number of different Israeli ISPs, inluding 012.net.il. So it's not necessarily a problem with .net.il (which Netvision and Zahav use).
I wish I could just visit these companies and just start beating people over the head. It may not get anything acomplished but it would make me feel damn good. :) |
| Fri 07 Mar | mb | do an nslookup of type=mx for the destination you are trying to reach and see if you can talk to the smtp server directly. i tried one at random (the one with a preference of 100, is that most or least preferred?) and reached it but didn't try to send mail.
how are you sending mail 'from' your israeli isp? from a webmail account or using a 'rich' client (probably over smtp?) |
| Fri 07 Mar | Stephen Jones | ----'Traceroute timing out means nothing. Many hosts don't respond to such things. '----
Nor to ping?
Every site I have ever tried a tracert on has responded if it was up, exept for netvision which is up but doesn't respond to either. Strange. |
| Fri 07 Mar | Yoav | To do an nslookup do I need to be on a Win NT/2000 machine (or UNIX) -- because I'm getting a 'Bad command or file name
error.' This weekend I only have access to Win 98.
- I'm sending mail from my Israeli account via POP3.
- I've tried sending mail from my American account (ReadyHosting.com) to my Israeli one via POP3 and web-based interface that they provide. |
| Fri 07 Mar | Yoav | MB:
OK, I found a webservice where I can run an nslookup type mx
http://www.kloth.net/services/nslookup.php
Netvision's incoming server is:
mail.netvision.net.il
Netvision's outgoing server is:
mailgw.netvision.net.il
ReadyHosting's DNS info is:
ns5.readyhosting.com
63.99.209.103
ns6.readyhosting.com
63.99.209.104
How do I interpret the results (this isn't a specialty of mine)?
Thanks. |
| Sun 09 Mar | Yoav | I believe I found the culprit. I have the same exact problem as the journalist that wrote the following article:
http://techupdate.zdnet.com/techupdate/stories/main/0,14179,2896281,00 .html |
| Sun 09 Mar | Yoav | Revised link:
http://techupdate.zdnet.com/techupdate/stories/main/0,14179,2896281,00%20.html |
|
| project development outlines | Thu 06 Mar | Michael Zuilkowski |
| Anyone know where I can find an outline template to design a softwhere program?
Surely a simple outline cant be hard to find...right?
Does anyone make an outline before writing code? |
| Thu 06 Mar | Sergio Acosta | I don't know exactly what you mean by 'outline', if you are looking for , I suppose you should look for some architectural best practices depending on the kind of software application (desktop, client-server, web, multi-tier, mobile, ..). And for low level (component, class, method) design you should review some 'software design patterns' books and articles.
If you are looking to the software design, you should take a look to UML, a diagraming language used specifically to express software design documents, is both its static (structure) and dinamic (function) point of views.
If you are looking for guidelines to the design process, you may find useful info about the Rational process RUP, which guides you through the stages of a software development process.
I suggest also checking guides about writing functional specifications, which are documents used to fully describe designs for all kind of software projects.
Doing a google search in every one of these topics should give you good hints. |
| Thu 06 Mar | RRKSS | Usually before I start developing I draw a simple picture of the GUI on a piece of paper and write a short functional spec as a guide for when I actually start writing the code. |
| Fri 07 Mar | Practical geezer | So what do you use as the basis for the sketch of your GUI? |
| Fri 07 Mar | Chris Winters | Some Java bloggers I follow are enamored with Java Outline Editor. Hope it works for you.
[1] http://outliner.sourceforge.net/ |
| Fri 07 Mar | Albert D. Kallal | It really depends on what kind of application I am writing, and how large/complex the application is.
I will often write down scribble notes and gather required information. At that point, then one has to sit down and decide what features etc the application needs. It is at this point I then write out the functional spec. Joel has a good article on this at:
http://www.joelonsoftware.com/articles/fog0000000036.html
Next, I will then generally then design the tables. If it is a simple application with only about 10 tables, then I will jump right in and start using the ER tools in the database to draw out the tables. The data portion to me is most important part of my applications. You get this part right, then the rest of application falls into place with little effort.
I actually use the table designs doc to thuw guide me through the rest of the screen designs etc. So, often I will start writing code and some forms without laying out the forms before hand. However, my table designs are almost ALWAYS done before any coding occurs. Hence, my “over all” table designs come right after the requirements and the functional specs stage. So, I do often jump into work without necessary laying out how a form will look before hand. However, those table designs are done first! I use Viso for much of my table layout work.
When you have a larger number of tables, then the design is too complex to make all the tables with the fields names first. My mind can’t work with such a large number of tables and all the details of each field. However, I do still need that top most view of tables. So, again, I still design around the tables and the relationships.
So, I will start on a piece of paper, and start drawing squares. Here is a customer, and they go on tours (ah, two tables now). Here is a inventory part for the tours, (again another square). I will continue this drawing of squares until I have all the parts needed for the appcltion. Sometime those squares will become *more* then one table.
Hence, I will thus start the design process with JUST the table Names. I actually paste up that “HIGH” view of the tables only view on the wall in front of me. I then start to layout forms based on that relationships.
Then, as I actually create the real tables, I then actually print out the ER tables.
So, here is a initial table design made using Viso.
http://www.attcanada.net/%7ekallal.msn/Articles/PickSql/Appendex1.html
And, after further down the design/coding process, you then get:
http://www.attcanada.net/%7ekallal.msn/Articles/PickSql/Appendex2.html
You can read a good portion of my notes I made when I did this project at:
http://www.attcanada.net/%7ekallal.msn/Articles/fog0000000003.html
Much of approach will depend on how complex and what you are creating.
Albert D. Kallal
Edmonton, Alberta Canada
Kallal@msn.com |
| Fri 07 Mar | RRKSS | I usually draw the layout of the GUI with boxes for PushButtons ect. After I get something I like that is easy to use and non confusing I create the GUI in Visual Basic and use that as my final template for the actual software developement. |
| Sun 09 Mar | Practical geezer | That doesn't answer the question.
The question is: what do you base your sketch on.
Not: How do you draw your sketches.
Once you start drawing, you are drawing a (potential) solution. |
|
| New Macromedia.com and Rich Internet Apps | Wed 05 Mar | justAnotherCoder |
| If you havent noticed Macromedia just launched a new version of their site that uses FlashMX through out. Im curious about what people think of the site and about Rich Internet Apps in general. |
| Wed 05 Mar | Joe Grossberg | My initial thoughts are that it's pretty, but ...
* Flash's antialiasing makes small fonts really hard to read, and you can't adjust it to suit your needs. Can you read what this page says? http://www.macromedia.com/cfusion/exchange/index.cfm?view=sn130#view=sn131&viewName=ColdFusion%20Extension&loc=en_us&extID=1002981&lc_id=81434 I have to strain to do so. This page http://www.macromedia.com/devnet/ is much more readable and is less indiscriminate about using Flash, and I can adjust the text size if needed.
* Too many of those damn 'loading ...' messages. Go here: http://www.macromedia.com/cfusion/exchange/index.cfm?view=sn130 (the front page of the ColdFusion Exchange), and it takes almost 10 seconds to completely load (some of this is ameliorated by the fact it's loaded incrementally). The Joel on Software Forum page http://discuss.fogcreek.com/joelonsoftware/default.asp took me about 1.5 seconds, by comparison. (I'm measuring from when I shift-reload to when the progress bar disappears.) And since it's Flash, the whole movie has to be reloaded every time you visit a page, even if there are shared elements. This isn't the case with images.
* Inconsistent UI: some arrows (triangles, more accurately) pop out a menu. Others are links.
I think rich internet apps have their place. But if you use them on a page that doesn't need it -- that's not only overkill, it causes more problems than it solves.
Also, I have the sound turned off on my work computer. That may also have affected my opinion. |
| Wed 05 Mar | Go Linux Go! | Every silver lining has a cloud.
Yesterday, Macromedia released a critical update for Flash.
http://www.computerworld.com/securitytopics/security/story/0,10801,79003,00.html |
| Wed 05 Mar | Patrik | First thoughts:
You need latest flash, You need to upgrade yada yada... I was told by the site when I got there.
Ok then...
The widgets! In my book has always been a problem with flash apps. Flash not only allows, but encourages the use of non-standard widgets. I took me about 30 seconds to figure out the menu-arrow at the top left. Looks like a 'Close Window' icon to me.
The sound-thingy, OK, its cool, but totally not intuitive.
The bottom area of the splash-picture contains hidden navigation. The comboboxes looks non-standard. Stop.
Im for rich web-distributed applications, but I think in order for people to be able to use it on a daily basis, we need to stop using Flash. (or maybe use Flash entirely different). I think the secret to why so many users can use Windows is the widgets looks familiar.
Lets for the sake of the argument assume one thing, we have a user, Lisa. She works at a big company that decided (out of her control ofcourse) that they will make her use this new flashy system on the web. She couldnt care less if its web based or not, she wants to enter her stuff and go home. (This is the most common user I take it).
My wet dream would be enhanced functionality in the browsers; so that you programatically hide the standard menu, toolbar and adress field. This will probably be abused, more on that later.
Then have functionality to create your own menu, for navigation in your web application, that the browser would place where the standard menu used to be. Same with toolbars. Difference here is that each menu item would have a tag to it, so it would actually navigate the web application. Same with toolbars. Each toolbutton would have an to it.
This would give a platform-native look and feel to the navigation of web applications, on Windows it would look like Windows, Mac users wouldnt be lost and all that.
Consistent navigation with HTML or whatever generated content I think is the key to be able to get my Lisa user happy - she doesnt care, and doesnt want to care about learning a new navigation every time.
This altering of the OS native menu/toolbar in the browser should ofcourse be limited to trusted sites. It would work within an intranet or similar, to avoid abuse and total chaos.
Is this stupidity on my part? Feel free to share :) |
| Wed 05 Mar | insert name here | I believe Flash has it's uses, one of them isn't replacing markup.
'Please Use a Supported Browser Your browser (Opera) is not supported by macromedia.com. For the best possible experience, please use the latest version of one of the following browsers:'
I don't care about 'the best possible experience', I care about getting the info I need as quickly as possible, with a minimum of bullshit. Flash just makes things harder. |
| Wed 05 Mar | George McBay | 'Rich Internet Apps' are ok for Intranet type applications, but they cause all sorts of problems when let loose on the general Internet, IMO.
Among other things they make it virtually impossible for a site to be externally indexed in a meaningful way by Google, etc. |
| Thu 06 Mar | UI Designer | I totally agree with the premise that Flash should not be used to replace markup.
You know, I _used_ to think that it would be a great idea to use Flash for an entire website. After all, you only need to write the code once and it looks the same everywhere. That supports it, that is.
Unfortunately, the Flash features overpower the sites' message/information and now you get all this cheesy 'text in motion' to distract you from getting the information you want.
Sure, some sites like http://www.2advanced.com/ look real nice but they tend not to have a whole lot of real info on them.
Compare to http://www.apple.com/ with its HTML minimalism approach and it's much easy to navigate and find what you're looking for. |
| Thu 06 Mar | John Topley | Apple's website uses lots of images and fixed size text which means that it has poor accessibility. |
| Thu 06 Mar | fool for python | I like rich client apps but I don't like Flash MX or any other proprietary product.
xul meets my rich client needs for now. and it's free as in source and beer. and zope handles the back end just fine thank you. ymmv. |
| Thu 06 Mar | SP | Re Apple site:
Some of the pages use fixed font and some do not - anyone know why or is it a browser thing??? |
| Thu 06 Mar | Burney | Macromedia Flash can do just about anything. The danger is that people do such non-standard, poor GUI design or other annoying things just because they can.
However, Flash can do so many things that it isn't fair to make a blanket statement that it should not be used.
-I've used Flash as a simulation tool to show in a simple way complex mechanical interactions.
-It is fairly easy to build navigation into websites (just make sure the navigation makes use of a good, familiar GUI).
-It is the easiest way to include synchonized audio and graphics.
-It is also easy and foolproof to build pages that load consistently across multiple user's.
-You can make some interesting and fun websites like
http://www.chipotle.com/ for example.
If you use the default publishing mode in Flash, indexing will work fine. Also, it helps load times and indexing significantly to break up a Flash site into separate pages.
Flash is such a powerful tool, and not hard to learn to use, that I would hate for people to not use it just because other people build poor websites with it. |
| Thu 06 Mar | runtime |
I think Flash is great, but I don't think Flash is HTML. Flash should be used for its dynamic graphics capabilities, not for text. HTML + Flash can be great.
btw, that Chipolte.com site is very difficult to navigate. You are presented with, basically, a blank screen. You have to use mouse-overs to see each individual menu item. |
| Thu 06 Mar | Duncan Smart | Flash: ...can't use keyboard up/down/PgUp/PgDown to scroll text boxes... nor mouse scroll wheel... brilliant! |
| Thu 06 Mar | fool for python | 'keyboard up/down/PgUp/PgDown to scroll text boxes and scroll whell'
xul does that. |
| Sun 09 Mar | Duncan Smart | Do you want a medal? ;-) |
| Sun 09 Mar | John |
As long as I can't keep flash from allowing popups (ads in specific), I won't install it on my machine. The first time I saw that I was so mad I actually bothered to submit a bug report. Now, if I come across a site that requires flash I don't even bother trying to view it. I'll just go somewhere else. If their site is designed well, there will be an option for non flash users. |
|
| The new offices | Fri 07 Mar | mackinac |
| The new FC offices sound great. Maybe NYC wouldnt be such a bad place to move to.
Some interesting items noted from the picture:
What kind of heat is that? Steam or hot water?
I grew up in a house with hot water heat. It is basically silent. You wont have to be concerned about the air vents sounding like a tornato. OTOH, steam can be noisy due to the relief valves. Is there any A/C?
About the windows: Those look like they can be opened. Is that possible? This building looks rather old, but old buildings have a lot of advantages, like openable windows, if they havent been painted shut. |
| Fri 07 Mar | GML | Yep, sure would like to work for a company that could spring for a living room w/ plasma TV and billiards! Hell, I'd be satisfied working for a business that actually flew people in business class! |
| Fri 07 Mar | Keith Wright | I think that is a steam radiator. I don't know for certain, but I believe hot water radiators have a pipe at both ends. Not that I can tell that well from the picture. Other radiator facts: if they knock, shim up the side opposite the valve. Also, Painting radiators does not insulate the radiator to a significant degree as many believe, but the color you paint it makes a big difference. Dark colors radiate a LOT more heat than do white or metallic colored radiators. |
| Fri 07 Mar | Phil | How comes ? |
| Fri 07 Mar | John C. | Joel's right that you can never have enough power outlets for developer types. Lots of offices I've worked in have been seriously deficient in that regard.
I personally count 17 devices plugged in here at the desk in my home office. Some of those would be going through a UPS regardless, so I wouldn't need actual wall plugs for every one; on the other hand, a lot of them have big brick-type plugs that block other outlets, so it's probably a wash. (How I hate those integrated brick-and-plug combinations! Aaaargh!)
Four outlets per foot sounded shocking to me at first, but then I realized that my 17 devices against an 8-foot section of wall is already >2 devices per foot -- and I'm sure that number will only grow.
In terms of positioning, I really like having at least some outlets at about waist height -- no more crawling under the desk every time you plug in your notebook. |
| Fri 07 Mar | Jay | Those exposed cable holders are awful! It's all relative, though. If there are *already* exposed ceilings, electrical, lighting, and others, then those exposed holders should just blend in. Otherwise, i'd hesitate hanging those up in a nice clean space or office. |
| Fri 07 Mar | flamebait sr. | An exposed cable holder will be really convenient for laying cable, however.
It all depends on architecture. I've seen buildings where the network cabling was out and visible and it looked just fine.
Oh yeah, and you can put a lowered ceiling below the cable holder with no probs to hide it. Which is probably what Joel had in mind. |
| Fri 07 Mar | Joel Spolsky | Ack, I hate hung ceilings! That and flourescent lights evoke the movie 'Office Space' and those kinds of workspaces.
We've got exposed ceilings which have a sprinkler system and will have exposed air conditioning ducts and data wiring. The overall look will be a high tech/mad scientist lab, lots of little cubbies for storage full of old broken computers and stacks of blank CD-ROMs &c. So the ducts with wiring will actually fit right in.
All the windows are new and can be opened. The building is a recent gut renovation of a 100 year old loft building, about 21 stories, we're near the top. Many of the windows have ledges right outside where we can grow tomatoes. |
| Fri 07 Mar | eclectic_echidna | For wiring, run CAT 5 with RJ-45 connectors everywhere, even for telephones.
Have them all run into a patch panel, where you can quickly change a wall outlet from voice to data, etc.
We are putting eight voice/data lines per 8-10'. No more pesky hubs.
Also, label the jacks on the wall and in the phone room. It will save you time and money countless times... |
| Fri 07 Mar | Manuel M. Garcia | I have tried using CAT 5 for phone lines, with limited success. No patch panel; I jerry-rigged an abomination using parts from Fry's.
What patch panel are you using? Manufacturer and model#? |
| Fri 07 Mar | flamebait sr. | Ooooh. I like the mad scientist look. Make sure that you have a Commie 64 / Apple II / TRS-80 / etc. somewhere in the office.
And perhaps some abstract neon art in a hallway or reception area. |
| Fri 07 Mar | Ken Klose | I hate power strips too, but I mostly use them for the surge protection. If you're getting rid of them, make sure surge protection gets built into the central wiring. You can also look at having central power backup. I worked at a chemical manufacturer and every so often you would see an outlet that was orange (instead of the usual off-white). One day I asked the plant engineer and he said they were on power backup (along with a few lights) battery first and then a generator. Name of the company was Tevco http://www.tevco.com |
| Fri 07 Mar | shrinky | Re the suspended ceiling. As a word to the wise, 'Dont't'. At least not if your goal is to have easily accessible cabling. They make cable trays that aren't too visually obtrusive, and the suspended ceiling will look ragged in a few years after cables have been added/moved/removed. Not to mention the tedious process of moving panels around to change the cabling.
As far as the power is concerned, why not go with a wall-mounted tracking system? We have it in a lab here, and are able to move outlets around, should desks be moved. As well, you can have a central UPS feeding power to marked outlets (red in our case). Certainly makes for a neat and tidy solution.
Of course, according the Martha Stewart and generally accepted Feng-Shui guidelines, your power outlet plates should always match the vegetables growing in your window boxes. Tomatoes are vegetables, aren't they? |
| Fri 07 Mar | Prakash S | Do Keep Vastu Shastra in mind when you move into new places (http://www.vastushastri.com/vaastu.htm) |
| Sat 08 Mar | - | Suspended cable trays are horrible.
I work in a broadcast facility, and we have them. After one has more than 30 or so coaxial cables in it--none bundled or dressed, of course--trying to pull new cable or remove old cable is a nightmare.
Because of this, we probably have several miles of dead cable abandoned in our trays. If only it were possible to remove it all and sell it to a recycler...
There's a reason they call it ``cable mining''. |
| Sat 08 Mar | Stephen Jones | Make sure your network cabling is gigabit ethernet compliant even if you aren't going to be using gigabit ethernet yet. |
| Sat 08 Mar | Lou Brothers | On the 4 outlets per foot, remember that stud-walls are built at 16 inches on center (although some builders may skimp on non-load bearing walls in an office and try to go 24 inches on center), so you may need to rethink your specification. If you put two outlets per stud (one on each side), that will get you 4 outlets per 1.4 feet or so, which may be reasonable. Asking for more may cause your electrician to wire using giant boxes (such as double wide boxes usually used for mutliple lighting switches). The problem there is with lots of bricks in double wide outlet you will see it pull the nails from the stud and put the outlet on a slant.
Instead, I see two options, one is going vertical and having 4 outlets per stud - two per side in vertical arrangement - not dead on top of each other or you'll have no room for bricks, allow for a few inches (also to allow for wall plates).
Otherwise you could spec 2 per stud and wall mount a surge protector right there - most quality surge protectors are wall mountable.
Do be aware of your loads though. If you're asking for 4 outlets per foot your electrician is likely to wire each office on the same circuit (easier for him/her). But if you're using several computers, a stereo, laser printer, etc you'll need at least 2 circuits for those outlets. Ideally you'll have every other outlet on a different circuit so you can nest into one area with your electrical goodies and not overload the circuits. Watch your amps!
Also, you can get surge protectors as outlets, but I would rather see the surge protector as circuit breaker (common in jacuzzi installations), its a better investment. |
| Sat 08 Mar | mackinac | In out computer room orange signified an isolated ground outlet. http://www.hubbell-bryant.com/training_files/ig.asp |
| Sat 08 Mar | mackinac | :1 s/out/our/ |
|
| Runtime software evolution | Fri 07 Mar | Jens Gustavsson |
| I am a PhD-student, interested in runtime software evolution, i.e. performing updates to programs while they are running. This is of relevant for software systems with very high availability requirements, for example in phone switches.
Since JoS seems to be visited by a lot of experienced software engineers, it would be fun to hear about your experiences from updating software systems with high availability requirements. How do you handle updating in practice? Is there any kind of technology that is of help? |
| Fri 07 Mar | sedwo | With the QNX operating system, you can stop/unload any device driver or process at any time, update the file, and start it up again. The system picks up where it left off and all is fine. I've heard of QNX systems running for years without ever having to shutdown for an update.
The windows world on the other hand has gotten used to rebooting after almost any update. |
| Fri 07 Mar | gb | Java.
Despite other failings Java provides good language-level support for runtime code replacement. Dynamic class loading 'class.forName()' and the ability to tinker with the class loading mechanism itself make for a clean way to update applications without stopping the VM.
Of course pretty much any language with support for eval() will let you do the same thing, but the mechanism in Java seems well thought out exposed to the developer.
Seems that this type of code replacement in compiled languages would be a lot harder.
Cheers,
Gary |
| Fri 07 Mar | Michael Eisenberg | >Seems that this type of code replacement in compiled
>languages would be a lot harder.
Harder, yes, but not impossible. In C++, using LoadLibrary() in combination with class inheritance will yield much the same result. That is, any behavior that you anticpate changing at runtime gets handled through a base interface that can be implemented in multiple ways, and you can choose the particular implementation to use dynamically.
This requires careful planning, but so does the Java way, it seems to me. |
| Fri 07 Mar | UpAndDownTheCityRoad | Heh - those $155 million dollar architecture astronauts at Groove Networks have done this in a manner that allows a user to dowlnoad apps from seveal third parties across the web and integrate them into a collaborating whole new application customised for the job the user had in mind!
Oh, and check for updates as well! |
| Fri 07 Mar | Rob Daugherty | Reliability in telecom systems is often achieved by distributing the software among two or more identical hardware components, any of which can be booted without affecting the operation of the application. So, you simply install the updates on one component at a time until the entire system is done. My experience is with telecom databases, where this is a good strategy. With switches, you might have more hot-plugging of modules going on. I'm not going out on a limb to say that, in practice, even the simplest update strategy is hard to get right! Good back-out procedures are important, and often overlooked. |
| Sat 08 Mar | Robin Debreuil | .Net has great support for this with app domains. You can drag a plugin into a directory and it automatically becomes available, or drag it out and its gone. Very nice...
Webservices are another thing that are somewhat related, and perhaps the next step architecturally... |
|
| Microsoft's future plans | Fri 07 Mar | sherlock_yoda |
| Hi guys,
Have any of you read the following article:
http://www.aaxnet.com/editor/edit029.html
It paints a rather frightening vision of Microsofts upcoming business strategy.
I am neither technical enough or well versed enough with whats happening in the industry to judge the credibility of the article. Id be very interested in other peoples opinions.
Please take the time to read the rather long article, before you just post, oh, its just another Microsoft bashing site. It seems rather better researched than that.
Cheers,
Sherlock |
| Fri 07 Mar | Andres | You can read other people's opions a few threads below this one, 'MS road ahead' or something like it |
| Fri 07 Mar | Just me (Sir to you) | Oh, it's just another Microsoft bashing site, and not a very clever one at that. |
| Fri 07 Mar | Rob Moir | Just because someone uses a lot of words and links to a lot of speculation in the press, that doesn't make them well researched. |
| Fri 07 Mar | Marc | Sherlock,
This guy is about as unbiased about Microsoft as the US President is about Iraq. Well, Bush might be a bit more open minded.... Need I say more? :) |
| Fri 07 Mar | JRay | That guy compiled tens of articles I read during these last months in some kind of 'specialized' IT press. And as any good citizen, he believes that all what is written in magzines and newspapers is true. So why blaming him?
1 hour reading his article was just another 1 hour lost in my life. By the way, I feel the same each time I read ZD publications (be sure, I receive them for free :) ) |
| Fri 07 Mar | Stephen Jones | The guys a Linux programmer so he's no more going to be advertising the opposition than GMC are going to be seen saying nice things about Honda.
His article gives a reasonable summary of the state of IT for those who haven't been keeping up with the press, which is where he takes all his articles from.
He's certainly correct about the mess MS has got itself into with VB and .NET
Where he goes wrong with Longhorn is that he actually believes Microsoft which is where the info is coming from.
And to be fair to him he does state that the plans for Appplication Servers are not likely to get off the ground.
The discussion on the issue is in another thread further down. |
| Fri 07 Mar | Marc | One thing to note, he isn't a Linux guy. He is an O/S2 guy. And if you love O/S2, then being bitter is par for the course. |
| Fri 07 Mar | Stephen Jones | He seems to have given up on OS/2 now if you look at what he says about it. It is pretty clear he's touting for Linux business. |
Fri 07 Mar | Jeff |
He's certainly correct about the mess MS has got itself into with VB and .NET
What mess is this? People can continue to use VB6. |
| Sat 08 Mar | Stephen Jones | The mess with VB is as follows.
VB.NET code is not compatible with VB6. Moreover not only is the IDE very different but the diffferences between the languages are not trivial; as a result you are basically having to learn a new language, with the added problem that it is still close enough to VB6 to cause negative transference problems.
On the other hand Office still uses VBA, which is VB6, and there is no plan to port it over to .NET until 2005 qat least.
So you are now faced with either writing code in a lnguage that has reached the end of the line, or in a new language whose take up is more than doubtful.
And if you are new to programming you have to decide whether you are going to learn VBA/VB6 or VB.NET.
Also the route into programming tens of thousands have taken through Excel or Access to macros to VBA to VB is now brokent. |
|
| Book recommendations | Thu 06 Mar | Jimmy Chonga |
| I have been asked for recommendations for books on two topics which I cant say Ive ever come across a worthwhile tome. If you were asked to give the best-of-the-best book recommendation covering UML and ER modelling, for a group of seasoned professionals (in object oriented advanced programmed) who just havent had the inclination or time to use the given technologies and would like an executive summary without wasting time explaining inheritence and object oriented philosophies, what would you recommend?
Executive summary: What are the best books covering UML and ER modelling for advanced developers.
Thanks! |
| Thu 06 Mar | Herbert Sitz | The book I'd recommend isn't specifically about UML or ER. Instead it's about an alternative to ER modeling, 'Object Role Modeling', or 'ORM'. The book is called, 'Information Modeling and Relational Databases' and it's by Terry Halpin, the main guru on ORM.
The book isn't a quick read. It's written in an academic style, but is really a beautiful piece of work. First 300 pages or so deal with ORM specifically. Then there are chapters dealing with ORM and UML and how ORM compares to ER.
The free VisioModeler tool that you can find on the Microsoft website somewhere is an ORM tool, as are the data modeling tools in Visio Enterprise. The documentation provided in the free download of VisioModeler is also an excellent place to start with ORM.
Might not be quite what you're looking for. But I thought I'd throw this out there anyway, in case you were interested in looking at it. ORM is really wonderful. And the Halpin book is really an impressive piece of work. |
| Thu 06 Mar | Rich | If you are looking for a short, concise book on UML, my hands down choice would be: UML Distilled: A Brief Guide to the Standard Object Modeling Language (2nd Edition) by Martin Fowler http://www.bestwebbuys.com/books/compare/isbn/020165783X |
| Thu 06 Mar | Sergio Acosta | I second the recomendation on ORM instead of UML or ER.
It should be the software architect/business expert tool to database modeling from a conceptual point of view, leaving UML and ER for technical specification at later stages.
The book is a bit thick though. I recomend reading Halpin's papers from his website first: http://www.orm.net/ |
| Thu 06 Mar | Sergio Acosta | '... instead of UML ...' for database design, I meant.
By the way, UML Distilled is also the one I like the most as an intro to UML. It focuses not only in the tool (UML) but describes the transition between conceptual->specification->implementation desing process. |
| Thu 06 Mar | ORM fan | I'll third both the ORM recommendation and the Fowler UML book. The conceptual modeling approach Halpin uses is just incredible. Like the others said, though, getting through the material is sometimes daunting. |
| Thu 06 Mar | raindog | I agree with recommendations above.
...and have an anti-recommendation. Don't buy 'UML in a Nutshell' by O'Reilly. Usually, O'Reilly books are my first stop when researching new things. I have about 20 of them, and they are all excellent... except this one, on UML. It's poorly written, and looks more like a review of UML specification than like a book. If you need a basic book on UML, buy the 'UML Distilled' instead. |
| Fri 07 Mar | Andy | I'd really recommend Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design, and the Unified Process. It might be a little too much for people who aren't motivated to learn, but its a great book.
More info:
http://www.amazon.com/exec/obidos/tg/detail/-/0130925691/
Cheaper price:
http://www.bookpool.com/.x/7riqkr6md0/sm/0130925691 |
| Sat 08 Mar | ODN | I'll fourth the ORM recommendation. Terry Halpin's Information Modeling book has great coverage on ER and UML, including the shortcomings of both.
If you want to read some of his UML analysis without buying the book, he has plenty of coverage on his website:
http://www.orm.net/uml_orm.html |
| Sat 08 Mar | ODN | Another interesting book covering ER, UML, and ORM is Requirements Analysis: From Business Views to Architecture by David C. Hay. He seems to feel that although ORM offers advantages that you don't get anywhere else, ER modeling is preferable for its visual conciseness. I'm not sure that's really so much of an issue since the current ORM tool has round-trip ORM-to-ER modeling, allowing you to have the expressiveness of ORM when you need it, and the conciseness of ER, all in the same 'model'. |
|
| web archive site | Thu 06 Mar | Will |
| Hi,
Im setting up an web article archive site for a client. Users should be able to search for articles, view an abstract, then click purchase and have it added to a shopping cart.
Im debating buy versus build (or buy and modify). The client has asked me to look first at existing solutions before proposing to build something.
Anyone familiar with software that will take care of this? My guess is that most web sites use custom code, but Id appreciate any recomendations on existing solutions. |
| Sat 08 Mar | Brian R. | Have you shot an email to Joel.
I don't know exactly what Fog Creek SW does, but why not ask someone who is more of a verified expert, like Joel? |
|
| convert j2ee application into a web service? | Wed 05 Mar | sancha |
|
how to convert a j2ee application into a web service? Are there any process/paradigm/methodology available?
pls reply ! |
| Wed 05 Mar | Tal Rotbart | So far, the best tool that I've used for exposing Java interfaces via Web Services is GLUE, by The Mind Electric http://themindelectric.com/ .
Its as easy as Registry.publish('myWebService', myWebServiceInstance);
Enjoy |
| Thu 06 Mar | Walter Rumsby | Anything is 'theoretically' possible, although it depends what you mean by a J2EE application (J2EE is not just EJBs).
GLUE, Apache SOAP (and platforms built on top of it - eg. IBM and Oracle) allow you to turn a stateless session bean into a web service pretty simply. If your J2EE application is an EJB application that exposes session facades then it should be pretty easy to turn that into a web services application.
I'd second the recommendation for GLUE, although I believe that you need to buy the professional release (standard is free) to allow you to expose EJBs via a web services interface. I've been using Oracle SOAP (essentially Apache SOAP) recently and it's not really that painful (just stay away from JDeveloper/JBuilder), so if you want a cheap alternative head over to http://ws.apache.org/ |
| Thu 06 Mar | Walter Rumsby | Sorry 'free' alternative. |
| Thu 06 Mar | Don Forth | I'm currently using Apache Axis to expose an EJB as a Web Service and one thing you should consider is the purpose of the Web Service versus the API you have available for exposure.
Existing APIs in your application are not often suited as a Web Service. Things like State and object representations can overly complicate what should be a simple service. |
| Sat 08 Mar | sancha | thanx a lot.
Could u pls list the process involved in that case, my application involves a simple client-business-server-side logic.
i think what mind-electric provides is nt technically a web service, since it appears more static!
wht the present jwsdk does is to build a web service from scratch, but i m looking for something which can allow me to change a j2ee application into a web service(inthe lines of soap,wsdl,uddi)? hope u understand. |
|
| VB6.0: How to handle an error in Form_Load | Tue 04 Mar | LearningVB |
| Given
====
MyForm.frm
MyForm.frm has
===========
Public Function OpenForm As VbMsgBoxResult
On Error GoTo ErrorHandler
Me.Show vbModal
OpenForm = m_mbrResult
Exit Function
ErrorHandler:
...Warn user of error and handle gracefully...
End Function
Private Sub Form_Load()
On Error GoTo ErrorHandler
code that could raise an error
Exit Sub
ErrorHandler:
...DONT WANT FORM TO DISPLAY TO USER...
Exit Sub
===
If code inside Form_Load raises an error, I dont want to display the form.
At first I tried Me.Hide inside of the ErrorHandler of Form_Load, but it doesnt Hide the form.
Next, I tried Unload Me inside of the ErrorHandler of Form_Load, and the form does not display (good). BUT, this in turn raises its own error Object was unloaded (bad).
Im not savvy enough to know anything besides Me.Hide or Unload Me. And if Unload Me is raising an error if called inside Form_Load, I would think that I would want to find an alternative (besides putting On Error Resume Next right before the Unload Me call).
Advice appreciated (plus, this might actually be a semi-interesting question; as opposed to the I KNOW how to make forums better than you bravado). |
| Tue 04 Mar | Matthew | LearningVB,
I recommend you check out:
http://peach.ease.lsoft.com/scripts/wa.exe?A0=visbas-l
As a VB forum, its one of the best around.
For your specific question, the simplest solution is to move the code from the Load event to the Initialise event.
Unlike the Load event, errors in the Initialise event 'bubble up' as you are probably expecting. You can thus catch the error in the calling code.
Note that I also assume you have set your Startup Object to Sub Main rather than a specific form. I won't go into details of why that is a good idea here - but you should do it...
Seeya |
| Tue 04 Mar | LearningVB | Matthew,
I will check out the link you sent. Thanks!
As for moving the code from the Load event to the Initialize event, I do not see what that buys me.
The code that could fail inside of Form_Load calls a utility function that opens a database and retrieves data from this database so that the form can display this info in a listView (and these utilty functions take the listView control on the form as input).
When Initialize is called, the form hasn't even been 'Shown' yet (Initialize occurs as MyForm is instantiated; Me.Show happens in MyForm.OpenForm). So I wouldn't be able to move the code to Initialize because I need the forms controls in memory.
Also, It's not that the Load event doesn't 'bubble up' errors to the calling function, it actually does do this (because Me.Show is called inside MyForm.ShowForm). It's the fact that when I try to unload the form (by calling Unload Me) inside of Form_Load, this in turn creates another error. If an error happens inside Form_Load, I don't want it to bubble up. I want to close the form and not re-raise this error to the calling function (which in this case would be MyForm.OpenForm). But when I call Unload Me, this causes a 2nd error (Object was unloaded) that would get raised to the calling function (unless I put On Error Resume Next).
I'm not entirely sure what this means:
'Note that I also assume you have set your Startup Object to Sub Main rather than a specific form. I won't go into details of why that is a good idea here - but you should do it...'
This project is quite complex. The form that I speak of (MyForm <- it's not actually called that) resides in a DLL. MyForm.ShowForm is called from another DLL, and that DLL is a plug-in to a 3rd party application. I guess I really haven't paid attention to the Sub Main at all. That's happening inside some 3rd party app that is making calls into our DLL's. |
Tue 04 Mar | Matthew | LearningVB,
When Initialize is called, the form hasn't even been 'Shown' yet (Initialize occurs as MyForm is instantiated; Me.Show happens in MyForm.OpenForm). So I wouldn't be able to move the code to Initialize because I need the forms controls in memory.
You didn't mention that. ;-)
If that is the case, move the code into the OpenForm method. Instead of:
Me.Show
have:
Load Me
Me.Show
all inside your OpenForm method.
Also, It's not that the Load event doesn't 'bubble up' errors to the calling function, it actually does do this (because Me.Show is called inside MyForm.ShowForm).
I won't waste everyone's time here by posting code and showing what I mean. But if you pop over to the VISBAS list (which I mentioned in the first post) we can discuss it there.
This project is quite complex. The form that I speak of (MyForm <- it's not actually called that) resides in a DLL.
You didn't mention that. ;-)
Seeya |
| Wed 05 Mar | LearningVB | Matthew,
I just registered and I was browsing the archives (before posting). But I'm going to post. Hopefully we can pick up on the thoughts you ran by me here...there!
Thanks. |
| Wed 05 Mar | Justin | As an aside, Learning, don't forget that your error handler needs to only create user messages when it is appropriate to do so. All the Error_Handler: routines everywhere else should store the error somewhere for later display.
This is particularly important for things like ActiveX DLLs, controls and services which have no user interface.
Private Function blnSaveFile(ByVal vstrFileName As String) As Boolean
On Error GoTo Error_Handler:
If Not blnDoSomething() Then
Err.Raise nnn ' Where nnn is an application error you define
End If
Error_Handler:
' Call library function which displays error message
HandleError Err.Number, Err.Description, 'MyForm', 'blnSaveFile'
End Function
Private Function blnDoSomething() As Boolean
On Error GoTo Error_Handler:
Error_Handler:
' Call library function which stores the error somewhere
RaiseError Err.Number, Err.Description, 'MyForm', 'blnDoSomething'
End Function
Of course there are lots of ways of doing this (try, catch, finally etc). |
| Wed 05 Mar | John Topley | Try, catch, finally in VB 6.0...? |
| Wed 05 Mar | Pete Robinson | I don't know if this will be of any use to you but it is often better to generate an instance of a form rather than show the 'global' instance ie.
rather than
frmData.show
use
dim frm as frmData
set frm = new frmData
load frm 'form_load fires
frm.init 'init any data on the form
frm.show 'vbmodal ?
unload frm
set frm=nothing
this won't help with errors in form_load but gives the opportunity to keep form_load simple and moves the potential for errors into a sub which will bubble the errors up for you ... |
| Wed 05 Mar | Justin | *Sigh*. No John, its hand coded.
I just stuck the appropriate Try_, Catch_ Finally_ labels into the code with appropriate On Error statements [Flexes muscles - Yes! I am the FudgeMeister].
The main reason for doing this is that the site I'm currently working at uses this coding style for error handling to make porting to .Net easier. I'll take their word for it as my .Net is still immature. |
| Wed 05 Mar | RRKSS | Why don't you set the form's visible property to false and then after you have done everything you need to do in the Form_Load Subprocedure you display the form. |
| Thu 06 Mar | Daren Thomas | in fact, an error in form_load is just what you want. how else would you find out, if the form was correctly loaded or not?
alas, your form seems to be being implicitly loaded _before_ you call OpenForm. that's why the error doesn't 'bubble up'.
since your form is inside a dll allready, try making it private. code a proxy class to access those parts of the form you are interested in exporting. handle the form_load-error in the proxy class.
btw: read the 'On Error Goto Hell' article in the msdn library. it will help you write better error-handling schemes. |
| Thu 06 Mar | Ged Byrne | LearningVB,
Have you tried acquiring your resources before loading the form, then passing them to the form via property sets.
This way all of the contentious code is executed and tested ok before you load the form.
Public Function OpenForm As VbMsgBoxResult
On Error GoTo ErrorHandler
Me.Show vbModal
rs = getRecordset()
... make sure rs is good before proceeding
Dim frm as MyForm
frm = new MyForm
frm.setRecordset(rs)
OpenForm = frm.getStatus()
Exit Function
ErrorHandler:
...Warn user of error and handle gracefully...
End Function |
| Thu 06 Mar | LearningVB | Hello all and thanks for the input. I hate it when people start programming question threads and then don't come back with their eventual solution. So I'm back (for those that might be interested in my solution --- *crickets chrirping* -- *can hear a pin drop*).
Just a little more background. In an effort to make the code more robust (I didn't originally write this code -- I was working on the business logic dll before this UI dll), I was going through all the UI code and adding error handling routines (we use HuntERR's stuff). The project is winding down so I'm kind of performing-a-code-review/refactoring/unit-testing while the oringinal UI programmer is QA'ing the solution (we are a small company, so us engineers pretty much architect the solution, program it, then QA it).
Anyhow, I went with a variation of Matthews suggestion.
>>>>>
Load Me
[code that used to be in Load Form]
Me.Show vbModal
>>>>>>
Pretty much all the forms in this UI dll have code inside of the Form_Load event, so I was hoping that I could figure out a way to abort the loading of the form there (no dice). So I will have to re-factor all the forms in a way similar to this code (its probably not a good idea to put code that could fail inside Form_Load anyway!):
Public Function OpenForm() As VbMsgBoxResult
On Error GoTo ErrorHandler
LoadProjects
Me.Show vbModal
OpenForm = m_mbrResult
Exit Function
ErrorHandler:
ErrorIn 'OpenForm'
End Function
Private Sub LoadProjects()
On Error GoTo ErrorHandler
m_mbrResult = vbCancel
Load Me
[boring code that could fail]
m_bIsProjectsLoaded = True
Exit Sub
ErrorHandler:
ErrorIn 'LoadProjects'
End Sub
Private Sub Form_Activate()
On Error GoTo ErrorHandler
If m_bIsProjectsLoaded = False Then
Me.Hide
'Assert that the OpenForm Sub is used to Show form
Err.Raise ERR_INVALID_FORM_DISPLAY, , _
GetErrorString(ERR_INVALID_FORM_DISPLAY, _
'OpenForm')
End If
Exit Sub
ErrorHandler:
ErrorIn 'Form_Activate', , EA_NORERAISE
HandleError
End Sub
Private Sub Form_Unload(Cancel As Integer)
m_bIsProjectsLoaded = False
End Sub
====
The solution works great. It's simple and elegant. Also, it didn't take too much time refactoring (just added the Form_Activate stuff and moved the code outside of Form_Load. simple!) |
| Thu 06 Mar | LearningVB | Darren said,
>>>
since your form is inside a dll allready, try making it private. code a proxy class to access those parts of the form you are interested in exporting. handle the form_load-error in the proxy class.
>>>
I'm sorry this caught my attention. That seems like a level of complexity that isn't necessary. Do you do something like this often? Also, I'm not sure I understand the 'parts of the form you are interested in exporting' comment. Could you elaborate (cause I am curious)? I really just want to open a form and have the user select something from a listview.
I will try and find and read the 'On Error Goto Hell' article. Thanks! Although we use HuntERR's error libraries, so I think you need to use On Error GoTo ErrorHandler (all the HuntERR samples used this). Of course I could be wrong (This project was the first time I've used Visual Basic -- I've used mostly C++ -- so my VB experience is now 4,5 months?)
btw: read the 'On Error Goto Hell' article in the msdn library. it will help you write better error-handling schemes. |
| Thu 06 Mar | Chris | If you want to stick with handling the error in the form load (not recommended) you can use the following hacky solution:
Inside your Form_Load error handler call Unload Me. That will raise another error (err.Number = 364 'trying to unload a loading form'). Then you can gracefully handle that error in the error handler section of the code calling form.show. |
| Sat 08 Mar | Albert D. Kallal | There is a natural flow to most applications.
You call up a form to load some invoice or whatever.
When the invoice form loads, perhaps the invoice number passed does not exist. Perhaps the record requested is locked, or UN available. There generally a good number test and conditions that is often need to be met when the form is loading. Any failure of any of those conditions should allow the form to bail out, and not actually load.
Ms-access for example has both a on-open event, and a on-load event. The on-open event of course has a cancel flag for just the above scenarios. If the on-open event is canceled, then the on-load event of the form thus does NOT run. The form is never loaded, and the user never sees the form. If the on-open event of the form is NOT canceled, then the on-load event of course runs. Thus, setting up field defaults and other general stuff goes in the on-load event. The on-open event is where you test for legal conditions and things to prevent the form load (such as locking etc etc etc).
A good form design obviously needs a cancel event that does cancel the form load based on many conditions. The designers of ms-access certainly thought so, and thus provided a on-open event with a cancel feature.
It makes a lot of sense of what the original poster here wants to do. It is obvious requirement, since products like ms-access have this feature built in.
A nice clean way of canceling the form load is needed. Doing so allows the code to cancel the form to stay in the form, and not the code that calls the form.
Albert D. Kallal
Edmonton, Alberta Canada
Kallal@msn.com |
|
| New Office Wiring | Fri 07 Mar | trollbooth |
| [we need three times as many power outlets as anyone would think. Im sick of power strips. I have ten things plugged in right at my desk. I specified 4 outlets every foot, is that absurd? ]
Not at all. One of my many hats I wore before programming was as an electrician/journeyman and most of the commercial buildings we worked on would specify such requirements. Most of them were either bio-tech firms or trading firms. I would suggest you look into using raised floors if you want to run a ton of wiring, most of the trading floors we did used just that. Although its more expensive it is worth it if you run a lot of wires to the center of your rooms. If you dont need your wires going to the center of a room then I dont think the cost would be worth it and youd be better off just using wire strips to cover the few you have with adequate wire ducting/piping in the walls.
So basically what Im saying is you probably could contact a good local electrician and accomplish what you want, fitting out the location you have chosen. |
| Fri 07 Mar | Heston Holtmann | Right now I have 10 electrical devices plugged in spanning 2 power-bars and I predict I will need more power-pars in the future. |
| Fri 07 Mar | mackinac | It is hard to have too many outlets. I managed installation of a computer room several years ago. We didn't ask for that many outlets, but did need quite a few. In the computer rooms many of the outlets were under the raised floor.
In addition to number of outlets, you need to think about how they will be allocated to circuits and the current capacity of each circuit. Also, try to get the outlets labeled with circuit ID so you don't overload one.
In the computer room we also needed large capacity 20 amp and 30 amp outlets for the VAXes. But there isn't much need for those with standard desk PCs or even workstations. |
| Fri 07 Mar | Nat Ersoz | Sounds like a helluva lotta fun - designing your new digs. :) |
|
| Search Engines | Fri 07 Mar | UI Designer |
| Suppose I am planning a 500 mile trip between say Atlanta and Orlando down I75 and I want to use a search engine to show me all the Starbucks or Seattles Best Coffee shops within 3 miles of I75.
Or I want to search all of Shakespears works for any occurance of the word King providing its within 5 words of the word Queen.
Are there any search engines with this kind of capability? |
| Fri 07 Mar | Tom (a programmer) | In the UK, Scoot provide this kid of functionality... www.scoot.co.uk
Up My Street also provide information by postcode... www.upmystreet.com |
| Fri 07 Mar | Tom (a programmer) | OK, so it's not roads.
I think altavista et al. used to offer a 'x nr10 y' kind of search... *looks* ...
You can use a boolean search with NEAR, if that's any use. NEAR is defined as within 10 words. |
| Fri 07 Mar | Simon Lucy | How many words do you get to the mile though? |
| Fri 07 Mar | Simon Lucy | To be a touch more serious.
Both uses of 'near' could be accommodated in the same search engine but only if the concept of near and object were abstracted a great deal.
For instance, in a body of text you can store the word position of each indexed word and from that discover all the words local to it within the distance required.
In a geographical database, instead of physical position within the text its the physical location of the object itself, more like which shelf is the book on in relation to other books. Routeing theory is just an additional process to get to that point.
These are the kinds of problems I'm thinking about at the moment, how to create an abstracted knowledge object with sufficient plasticity to be useful without being overly complicated. |
| Fri 07 Mar | Brian | I've seen a map site that would show you things near your path, but I have to question the utility. If I'm planning a trip (what was the original, Atlanta to Orlando? I wish I could see previous comments while writing this one), am I really going to search for coffee places along the way, print out the results, and consult this along the way? No. I'm going to drive until I get hungry, and pull off at the next promising-looking exit. It's not great or modern, but it's good enough and easy.
If my car had a GPS system that could locate restaurants or coffee places, yes I would probably use it. But I would not use a search engine to do this.
As for word proximity searches: Doing this increases the comlexity of the search, and to a lesser extent the search interface. A search that's simply if a document contains two particular words is just an and of the indexes. But a within requires you to know the locations of all the words.
Our document imaging product allows this type of search, and we actually have Shakespeare's works indexed online. There are 28 instances of 'king' within 5 words of 'queen' in the text of Hamlet (some of them are character lists and the like).
HAMLET: [to GUILDENSTERN]
Why, any thing, but to the purpose. You were sent
for; and there is a kind of confession in your looks
which your modesties have not craft enough to colour:
I know the good king and queen have sent for you.
Our interface doesn't support this type of search directly, but allows documented 'advanced search' queries like google. For this search, it's 'king ^5 queen'. Check it out: http://atlantis.laserfiche.com/index.asp?LeftPaneType=SearchForm&dbid=0
|
| Fri 07 Mar | Lucien Van Elsen | Delorme's Street Atlas USA is handy for this sort of thing -you can load the entire database onto disk, and hook it up to a GPS. Besides showing where you are and speaking directions, it can also periodically run a query to show all of the (gas stations/hotels/hotels/etc) within a certain radius of where you currently are.
It's especially handy for longer trips off of the main routes, where you don't have the limited exits and services marked at each one. If you want to enjoy a cross country trip using the roads that connect nowhere to nowhere and have an alternate that gets you there faster, this helps more than a compass- |
| Fri 07 Mar | eclectic_echidna | Save your money.
Buy an espresso machine.
http://www.nespresso.com |
|
| Automating software testing, tools/howto? | Fri 07 Mar | Javier Jarava |
| Hi all!
Ive been having a look around the archives, and though Ive found quite a lot of info, I still havent got a clear answer to my doubts.
In my company were developing software that is both extremely low level (I/O and network filter drivers, customized windows logon dlls and such like) and client / server (integrated into Active Directory and with GPOs). Up to now weve used a manual testing metodology, that is, install both server and client components, and manually exercise them to see if they break.
As a side-product of the testing weve done, we are in the process of developing a fairly comprehensive test tree, ie, a set of features to test and interactions between them (such as if A fails, then B and C cant be tested, but D can). Wed like to try make this into something a little more systematic and, specially, automated process. I am quite confident that there must be some way / testing framework / tool that might help in the process.
The first thing wed like to do is to be able of generating a comprehensive list of test to make, ie. from the requisites and interactions tree mentioned before, to be able to parse the tree - there must be some better term, Im sure - to get a list of the specific tests we have to make to be sure weve covered a certain set of features to test / failures to verify.
Ideally, we should be able to load that list onto some testing software so that the testing is made automatically (in that way were sure we dont miss a test).
_ANY_ help and/or pointers to possible resources will be more than welcome. From searching the web Ive found quite a lot of academic studies on software testability, and theory of individual component testing, but I havent been able to find a comprehensive testing solution. Maybe there is none, but....
Thanks a lot... |
| Fri 07 Mar | Brent P. Newhall | Here's a Wiki page on the subject; scroll to the bottom for a whole bunch of links:
http://c2.com/cgi/wiki/wiki?UnitTest
And here is a huge list of Testing Frameworks in various languages:
http://c2.com/cgi/wiki/wiki?TestingFramework |
|
| 'helping out' | Fri 07 Mar | posting chicken style |
| To what extent do you feel someone ranked as a senior programmer, should assist the company he works for in tasks which are probably not applicable to his role?
In the last 2 months Ive written <10 lines of code, spent a long time helping a test team by running incredibly long & dull test scripts, cross checked bugs between development and released versions of a product, been responsible for organising and implementing releases, currently checking a load of crystal reports report thingys to see if a certain field has x decimal places...
Whilst I dont mind lending a hand occasionally, eg after a few months dev work a couple of weeks helping a test team is just good team playing ...
but where do you draw the line?
(especially since the job market is none existant and there isnt a lot of interesting work in the company anyway?) |
| Fri 07 Mar | Mathematical Dunce | It only matters if doing these other things gets you frozen out of any genuine development that comes up.
Otherwise you could just try being relaxed about being paid over the odds to do grunt work.
Leave when you find a job that gives a better balance between being interesting and being paid (where that balance lies is up to you).
Personally, I do everything from new development to watering the plants and locking up on the way out. |
| Fri 07 Mar | Matt H. | >(especially since the job market is
>none existant and there isn't a lot
>of interesting work in the company
>anyway?)
Right now, there's an oversupply of people who want to work in technology - but there is _always_ a market for world-class coders. If you are world class, don't fool yourself into thinking that the market stinks.
Good people have a tendency to rise to the top despite a hiring slowdown.
That said, I'd talk to management about it. It sounds like you're moving from a coding role into a QA management role. That would be fine by me if they wanted to pay me for it.
A big part of the issue is how much you feel you are part of the company, and the size of the company. In a smaller company, I've always felt that my job was to help the company reach it's business goals, and the heck with my title. I've always been a coder, but I've done DBA work, QA work, a little bit of Management-ish stuff, and, uh ... I guess 'Consulting' to other departments. And lots of process improvement.
If you love the company and want to see it flourish, well, you do whatever it takes.
On the other hand, if you aren't happy, and 'whatever it takes' is less 'What I think notice needs to be done' and more 'grunt work my manager gives me', and the job isn't meeting your needs, well ... it may be time for a talk with management. And, if you try to work it out and nothing changes, it may be a time for a move.
Regards, |
| Fri 07 Mar | mackinac | Why do you believe that there is a market for world class coders? This is one of the statements that are repeated on this discussion board but never with supporting evidence. Can you give some examples to support that claim? |
| Fri 07 Mar | Matt H. | http://www.joelonsoftware.com/articles/fog0000000050.html
http://www.joelonsoftware.com/articles/fog0000000074.html
You may to move, you may have to network, but the bottom line is ... find people that understand the above articles and work for them. :-)
regards, |
| Fri 07 Mar | Practical geezer | In fact, no more than ever, there probably isn't.
At least at those companies who don't understand anti-cyclic investments and general business continuity.
They tend to 'reduce costs' and reducing costs does not mean getting more bang for the buck, but simply spending less bucks.
Whatever happens as a result, which is usually spending more to repair damage done, tends to escape their attention.
So their may be a market for first class coders, but only if they come really really cheap.
But maybe I'm just too cynical... |
| Fri 07 Mar | Practical geezer | I meant to say, 'now more than ever ...'
And my reply was of course not to Matt's second message, but to mackinac. |
| Fri 07 Mar | Mikayla | Matt's totally right, but those companies are gems. They don't know it really, they aren't arrogant, they don't hold it over you that you should be grateful to work for such amazing people, if they did they wouldn't BE great but merely good enough. Great companies are a bit like great developers or great managers, I think - it's easy to believe they're a myth, you find so many of the other kind.
A true passion is what matters. So, to get back to the original poster's problem, if you're feeling as if you're drifting from where you think you want to be, look at what's taking you there. Huge difference if it's your employer's decrees vs. your true passion in an unexpected form. Be open minded, ask yourself what really matters and why. You may discover something. I've started / reorganized more than one QA department in my short time. I've accepted that I look at development at a larger scope now.
Of course, I'm willing to have no patience with idiots who can't respect that. ;) If the bad economy is something you're taking very personally, it might not be the time to ask hard questions. Prepare your personal situation to be able to ask them, though. |
| Fri 07 Mar | Brent P. Newhall | I concur with Matt's advice: Talk to management. If you feel unhappy, that's a legitimate concern.
Ultimately, you're the one who has to draw the line. |
|
| Click out tracking script | Fri 07 Mar | pb |
| Can anyone point me to a decent *basic* click out tracking script? Ive checked a ton of the scripts out there and they all seem poorly designed or have too many useless features. Im just looking for a simple redirect script that logs each click out. Perl or PHP. MySQL, txt file, dbm. Daily/weekly reports. I suppose I could do it myself but was thinking it would be simple to find something out there.
Which leads me to a rant: despite the dozens of script sites with zillions of free and low cost scripts, there are so, so few decent solutions. Script authors seem to invariably lose interest, have featuritis or zero understanding of user needs. The script hosting sites would do well do have editors. The voting schemes tend to be completely unuseful. |
| Fri 07 Mar | Simon Lucy | Sometimes free is exactly the value. |
| Fri 07 Mar | wants to be free | Yes pb, go ahead and write up a really good implementation of all those things that are lacking and post it somewhere as a free download. I would definitelyf be interested in any high quality free software you want to make available to the community. There just isn't enough high quality free stuff around. |
|
| MSCS or Post-Bac BSCS? | Fri 07 Mar | Don't know much about CS-ology |
| Theyre been plenty of CS education topics on JoS, but Im going to bore everyone with just one more.
I have a non-CS undergraduate degree and have decided to go back to school and get a CS degree. But I cant decide whether to go for the MS degree, or just fulfill the requirements for a 2nd BS degree (aka Post-Bac).
Oddly enough, theyd take about the same amount of time, but the MS degree would be a lot more expensive.
In most fields a MS degree is more highly regarded, but in the software field it seems as though it may not be (judging by comments Ive read here and elsewhere).
Any advice that might sway me in either direction? |
| Fri 07 Mar | Yaniv | You normally don't have to worry about the cost of doing an MS degree in CS(atleast in US schools). I have an MS in CS and I didn't have to pay anything. And everybody I know have never paid single dime to do thiers. In fact it's the other way around, you get paid like $1000 per month!
You normally get what is called Graduate Resear Assistanship(GRA) or Graduate Teaching Assistanship(GTA) from the university. You need to work around 20 hours/week for the university though. Doing either some sort of research under some professors or teaching some undergraduate CS classes. Or it might be also doing some other sort of computer related work like sys admin, web design or some light programming.
But like you mentioned I don't see a lot of advantage of having an MS in CS compared to a BS in CS with 2 years of experience.
But in your case it may be worth while since MS in CS will not cost you anything! |
| Fri 07 Mar | billm | I was in what I assume to be a similar situation. I had a non-CS undergrad and wanted to get a CS degree.
Ultimately, I decided to go the MS route. In my case, the MS was not substantially more expensive (I did it at Columbia) but it was by no means fully funded. Although schools will sometimes fund MS students (and virtually always fund PhDs), I think that someone without a CS undergrad is pretty unlikely to get funding. At least that is what they told me.
For me, the decision came down to a couple of things. The first was the difference between having a real degree and a certificate. It is just a lot easier to explain to employers and I feel more comfortable with it on a resume. Another big issue was that although I had to take roughly the same number of courses, I got to take more advanced courses -- the basic prereqs for an MS were less than for a second BS.
Obviously each school will be somewhat different, so your mileage may vary. Feel free to email me with questions about the process and my decision. |
| Fri 07 Mar | Matt H. | I have a BS in math with a concentration in CS. (A Concentration is somewhere between a Major and a Minor.)
I'm going to school at night for the MS. So far, all the classes I've taken were reimbursed by my employer 100%, so I only paid for books.
At most companies, this is a standard benefit. Of course, it can be hard on your family, so YMMV ... |
|
| Pros-Cons of VB6 Implements acrossed threads? | Thu 06 Mar | Wayne |
| I have a base class that is implemented by another class that resides in an Activex Exe project. Are there any distinct advantages or disadvantages to this?
I also have questions about use of the With statement acrossed threads. Do I bypass having to proxy each individual call between the threads by using it with an Exe Class?
With regards to avoiding much proxying, am I better off trying to limit interaction to methods and and thus passing more parameters in lieu of setting properties?
Much thanks for any pointers from the group. |
| Thu 06 Mar | Go Linux Go! | Not sure I follow...You said VB6, right?
When you said inherit, are you referring to implementing an interface in an ActiveEXe project? VB6 doesn't support class inheritance. (In the true sense of the word. I'm not referring to interface inheritance.)
Can you elaborate on your question about using the With statement? Multithreading in VB6 isn't really possible unless you do some rather, uh, unusual acrobats to make it happen. It certainly isn't something you can do 'out of the box'
Now, your final question I think I can answer. Yes, you are typically much better of passing more parameters to a smaller number of methods and you certainly want to avoid setting properties on a remote object. The reason is that every time you access that remote object, the call has to be marshalled across the wire (or process boundary) and this chews up resources.
Hope that helped a little bit. |
| Thu 06 Mar | Wayne | Apologies for the malformed request. What I meant by Base class was actually more of an Abstraction class. This probably made you think that I had said 'Inherit' when I actually said 'implements' (using the Implements keyword in VB).
Furthermore, what I meant by Thread actually should have been Process. When you instantiate a class that resides in an Activex Exe VB creates the actual object in the process space of the Activex Exe. Then it creates a 'proxy' object in the process space of the calling application and returns a pointer to IUnkown interface of the proxy object to the instantiating code.
The proxy object actually marshalls calls acrossed process spaces transparently to the calling app, so you are right about using functions instead of setting properties there for sure.
As for the With statement, I know that using it on an in-process/in-thread object makes VB only have to evaluate the object 1 time. Like this:
With oObj
.Prop1 = 'Val1'
.Prop2 = 'Val2'
End With
I can see that this is still 2 Function calls as compared to: oObj.SetProps('Val1','Val2') However I was just wondering if using With on out of process Activex Exe objects did anything.
I've decided that for out-of-process objects, I will always include an 'Initialize' type of method because this logically incurs less marshalling than setting properties. For in-process objects I don't think their is a really great gain especially if I use With. |
Thu 06 Mar | Matthew | Wayne,
With regards to avoiding much proxying, am I better off trying to limit interaction to methods and and thus passing more parameters in lieu of setting properties?
When dealing with out-of-proc calls (as you are) - definitely better to pass more parameters in one hit. Also, make sure you pass only data types that marshal well - which basically means base data types, arrays and disconnected ADO recordsets (no VBA collections for example).
Also http://peach.ease.lsoft.com/scripts/wa.exe?A0=visbas-l is a good place to discuss such issues.
With oObj
.Prop1 = 'Val1'
.Prop2 = 'Val2'
End With
AFAIK, from a performance standpoint, use of With like above gives you nothing. Where is it useful is in situations like:
Call ProjectName.ClassName.ClassName2.MethodName3
Call ProjectName.ClassName.ClassName2.MethodName4
which can be changed to:
With ProjectName.ClassName.ClassName2
Call .MethodName3
Call .MethodName4
End With
This basically means you only burrow down two levels ONCE (rather than twice) to get access to the instance of ClassName2. Since your example has no 'burrowing' it would not yield any performance benefit.
When thinking of With, think of it as declaring a variable and assigning a value to it, so:
Call ProjectName.ClassName.ClassName2.MethodName3
Call ProjectName.ClassName.ClassName2.MethodName4
could be changed to:
Dim x as ClassName2
set x = ProjectName.ClassName.ClassName2
call x.MethodName3
call x.MethodName4
set x = Nothing
That is essentially all With is doing...
Seeya |
| Fri 07 Mar | Thomas Eyde | I think you should include the 'Initialize' method on every class needing it. The coding style should be the same for all object, and its ActiveX component implementation should not dictate it. |
| Fri 07 Mar | Wayne | Points taken, thanks for the replies. I know this isn't the best forum for strictly technical questions, sorry about that. |
|
| Application Install/Release tools | Thu 06 Mar | Jason |
|
The application I work on is a distributed web based architecture. The application layer is a combination of COM objects, .NET objects, and .NET webservices.
We just finished our first alpha install, and I spent many many hours setting up COM+ applications, registering components, creating virtual directiories, and the like.
The install tools that Im familiar with all seem to be designed for applications that are installed completely on the client.
What kind of tools are available that are designed to automate this kind of server side setup? Weve tried automating some of this through scripts, but theyre not very robust.
Future installs will (hopefully) be done by techs, not programmers, who as much automation and error handling as possible is a good thing. Does anyone have experience with installs like this? |
| Thu 06 Mar | Tom Davies | I am not aware of any Server-specific installation tools, but I have written installations in both Wise and Install Shield to perform server installations. I believe either of these should be capable of doing most of the tasks you mentioned, such as registering COM objects, etc. Good luck. |
| Thu 06 Mar | Chris | The installer projects in Visual Studio .Net seem to be pretty good at doing this sort of thing. And you can include .Net code in the installer to do anything more advanced than what is provided by default. |
| Fri 07 Mar | Justin | For the COM+ stuff, just click on the application (package) in Component Services and use the Export menu option.
This should create an MSI file which, when double clicked on the target machine, will install and register everything for you.
Don't know anything about the .Net stuff though. Sorry. |
| Fri 07 Mar | | This sounds like consultantware (ERP). You should send out some highly paid consultants to configure and install this. |
| Fri 07 Mar | Jason |
That's what we're trying to avoid. Sending out a programmer to do the install is a waste of time and money, and interferes with the development schedule. |
|
| My name is Jonah. | Thu 06 Mar | Prakash S |
| I finsihed reading The Goal by Eliyahu M. Goldratt. Joel mentions this book here: (http://www.joelonsoftware.com/oldnews/pages/November2002.html)
Do you have any stories regarding how some one has helped you out like Jonah does in this book. Is there any way of identifying such people (I am sure all of us would like a little bit of help sometimes). |
| Thu 06 Mar | tapiwa | I haven't read the book, but I usually tend to happy music when I am down ...
My name is Jonas, by Weezer springs to mind |
| Thu 06 Mar | Marty's Pal | I used to work with this guy named Marty who was like Jonah in a lot of ways. He was about 65 yrs old at the time, he had two PhDs (physics and economics), and the man's range of experience was startling. He also looked like Captain Ahab or something, so sometimes our interactions would be a little comical. Aside from all the information he had cataloged away, though, the one thing that makes me think of him when Jonah gets mentioned is that he used to question my assumptions mercilessly. He was a good guy to work with. |
| Thu 06 Mar | DavidG | Isn't the idea to become your own Jonah? I'm trying by reading everything I can about Theory of Constraints (TOC). The intent is that once you learn the thinking processes, you don't need a Jonah. Of course, learning more effective ways of thinking from books is much harder than having a real-life Jonah, but I haven't met any, yet. At least none that I recognized as such, which could be my limitation.
How many people have encountered Jonah's? |
| Thu 06 Mar | Prakash S | Yeah, I am a big weezer fan.
-------------------------------------
The idea is to be a Jonah, but I guess you need to find one before you can become one. |
| Fri 07 Mar | Brian Hall | Actually, I believe the idea is that a Jonah's prime 'purpose', if you will, is to help you become a Jonah both to yourself, and to others.
Part of being such a Jonah is making assumptions explicit and challenging/questioning them, and thinking things through logically and all the way out (you don't just say 'nah, won't work').
I'm getting another book in TOC Thinking Processes, too. Can't wait for it to arrive :D |
| Fri 07 Mar | Prakash S | I am halfway through It's not luck - this stuff is a lot clearer now. |
|
| Where do bugs come from? | Thu 06 Mar | nuttin' to read |
| In my earlier thread, Anon said:
While writing software, one must pay careful attention to being able to maintain it later.
This is obviously true, but why? Is there no market strategy that would allow you to be competitive, while at the same time being able to sell a product, shake hands, wish em well, and get onto the next thing?
Is this maintenance stuff a revenue generator?
Clearly, bugs are one of the big reasons software shops have to own the product in perpetuity, so my next question is where do they come from? I mean what are some of the root causes. Unclear requirements? Sloppy programming? Developers not familiar with problem domain? Complexity? Having to rush to get the thing out the door? Something else?
When you think about it in the abstract, it seems like it should be a simple affair to produce bug free code, so where are they coming from?
I know a big source of bugs in my code is integration with third party libraries. I call a function, it goes in, does its thing, and returns, but while its gone it does something secretive. Later on, I get strange behavior and it takes a while to find the pattern that sets it off. It turns out that the function call has side effects I am not aware of, or it has some bugs of its own. In other words, it doesnt behave as expected - my assumptions were wrong.
So, where do your bugs come from? |
| Thu 06 Mar | Wei | I guess for me it would be a lack of experience in certain libraries, unclear requirements and system complexity.
To answer your question, bugs are the direct results of programmer ineptitude. =) |
| Thu 06 Mar | Eli Bendersky | Human incompetence and incompleteness is the sole reason, IMHO. It is 'the root of all evil'.
Why do we fail exams by sloppy mistakes ? Why do we balance our finances incorrectly ? Why do we make mistakes at all ?
I believe that the answer to these questions will lead to the answer to your question.
Then I confronted the movie analogy in the last thread (that was me, sorry for the Anon) - maintenance came from a painful experience. We do mistakes, and we'll always do them. We can reduce them with competent techniques, helpful tools and languages, experience, but there will always be bugs. The sky is blue. Facts of life |
| Thu 06 Mar | John Topley | If debugging is the process of taking bugs out, then programming must surely be the process of putting them in! Next question? ;-) |
| Thu 06 Mar | Wei | hahaha... i never saw it that way... =)
i'd always tot of writing software as creating functionality for a computer... =) |
| Thu 06 Mar | Martin | Before we can answer the question 'Where do bugs come from?', we must answer the question 'What are bugs?'
Sure, we all have some kind of understanding of what a bug is, but the exact definition of a bug is kind of fuzzy. We can probably point out a handful of slightly distinct bug definitions (if we're lucky).
So I'll have to ask: WHat makes a bug a bug? |
| Thu 06 Mar | Simon Lucy | What makes a bug a bug? What makes a weed a weed?
Undesirable behaviour in the wrong place at an inopportune time in front of the wrong audience.
Much like taking a toddler to Sainsbury's
Debugging toddlers takes time and patience and attention at the time of the bug. Similarly with software. |
| Thu 06 Mar | David Roper | What makes a bug a bug? Good question.
My view is that a bug is a flaw that results in a piece of software failing to behave as originally specified (or substitute 'intended' if you prefer).
Clearly this implies that software can also exhibit design/specification flaws, i.e. the software functions as specified, but the specification itself was incomplete or inaccurate. I wouldn't, for example, haul a programmer over the coals for selecting an inappropriate sort routine if the specification doesn't indicate how many records are likely to be encountered. I would, however, give a designer a hard time for not asking the question, or worse for accepting a test data set having a few hundred records when the live system will process millions! |
| Thu 06 Mar | David Roper | It's also noticeable that toddlers exhibit heisenbugs that you think you've fixed only to recur again when they're 16! |
| Thu 06 Mar | Stephen Jones | I thought Turing once produced a mathematical proof that it was impossible to turn out a bug free program.
Bugs are an inevitable result of the complexity of the system. Their number can be greatly increased by sloppy design, poor integration, having to work in a hurry, or having programmers that don't understand the underlying concepts of what they are doing, but they will always be there.
Rigorous testing will get rid of many of the most common ones, but new ones will always turn up because your program has to work with other programs that weren't even in existence when you did the testing. |
| Thu 06 Mar | The Real PC | When I change something in the program, or add something, I test it and make sure it works. However, I don't test it under all possible conditions because I can't predict them. I don't even try because it's impossible. After the program is used for a while I will eventually hear about the bugs and fix them. |
| Thu 06 Mar | Practical geezer | 'However, I don't test it under all possible conditions because I can't predict them. I don't even try because it's impossible'
But, it is not nearly as unpredictable or impossible as some would have you believe.
More often it is not economical, or desirable, rather than impossible.
Always a good step is to at least define under which circumstances something will work, or is supposed to work, and then restrict usage to those circumstances.
In other words, validate input and fail gracefully in the presence of errors. It'll get you a long way.
That'll still leave you with the honest mistakes, of course... |
| Thu 06 Mar | Martin | 'Undesirable behaviour in the wrong place at an inopportune time in front of the wrong audience.'
I like that definition. Here's why.
Take this simple program:
echo 'Hello, world!'
This simple program is bug-free, right?
Wrong!
Tell a blind user that he'll get a message when he runs it, and when he does, he'll report that it has a bug because he didn't get any message - he's the 'wrong audience'.
Or run it on a computer with no visual output devices attached. No message? It's a bug! This particular computer is the 'wrong place'.
I'll leave it up to the reader to create an example with 'inoppertune time'.
Bottom line is: Bug free programs do not make any sense! It's the whole setup; user, hardware, place, time, _and_ of course the program, it is in this whole context that bugs are emerging.
Granted, often there's something wrong with the program involved, but since non-program factors can introduce bugs, it isn't enough to buy some cool debugging tool and a good programmer (although it certainly helps!) - we have to have a holistic view of the setup, not just the source code.
That's how we nail the bug! Or maybe that's why we'll never nail all the bugs? |
| Thu 06 Mar | anon | > I thought Turing once produced a mathematical proof
> that it was impossible to turn out a bug free program.
The only Turing related theory I can recollect from computing theory lectures was the halting problem. It is impossible to write a program that can decide if an _arbitrary_ other program will halt in a finite amount of time (given a particular input)
A lot of other problems can be mapped onto the halting problem. |
| Thu 06 Mar | Simon Lucy | Martin, umm yes that's exactly the kind of thing I meant. |
| Thu 06 Mar | Big B | Bugs come from lines of code. With careful programming, you can reduce the number of bugs per line of code, but nothing beats not writing the line of code in the first place. That is why we should always try to avoid writing code to solve problems that only live in the mind of the programmer. |
| Thu 06 Mar | Herbert Sitz | Nuttin said, 'Is there no market strategy that would allow you to be competitive, while at the same time being able to sell a product, shake hands, wish 'em well, and get onto the next thing?
Is this maintenance stuff a revenue generator?'
Nuttin -- I don't think I've ever worked on a project when the client didn't request changes after install, whether one week or one year later.
Sure you can never turn back and 'get onto the next thing'. But if you ignore clients whose needs change and who need increased or modified functionality from your apps, they're going to be unhappy with you even if they liked the app to begin with.
And if you don't design your app to be easily maintainable and modifiable, it's going to be a nightmare when you go to modify or extend it later.
So I would say that, sure, you can 'shake hands and wish them well' if you want. But in the end, you're not going to have any happy clients. Applications usually need to grow and change over time. And you're not going to be competitive if people think you've abandoned them. In some cases I bet they'd even have to scrap your application -- even if it worked fairly well -- and replace it with a new one, because having another consultant modify your unfamiliar app is more difficult for them than building a new one from scratch. Especially if your app isn't built to be friendly to modifications. |
| Thu 06 Mar | Bill Tomlinson | Well, just to provide a point, the computer games industry is an example of one where you can mostly ignore maintenence. Most games are released and only followed up by a year or so of patching the worst bugs (there are exceptions, but I did say most). This example isn't really relavent to the rest of the industry, but the original poster did say something like 'are there any products where you just make the sale and say goodbye'.
On the second question of bugs. I'd have to agree with the sentiment that humans just aren't perfect. This can be compensated for by checking, then checking again, and again, and again, etc. And there are some software projects that do this and achieve very near bug free code (the space shuttle software team is often given as an example).
So why don't we just do this on all projects? Simple economics. How much are you prepared to spend to get bug free code? Every project has to answer this. |
| Thu 06 Mar | Ping | >> 'Well, just to provide a point, the computer games industry is an example of one where you can mostly ignore maintenence. Most games are released and only followed up by a year or so of patching the worst bugs (there are exceptions, but I did say most).'
MMOG's are an example of a game that is patched consistently. Then again their users have some strange ideas of what bugs are. Like, 'I'm not advancing at a fast enough rate, make it easier?'. I love game bugs actually. L33T UBER SP|_O1Tz. |
| Thu 06 Mar | flamebait sr. | halting problem is not indiciative of bugs, because all bugs are not halts. You can map some, but not all, bugs to the halting problem.
Bugfixing *can* be profitable if you arange your finances right. For 'Shrinkwrap' software, it's not because you have to do a feature upgrade before a good chunk of your users will pay for anything.
If you sell software as a service, which is what some folks would *love* to do, bugfixing keeps the users satisfied.
Stability-intensive and/or reputation-intensive industries are also cases where bugfixing is profitable.
Multiple products that share code will have areas of code that it will be profitable to bugfix.
There's more here, but it would be an epic. |
| Fri 07 Mar | Nick Grimshaw | As a wise program once said:
'Every program has at least one bug and can be shortened by at least one instruction -- from which, by induction, one can deduce that every program can be reduced to one instruction which doesn't work.' |
| Fri 07 Mar | UpAndDownTheCityRoad | There are no bugs.
There are programmer errors and unmet requirements. |
|
| Software Development Analogs | Wed 05 Mar | nuttin' to read |
| Ive frequently heard software development compared to the construction industry. There seem to be some similarities, but there are enough differences that I think this is a poor analogy. Ive also heard software compared to the publishing industry, though this one fails even more in my thinking. Anyone have better ones?
My personal favorite is building software is like making a movie. Both produce what are essentially made-to-order, one shot products. Both try to use a lot of up front, low cost prototyping to ensure the correctness of the more expensive downstream products. Both have complicated schedules that are typically very sensitive to a small number of critical resources. Both can require quite a bit of rework before the product is finished, and its difficult to tell when you have the product just right before it hits the marketplace. Actors are like coders, directors are like project managers, writers are like architects, etc.
Whats your favorite and why? |
| Wed 05 Mar | Jeff | The movie analogy is really good! Though one drawback to using it is not everyone is familiar with how movies are made. I'd think the average person is more familiar with construction then movie making.
Jeff |
| Thu 06 Mar | Yuri | I was serving printers and plotter at one of the Design Offices (you know, AutoCAD and all that engineer stuff). Device development is like software development, just compilings and buildings were made rarely -- monthly maybe
:) |
| Thu 06 Mar | anon | There is one notable problem with the movie analogy...
Once the movie is made, it's over, OVER. It's out
to the cinemas and DVD's and the crew start working on completely different things. There is no support, no maintenance (which is one of the most important parts of a software engineer's work and considerations), no 'this will be fixed with a patch in version 1.0.4.221'.
While writing software, one must pay careful attention to being able to maintain it later. Movies is not so... this clever hack makes it possible to make this scene - cool, don't think about maintaining it later.
Why does software engineering needs analogies at all :-) ? |
| Thu 06 Mar | Daniel Shchyokin | How about this, the software industry is like the (drum roll....) software industry. We have some similiarities with a lot of industries, but we are not construction or movies or basket weaving, we are our own thing.
Comparisons are often dangerous. For instance, if you let the business side think that software is like construction.. you get ... 'oh yeah well just slap it together outa prefabs' (standard components) on the surface OOP does look like that. But in OOP unlike construction, you dont have to shape every single brick to make it fit in with the other bricks. |
| Thu 06 Mar | nuttin' to read | Well, anon, you got me there. The analogy does indeed break down when it comes to maintenance. But who says analogies need to be all encompassing? Do you have any that fit a specific part of the job?
The main reason I was interested in analogies is that it's interesting to hear about how other things get accomplished. It's also useful to take methods from more mature disciplines and apply them to your work. Obviously, if you do this brainlessly you can shoot yourself in the foot. Seems like it might make sense, though, so see how scheduling is handled in movies. If they can do it successfully, maybe you can apply something they are doing to your work and make your scheduling a little simpler. Maybe we could learn something about quality control by studying their editing process. Who knows until you take a look at it?
I'm personally not one to try to simplify my discussions with management by drawing an analogy to something ostensibly more familiar. As you guys have said, that's dangerous because folks will take the analogy way past where the similarity stops, if it benefits them.
I do, however, try to use very basic, focused analogies to illustrate a point, and occasionally to rile people up. For instance, one I like to use is to compare the estimation process to buying a car. Asking me for an estimate early in the project is like me asking you how much it will cost to buy a car. Neither one of us can give an good answer without more information. I need to know things like how many people will use this thing at one time and you need to know whether I want laser weapons or ejector seats. Now, if you force me to promise you a number this early, that's the same as me telling you I want a firm number for the price of the car and you have to pick up the difference if your number comes up short. Just like you are going to quote me some outrageously high number for the price of the car, I am going to quote you an outrageously long project duration. We're both going to cover our rumps. I am willing to say, though, that I'm 90% sure that it will take at least a month but not longer than a year, same as you are probably willing to tell me I'll spend at least $5000 but not more than $250,000.
This doesn't always work, but it is a fun game to play. It's especially nice because I've already though through all the directions the dialog might go, but they get caught by surprise. Puts them on the defensive for a change. On the occasions when it does work, it's priceless. Until they go meet with their manager and try to convince her... |
| Thu 06 Mar | Eli Bendersky | Why do we need analogies at all ? |
| Thu 06 Mar | tapiwa | I totally agree with Eli. Why the need for analogies..
Reminds me of the old addage.
Understanding binanary counting:: There are 10 kinds of people. Those who do and those who don't. |
| Thu 06 Mar | nuttin' to read | We don't need them. They are useful, to me at least, for reasons I mentioned earlier (unless the post has been deleted and I am the only one still seeing it :P). Let me turn the question around, 'What's wrong with having them?'
The benefits are clear to me, what are the costs? |
| Thu 06 Mar | Patrik | I agree with Eli as well, we dont need them when talking to eachother within the devleoper community.
However we need them when talking to customers. I remember talking to a plumber once, who was kindof upset that the 'tech guys' at the company he worked for took forever to deliver whatever it was they were delivering.
Longtime Joel readers may remember the 'Iceberg secret' essay that basically said that people doesnt know that 90% of the work in programming is 'invisible' to the user. To get this point across I found that analogies that translate into the customers world may be nessecary.
If only to shed light on serialization problems in software development, or ever-changing specs, you have to find out the the plumbing guys and the aircondition guys and the carpenters cant all be working in the same place at the same time, or that changing of the blueprints every other day results in delays. The latter is obvious to anybody working as a plumber, however the term 'serialization problems' might not be. |
| Thu 06 Mar | Bored Bystander | Another problem with conveying the general nature of SW development to 'outsiders' and customers can be the imcomprehension of the people you're dealing with.
Perhaps they've never had to build or 'make' ANYTHING in their lives because they've always been in the executive, business administration, or sales areas. And I'm singling out those three areas as bastions of stupidity. These kinds of people expect to click their fingers and see something. So an analogy may not cross this divide. Or worse, the imperfect nature of the analogy may give the 'outsider' argument points against you because they don't understand that it's just an analogy.
Years ago I worked for a small hack shop that was developing a real estate specific package. My boss had talked to realtors in pitching the product and he was QUITE emphatic that the realtors would not understand that development could take time.
Basically, he said that if he told them about a new development we were proposing, they would ask at that time if they could have it to try. They would not believe that implementation existed, that it took time-effort-work to create a new feature.
Because they were realtors, most of them (expecially the owner of a real estate firm) had a case of the profound stupids. If anything, they saw software like french fries at McDonald's. IE: get on that deep fryer and whip up a batch, why should it take any time, it's just a bunch of typing, right? |
| Thu 06 Mar | Dignified | One plus to analogies:
No girlfriend that I've ever had has understood what I do.
Maybe it's a function of where I live (midwest U.S.), but everyone around here stares blankly when I tell them I'm a Software Engineer. So then I usually just say 'Programmer,' which is slightly better for them. I've had many people ask me how I can type in 1's and 0's all day. I'll have to try out the movie analogy.
Plus, it would probably add a certain edge in picking up women if I said 'I'm an actor.' :) |
| Thu 06 Mar | Robin Debreuil | Well I think analogies are very useful. I've done a lot of animation over the years, and it is very similar to the software process. With a series you also have the maintenance issues, and things like translations, drifitng specs, an evolving product, generated vs handmade, in house vs outsourcing, egos and talents etc etc. The interesting thing is animation uses a very different process to solve very similar problems. It is also a lot more quantified and mature (and older) process than software uses. Software is still pretty much at the stage of debating whether it is better to have a plan or not, never mind a proven methodolgy of implementing it.
In animation (and movies) you don't have the luxury of keeping your key teams small to reduce points of communication, so you need a good system. You also have a larger number of people that aren't that interested in or capable of managing complexity, which means you generally have a more methodical system for doing that too. There is a lot to learn there. I really don't think the answer is keeping your team down to 5 or less like everyone making software seems to think is a reasonable restriction. |
| Thu 06 Mar | sgf | I think the analogy to movies should be heavily promoted. I want a salary like Tom Hanks' :) |
| Thu 06 Mar | Lee | I dunno..
Maintenance = Sequels.. It could work. |
| Thu 06 Mar | Bored Bystander | Further problems with the software-moviemaking analogy: there is absolutely no similarity of the compensation scale and method, nor the treatment, for actors vs. programmers.
All programmers are schmucks deserving no dignity in the eyes of management while some actors are 'stars' deserving utmost respect and high maintenance. Yeah, right, I'll ask for a fruit basket next time in go into my client. :-)
(I read somewhere that an ex publicist is trying to start a 'talent agency' for IT people, to reward 'star performers'. He needs to put down that crack pipe.)
Most actors are free agents. Most business *DESPISES* IT contractors (free agents) with passion.
Many actors get paid royalties for performances of their movies. Programmers are often scammed out of fair market pay with promises of royalties that conveniently never seem to be due. (asking a programmer to forfeit pay in exchange for 'paper' is the oldest trick in the book, I've been asked many times to do this.)
Actors are paid on a contract basis, with steep penalties for reneging on the deal. Most programmers are wage slaves and can be dismissed at will, even after they complete the goal.
Actors are publicly credited. Programmers are usually not, unless they own the company.One definite similarity between programmers and actors: youth, beauty, and compliance with fads and fashions definitely account for 99% of the hiring decisions. |
| Thu 06 Mar | Matt H. |
Farming?
Football?
Want more examples? Read 'Code Complete' by Steve McConnell ... or 'PeopleWare'
regards, |
| Thu 06 Mar | Reginald Braithwaite-Lee | Most of the people who work on a movie are not actors.
And judging by the people I know who work up here in 'Hollywood North' (Toronto) they are not paid as much as Tom Hanks.
Furthermore, most actors are not paid as much as Tom Hanks. In fact, the average and mean actor's annual incomes are pitiful.
I'm very glad I don't work in the Movie Business!
--
http://www.braithwaite-lee.com/ |
| Thu 06 Mar | Chris | I've always thought analogy was one of the worst forms of supporting an argument (not that that has anything to do with this particular thread). They're easy to twist in any way you want and don't deal directly with facts. If someone begins an argument with an analogy I know their point is pretty weak. |
| Thu 06 Mar | Mike Swieton | Chris:
Using an analogy as support for an argument may be an indicator of weakness, but an analogy can be good for explaining the argument.
Consider here: customer wonders why it's so expensive/time-consuming/whatever, and you can tell them real arguments (well, the new FOOBAR APIs are hard to use, or why my favorite acronym has bugs in it), or you can tell them things that the PHB will understand (How long did it take to build your house?). |
| Thu 06 Mar | nuttin' to read | I wouldn't use analogies as a kind of pseudo-proof of an argument, but they are really good for trying to generate insight. |
| Thu 06 Mar | sgf | The analogy I use to explain people is: The PC is pretty dumb. It's a pupil and I'm a teacher. =) |
| Fri 07 Mar | Robin Debreuil | Analogies are most useful when you use them to see how other fields solve similar problems. A tv/animation series certainly is akin to maintenance - a poorly designed anything will become a giant pain and will be very hard to change by episode 3. And if anyone thinks star programmers aren't pampered or compensated generously, umm... |
| Fri 07 Mar | Practical geezer | One thing that can be useful from the movies analogy is the distintion between pre-production and production.
In the movies this distinction is useful, because once shooting begins, the meter is running. So you'd beter be prepared and not be wasting time on decisions that could have been made before the crew was ready and all geard up.
Product development (not just software) can benefit from a similar phasing and can learn a lot from the techniques that are used in pre-production to keep costs to a minimum, while eliminating risk to a maximum.
Until today, too little is being done to even recognise, let alone exercise, this in product development. Not withstanding requirements management, iterative and incremental development, up-front design, et cetera. |
|
| Groove Networks lays off 20% of staff | Wed 05 Mar | Mitch & Murray (from downtown) |
| Longtime Joel readers will remember when El Presidente gave Ray Ozzie, the mastermind behind Groove Networks, quite a bit of stick regarding his whole business and technology model. Well, well, well ... this article:
http://news.com.com/2100-1012-991209.html?tag=fd_top
says the Groove boys just laid off a significant portion of their staff _and_ their current fundraising to date has netted them $155 megabucks. $155 million to develop a product most people (even tech people) have never heard of. It goes almost without saying that Groove is not yet profitable.
I cant quite come to terms with what portion of this equation is more outrageous - the guys spending $155 million or the guys investing $155 million. |
| Wed 05 Mar | Robert Moir | 'Groove has not disclosed a target date for profitability.'
I can't help but think anyone who allows themselves and partners to sink a total of $155 million into a company that apparently doesn't have a business plan really needs to up the dose on their medication. *sigh* |
| Wed 05 Mar | Tj | I visited the Groove forums months back and noticed sloppiness. For example, the Groove server would be down for a weekend, and ordinary customers weren't contacted nor was the webpage (which still worked fine) updated. In fact, the message was a polite version of, 'Most of you are not paying an enterprise license, so we don't have the money to post, email or update our webpage.' Um, ok.
Someone (Larry McVoy?) explained that individual licenses in Bitkeeper were sort of discouraged since they cost the company disproportionately in support and overhead. But I doubt he'd be so cavalier about defects and alienation as Groove was.
I don't think Joel's recommendation was quite right (would Groove be successful emulating Macromedia? or is that a naive understanding of Joel's point?), but this doesn't have to be about Joel vs. Ray. Joel expressed demand for a service, and maybe Groove could have met halfway. I hope Groove has learned self-improvement. |
| Wed 05 Mar | pb | How does a pure software company need so much cash? Groove's only hope is to get purchased by Microsoft in which case I don't think investors will get much return. Groove is not another Lotus Notes (which wasn't that great anyhow). I just don't get it. I've looked at the product several times and can't for the life of me figure out any realistic value it provides. Even conceptually it's a stretch. |
| Wed 05 Mar | JD | Tell me about it! At least my Segway investment still looks promising... doh! |
| Wed 05 Mar | z | What are they selling? There must be some other cash source. $1.55E+8 isn't enough to pay for 290 people + overhead for 5 years even if all they are doing is software development. |
| Wed 05 Mar | Tj | To be fair though, if the severance packages were really generous and included job replacement help, cutting down on the burn is not a bad idea. Maybe they established a beachhead and are now winding down costs. And maybe things are not so clean. |
| Wed 05 Mar | John Rosenberg | Any software company that needs this much money just to get off the ground doesn't have a future ahead of it. It's run by people who don't know how to manage a business. Almost every tech giant today, was started with either a limited amount of venture capital or was self funded. And the ones that did get VC funding, became profitable super-fast. |
| Thu 06 Mar | na | i think this was predictable.
remember marc andreessen of netscape. huge success. then loudcloud(opsware) which is a big failure (as I see it).
similary with ozzie. memorable past but 2nd try (groove) is not that fantastic.
for most of the vc investors it was enough if you have a big reputation. sometimes it turnes out that fame is mostly luck. or the expectations were too high. |
| Thu 06 Mar | not a groove user | but the defense dept loves it and that alone justifies the investment. Groove is also very quiet about their other wins. |
| Thu 06 Mar | not a groove user | groove was initially self-funded by ozzie who made a substantial fortune from notes. but he's smart enough not to put all of his own cash at risk. |
| Thu 06 Mar | pb | z, $155m is *plenty* of cash!! Even if they averaged 100 FTEs for those 5 years, that's only $100m *max* for salaries. I wouldn't be surprised if they now have at least $50m in the bank. |
| Thu 06 Mar | runtime | I find if curious that Microsoft is dumping so much money into Groove while simultaneously working on their own P2P products. Microsoft recently released betas of their Real-time Communications Server ('Greenwich'), threedegrees (multimedia IM), and the P2P/IPv6 SDK for WinXP. Well, I guess Microsoft can afford to places lots of bets, hoping for one home run. |
| Fri 07 Mar | tim | I noticed this, too. The SharePoint development alone could become a competitor to Groove, if a lot more development was done on it. Maybe Microsoft and Groove are trying to create a market, but I don't really see the use for Groove (or SharePoint) at this point. It seems to me that groupware/conferencing is nice, but not necessary. |
|
| Oracle or Sql Server is one thing, but SAP? | Wed 05 Mar | K |
| Ive received an assignment to develop a large data warehouse, and been told to consider SAP for the database. We already use and are happy with Oracle.
I hear debates between Oracle, Sql Server, MySQL, and even Ingres and Sybase, but why is it that Ive never heard SAP mentioned in the same context?
Does anyone have any experiences (good or bad), or good links to share, aside from the official sapdb.org site? |
| Wed 05 Mar | Robert Moir | 'Told to Consider' SAP.
Unless thats PHB code for 'You WILL use this product' where you work why not just tell them you did consider it then decided to go for a product you can actually support instead (e.g. oracle). |
| Wed 05 Mar | RocketJeff | SAPDB was a commercial, closed source, database called ADABAS. SAP bought the rights to it (or at least the rights to fork it) and have enhanced it and Open Sourced it.
Why did SAP do this? Simple, Oracle was (and is) the main database that SAP used in its implementation. Oracle then went and developed its own ERP package that competes with SAP. In addition, smaller SAP sites didn't have an existing database and didn't like the idea of buying costly Oracle licenses. SAP bought the database to help with both problems.
Why did they Open Source it? Good question, according to the web site, SAP has plenty of developers working on SAPDB - I doubt if they need a few outside developers. I assume that the reason is Public Relations. SAP DB is not a core product for SAP, it doesn't cost them anything by releasing the source code and letting people use it for free. |
| Thu 06 Mar | Nice | SAP open-sourcing the components that their product relies upon.. is that an example of commoditizing your complements?
Does SAP run on Postgres or MySQL? Would that have been another avenue for them to invest in? |
| Thu 06 Mar | Alex | SAP open-sourced their RDBMS, not their ERP package (BTW: you get the ERP ABAP source when you buy the R/3 system).
R/3 runs on any enterprise-class RDBMS (DB/2, Oracle, SQL Server, SAP DB); using SAP DB is just an option. Toy databases (MySQL) are not supported.
The main reason for giving away SAP DB for free is to avoid paying lots of DB bucks to Oracle (which they use to subsidize their ERP development). |
| Thu 06 Mar | Nice | So Alex, were you agreeing with me or not? Or were you replying to someone else? Hmm, oh for a forum with quoting.. ;-)
The SAP 'product' is ERP etc; the database that manages the storage is a complement. And JoS illustrates the commercial advantages of commoditizing those in serveral articles.
Obviously SAP is investing a lot of capital to secure the enterprise-class database from the original (closed source) vendor, and to maintain it. I wondered if that money couldn't have been spent upclassing a 'toy' opensource database instead. IIRC Red Hat is/has gone a little bit in that direction. |
| Thu 06 Mar | Alex | Nice, in my opinion it is not so much about commoditizing a complement (it is not the DB costs that prevents potential customers from buying SAP). It is more like cannibalizing a competitor's major market ;o). |
| Thu 06 Mar | treefrog | What does ERP stand for please? |
| Thu 06 Mar | Patrik | frog, ERP is Enterprise Resource Planning. SAP is an application package for this; General Ledger, Accounts Payable, Accounts Recieveable, HR application, Project Management, CRM stuff. The whole nine yards.
SAP is as said, often run ontop of Oracle databases. However, Oracle also has its Oracle Applications which competes directly with SAP. |
| Thu 06 Mar | tapiwa | ERP - Enterprise Resource Programme.... basically the mother of all computer systems.
SAP R/3 - Save and Pray, Repeat 3 times :) |
| Fri 07 Mar | Arron Bates | I chose SAPDB and not looking back.
The features lis. It does the deed and then some...
http://www.sapdb.org/7.4/sap_db_features.htm
But if I had to pick the best part, is not it's ease of use, how remedial to set up and get playing, hands off administration with hot backups, how it performs or whatever, but the absolutely complete documentation et al.
Using Oracle, you need hundred's of dollars of literature in books and such let alone the licence, just to be productive. SAPDB comes with huge PDF files that answer all your questions, including a document that tells you how you used to do something in Oracle, and how to do it in SAP if it supports it (and tells you if it doesnt).
If you want a good techie reason. SAP creams Oracle with its Unicode support. In Oracle you have to declare a column as NVARCHAR, and any strings in any query as N'mystring'. Where as SAPDB, it simply happens. Specify unicode in the column definition, and no modifications to queries. Truly cool if you're ever thinking of that whole 'other language support' thing.
The CD's free, order it. They won't even charge for shipping (Which left me astounded quite framkly. Filled in a form, and got a package from Germany to Australia in a week). Magic happens from start to finish. In fact, if SAP don't send the CD free, email me and I'll see about sending one for them.
I'm bootstrapping my own startup, and SAPDB's been the biggest license god-send so far. On the CD you get the databse for all the 6 operating systems (actually the entire SAPDB website). |
|
| Some of the Best Computer Geek Sites | Wed 05 Mar | Tom Fairlie |
| I know there are a ton of sites out there (and this thread could easily be boring), but what are your recommendations for a REALLY cool AND useful AND innovative/unique web site for computer geeks. If anyone recommends slashdot, I will steal your keyboard and mouse.
Selection criteria may include this test: If you were at a customer site and (a) had 3 minutes to find the right answer to a tough question, or (b) had an hour to kill and wanted to read something totally interesting, where would you go? Other criteria may include the amount of effort and/or effort that went into the site.
For example, I appreciate the work that went into stuff like the Tasklist pages on www.answersthatwork.com (no, I dont know who runs that site). |
| Wed 05 Mar | Mike Swieton | For the finding answers criterion, google wins hands down. There's a couple sites on that google turns up a lot, like experts exchange got me some good perl tips the other day, but google is more useful, imho.
As for killing time, there's plenty of good online comics. User Friendly is good for a laugh every day. Most of my time-killing sites aren't geeky though: aside from here and slashdot, I read politics stuff on radio free nation. Sometimes I'll browse hardware sites like Anand Tech, but I don't follow things enough anymore for tech to be so interesting. |
| Wed 05 Mar | Patrik | I go to thinkgeek to kill time, and maybe pick up some geek t-shirts :)
www.thinkgeek.com |
| Wed 05 Mar | Nick Brosnahan | If you want to spend an hour and potentially come across something very interesting, you might try going to www.weblogs.com or www.blo.gs and clicking on the 'Random Blog' link. I've had fun with them recently. Of course, you may end up with something totally worthless. Just click again. |
| Wed 05 Mar | Dave Bryant | For programming related issues, i normally go to http://www.codeproject.com - you usually get answers pretty quickly there. |
| Wed 05 Mar | Kyralessa | Finding answers? Google Groups (the Usenet search part). 99.9% of the time, somebody else has had the same problem before.
An hour to kill? The archives here, or the archived columns at Infoworld, especially The Gripe Line, which fits my temperament. |
| Thu 06 Mar | Pete | I check www.angrycoder.com from time to time to see if there's something new to read. |
| Thu 06 Mar | | www.osnews.com
a nice roundup of what is going on, plenty of special articles, and very little noise in the discussion threads
---
www.theregister.co.uk
often nice, sometimes crap stories too. The BOFH stories are well worth an exhaustive read
---
www.theinquirer.org
where much of the original talent from theregister went a while back; very good, slightly hardware focused
---
www.therockalltimes.co.uk
more ridiculous satire, although sometimes a UK political focus
---
dilbert; delivered daily to my inbox (until my company filtered it..)
---
userfriendly; great! |
| Thu 06 Mar | Just me (Sir to you) | http://www.only4gurus.com
http://murl.microsoft.com
http://support.microsoft.com/default.aspx?scid=fh;RID;webcst&style=toc&sd=gn
http://www.swiss.ai.mit.edu/classes/6.001/abelson-sussman-lectures/
http://www.ondotnet.com/dotnet/
http://www.gotdotnet.com/
http://www.4guysfromrolla.com/
http://www.ultratech-llc.com/KB/
http://www.15seconds.com/ |
| Thu 06 Mar | anonymous | http://www.dotnet247.com/ |
| Thu 06 Mar | Paul Brinkley | www.howstuffworks.com
www.cockeyed.com
http://pennandteller.com/sincity/
www.altonbrown.com
http://antwrp.gsfc.nasa.gov/apod/archivepix.html |
| Thu 06 Mar | Prakash S | AH! Another Penn & Teller fan! |
| Fri 07 Mar | Paul Brinkley | Absolutely. I've found P&T to be two of the most intelligent entertainers in the country. Bright, inquisitive, in a geeky sort of way (they're not afraid to question authority, for example), hence their inclusion here.
It's a darn shame I can't afford Showtime. |
|
| Anyone knows a huge software crisis? | Wed 05 Mar | MegaPop |
| Im just looking for a good example of software crisis that killed ppl or led to a tragic lately. if anyone replies, appreciated. |
| Wed 05 Mar | Marc | Just had a manager go into the 'we are all going to die if this isn't fixed' mode? |
| Wed 05 Mar | Kruger Industrial Smoothing | Whatever happened to all the disasters that were supposed to be caused by 'Y2K'? There were all these stories about how there were millions of computers running old programs (particularly in government agencies) and there just wasn't enough time to fix them all. And then Jan 1 2000 came and ........ nothing.
Now, we all know that the 'Y2K problem' was grossly exaggerated by consultants hoping to charge companies a thousand dollars a day to fix the problem, but still, I have to admit that I'm quite surprised at how few reports there were (essentially none) of major disasters that were the result of Y2K related problems. |
| Wed 05 Mar | Go Linux Go! | A particular NASA satellite met an untimely demise on the surface of Mars because of a programming glitch....
I'm sure it was quick and painless, though. |
| Wed 05 Mar | Stephen Jones | I'm sure you can find examples from the medical fiield, though it is likely to be poor software causing or amplifying human error that being directly responsible.
There are plenty of examples of companies going bankrupt or losing vast amounts of money (Greyhound buses is a famous example).
On a much less dramatic plane our college has just given all the staff their new computerized schedules to siuch disastrous effect that all but three staff are now scourig the job pages, including staff with many years of increments who were intendinig to stay on until retirement and are now thinking of doing a bunk half way through the semester. |
| Wed 05 Mar | Kyralessa | Go to Amazon, look up this book: 'Fatal Defect: Chasing Killer Computer Bugs' by Ivars Peterson (ISBN 0679740279). Also look through the 'similar items' listed there. That will give you a lot of tales of the sort you're looking for. (After collecting a few book titles, check your local library to see if you can find them there and save a few bucks.) |
| Wed 05 Mar | Bruce Perry | Isn't there a usenet group about this sort of thing? Comp.risks or something close to that. That could be a useful starting point. |
| Wed 05 Mar | Lasse Vĺgsćther Karlsen | I've read (though sadly I can't remember where) that a hospital had a bug in a prescription database system so one particular type of report after a software upgrade was printing the comma in a unprintable character on the printer they used, which meant that the dosage '10,00' became quite different indeed. At least one patient slipped into a coma because of it but I don't think anyone lost their life.
As for the Y2K problem mentioned in a reply further up, one of the reasons you've heard so little about all the potential problems that could've happened is that quite a number of companies worked to fix these problems. That was the whole point of the scare to begin with, removing the problems. I read (again, WHERE?) about a power plant that had an outage for a few minutes while they rebooted all servers as someone had installed all the patches, they just had answered 'No' to the question 'Reboot now' and forgotten to reboot the servers afterwards. That article didn't say anything about related damages though. |
| Wed 05 Mar | Roel Schroeven | The Risk Digest ('Forum On Risks To The Public In Computers And Related Systems', http://catless.ncl.ac.uk/Risks/) should have some examples. |
| Wed 05 Mar | John CJ | The most famous would be the Therac-25 (a medical linear accelerator). Between June 1985 and January 1987, six known accidents involved massive overdoses by the Therac-25 -- with resultant deaths and serious injuries. [1]
[1] http://courses.cs.vt.edu/~cs3604/lib/Therac_25/Therac_1.html |
| Wed 05 Mar | shrinky | Does it have to be real? Law & Order had an episode about people killed by Insulan overdoses at a diabetes clinic caused by a virus in the measurement equipment. |
| Wed 05 Mar | Joel Spolsky | Last week Cornell University mailed out acceptence letters to 550 students who weren't really accepted.
http://www.nytimes.com/2003/02/28/education/28CORN.html?ex=1047099600&en=dcb0a9808b350b4a&ei=5062&partner=GOOGLE |
| Wed 05 Mar | Patrik | And in other older-than-old news today:
'The cause of the accident that destroyed the first prototype of the Swedish JAS-39 Gripen Multirole combat aircraft has been traced to a software problem, program officials said last week'.
http://catless.ncl.ac.uk/Risks/8.32.html#subj2 |
| Wed 05 Mar | Philip Janus | Hey Kruger!
'Whatever happened to all the disasters that were supposed to be caused by 'Y2K'? There were all these stories about how there were millions of computers running old programs (particularly in government agencies) and there just wasn't enough time to fix them all. And then Jan 1 2000 came and ........ nothing.
Now, we all know that the 'Y2K problem' was grossly exaggerated by consultants hoping to charge companies a thousand dollars a day to fix the problem, but still, I have to admit that I'm quite surprised at how few reports there were (essentially none) of major disasters that were the result of Y2K related problems.'
I hate people who say this. It comes up in the news every so often.
Have you ever stopped to think that maybe the reason that Y2k was a non-event was precisely *Because* all the software folks put in overtime to get everything fixed?
Philo |
| Wed 05 Mar | rexguo | A medical simulation and visualization company wanted to hire me awhile ago and I gave them The Joel Test out of curiosity. They scored 3 out of 12. Their software is used to simulate and plan surgeries of brain tumor removal and siamese twins separation, among other serious things. I still shudder when thinking about it. This is a real story, not a joke. |
| Wed 05 Mar | | you'll have to google it but IIRC the London ambulance service had to abandon it's new overcost overlate dispatch system because of a UI flaw: if there were more incidents than visible rows, the operator didn't know because there were no scrollbars or other indicators. IIRC 11 people or something died that day because ambulances never reached them. Or something like that. Not making it up, honest! |
| Wed 05 Mar | dunno wair | Philo,
That's certainly one theory. It doesn't hold up very well, however, once you realize that countries that made virtually no effort to combat the Y2K problem didn't implode.
Admittedly, many of those countries don't rely on computer systems to the extent that the more industrialized nations do, but I've yet to see any proof presented in the past couple of years that disaster was averted by the legions of COBOL programmers unleashed on the Y2K bug.
I'd certainly be interested in any sources that indicate otherwise, though.
And any of you Y2K programmers who want to 'fess up should feel free to do so...we promise not to ask for the money back. ; ) |
| Wed 05 Mar | BC | Y2K was always a mystery to me. I believe it was one of our fears, started by rumor. Don't know if it's out yet, but 'Bowling for Columbine' looks like a good movie. |
| Wed 05 Mar | Daniel Tío | It didn't kill people but it was a big economic tragedy: the Ariane 5 (a rocket from the European Space Agency) blew up in the French Guiana in 1996, barely a minute after having been launched due to a software error.
According to the urban legend the crash (pun intended) was caused by trying to stuff a 64-bit number into a 16-bit space. |
| Wed 05 Mar | Adrian Gilby | Forgive me if I don't look this up, but I don't think it's an urban legend. I studied the Ariane 5 disaster during my software engineering course. As I recall, the software had originally been written for a less powerful rocket, with the result that it couldn't handle numbers bigger than a certain size when dealing with telemetry calculations. They took that software, used it in Ariane 5 without checking what would happen if it was fed numbers more appropriate to the new, more powerful rocket. Result: When the thrust got above a certain level, the chip entered 'debug' mode and started sending diagnostic information to the engine control systems. Unfortunately, the engine control didn't know it was diagnostic data, and treated it as normal instructions. |
| Wed 05 Mar | Must be a manager | Philo,
Y2K was a massive con because it really only had serious consequences for large transaction-oriented enterprises like banks, airlines and government departments. Those places were well aware of the problem, like many others they deal worth, and had programs in place to verify their processing routines in ample time, often as part of major upgrades.
However all the outsourcing firms and other con artists convinced legions of smaller companies that it was a life and death matter for them, and extracted money from them for work that wasn't necessary. If a small business sends out an invoce with the wrong date, it's not a major drama. |
| Wed 05 Mar | John McQuilling | I believe the Patriot missile system use in the Gulf war had a problem with its clock getting out of sync with the radar system, if it stayed on too long. The system did not attack the missile that killed several American soldiers because of the timing error.
There is also a funny story that when on of the first North American missile radar systems went online an alert was triggered because no one considered the radar reflection from the moon. Nothing happened but consider the possiblities. |
| Wed 05 Mar | The voice of rationality | My favorite example is the Mars Climate Orbiter which crashed into Mars in 1999. Primary cause was a mixup between metric and english units. I'd argue this was a software issue.
If I remember right, one team used Newtons and one team used feet-pounds to calculate force for course correction thrusters. The result was a series of incremental errors leading to a small but critical trajectory difference that caused the orbiter to burn up in Mars' atmosphere.
http://www.wired.com/news/technology/0,1282,31631,00.html |
| Wed 05 Mar | John McQuilling | Regarding Y2k which I did some work on:
1) Not all the problems happened at 1/1/2000. Many systems started failing as they got close. For example, bank cards issued in 1997 with 00 expiration dates did not work everywhere, the cards were reissued with 1999 expiration dates while the problem was fixed. I suspect that a lot of busisness systems fell in to this category and got fixed as they failed. Some systems got fixed after the fact also. (I just saw a 3/4/103 date in a report this morning)
2) At many businesses the systems have to be fixed regularly. It is not as if the systems are written and run perfectly,forever. Many of them have to be tweeked pretty regularly.
Some of this is business changes, but some is dumb coding errors that take a while to show up. I have seen many systems that have 2 - 3 programmers that maintain them, full time. In that environment Y2k was more work but it was not unusual for the systems to be patched regularly so they just fixed this set of bugs.
I was surprised not at the business programming working ok but all the embedded systems also worked (I bet some failed but nothing serious). I believe there was some coordinated testing of the banking system and power grid that handled that. |
| Wed 05 Mar | James | In 1981, Air New Zealand flew a DC10 (passenger jet) into Mt Erebus in Antarctica. I think it's the only time they've killed people.
IIRC, Thomas Mann, who was the Commission of Inquiry concluded that:
- they used a computer both for programming navigation and checking fuel economy
- they put a fuel economy route into the aircraft, different from what the crew thought it was doing.
A variety of non-computer things were also wrong. |
| Thu 06 Mar | Simon Lucy | One Y2K bug I got dragged in on was a car rental system, my software picked up the rentals and created the accounting gunk and statistics (still does I think).
No rental with a return date over 1999 contributed to statistics or could be found in my databases. I knew _I_ didn't have a Y2K problem. A short time browsing the original database found that the rental software company had found a novel way of solving the Y2K problem by doubling 19 to 38, so all the rentals were due to return in 3800. |
| Thu 06 Mar | Stephen Jones | Wasn't it in the Falklands war that a British ship was sunk because the missile defense system had been programmed to recognize missiles from Nato allies as friendly, and the Argentinians were using French missiles? |
| Thu 06 Mar | RRKSS | An ESA spacecraft exploded after a software bug triggered it to lose control. |
| Thu 06 Mar | Marcos M. Rubinelli | A nice link to follow:
http://staff.washington.edu/~jon/pubs/safety-critical.html
'Safety-Critical Computing: Hazards, Practices, Standards, and Regulation'
It includes the infamous Therac-25 story |
| Thu 06 Mar | Colin Newell | A lot of fatalities seem to be related to industrial control environments. Industrial robots being the obvious candidate for causing fatalities, as they are both common and very capable of hurting humans.
There is a quick summary of accidents in the Safer C book in the first chapter detailing accidents from the fatal to the comical.
These are fairly old however, the book itself was published in '95. The figures about the 'industrial control environments' come from a 1988 report by the RSRE.
There were however an estimated 200 people killed or maimed in this way by then however. |
| Thu 06 Mar | Greg Shoom | Alan Cooper, in his book 'The Inmates Are Running the Asylum' gives an example of a passenger airline in Columbia that flew into a mountainside, killing everyone on board, because of bad software. In this case, the pilots had told the airplane's computer the destination, and had then punched in the code for the beacon which the airplane should automatically follow. Only they entered the code for a different beacon and the airplane took the wrong course. The accident was due to human error, but the human error was made possible by stupid software, which should have been smart enough to warn the pilots that the selected beacon didn't match the selected destination.
There was also that case in the 1980s where a US Navy ship shot down an unarmed Iranian passenger airliner because the ship's software erroneously identified the plane as attacking. It was a clear case of software failure, since a weapons system should be smart enough to distinguish between an attacking military aircraft and a passenger airliner that is in a normal ascent. |
| Fri 07 Mar | Nate | joel, the cornell oops was a people bug and not a software bug so it doesn't count. feh :P
-nmr |
|
| Partnership Software Houses vs. The Factory | Wed 05 Mar | Tal Rotbart |
| Software Engineering can be a creative occupation. Do you feel ‘high’ from figuring a good solution to a tough problem?
Many of us are employees in large software companies, or other types of large organizations’ software departments where more often than not, coding is a labor rather than an art. Many of us wish we could go freelance, or start our own company, but lack the funds and/or the courage, especially in the current economic climate.
My argument is that writing software is a creative process that doesn’t translate well to the ‘factory’ approach prevalent with most software companies. I think that a model such as the partnership firm would be a better fit. Firms the likes of which architects, copyrighters and even lawyers organize in.
The model, for those less familiar is something like the following:
You have your partners, your junior-partners and employees. After a set period of time (usually two years) an employee either becomes a junior-partner or must leave. Partners and junior-partner are entitled to profits based on a different ratio they also have different voting powers based on the same ratio.
*. This way, no one toils forever in the company without becoming truly a part of the company – when you work for your own gain you are more motivated and have a vested interest in the success of the firm. And don’t yell ‘options’ at me… We know what their worth. I have enough useless options to cover a football field.
*. Everyone have to carry their own weight, no stealth unemployment. Partners and junior-partners
*. No ‘bosses out of touch’ – Everyone writes code, works with clients etc.
*. No ’40-your out’ attitude, when you are 40, you’ll be a partner by then – no one is going to kick you out, you’ve proved yourself worthy…
Etc… I’d appreciate your comments… |
| Wed 05 Mar | Marc | The desire to have a company where 'Everyone writes code' is a common one. But it is faulty thinking.
As I'm sure Joel can attest; 'management' is a full time job (and an art form in itself). Managers are forced to handle issues that are completely unrelated to software development. Between acquiring clients (be it by selling commercial software or development services) and handling the day-to-day corporate issues (payroll, insurance, taxes, staffing, property, asset management, ticket off clients, etc. etc. etc.) they have precious little time to sit down and produce code.
And management isn't the only group in this category. There are also people in reception, technical support, accounting, and sales that also do not code. All of these are vital positions in a well run company.
All that said, an employee owned software firm is an excellent idea. It would help to alleviate some issues that common plague us (like high turn-over). But I wouldn't set it up like a law firm, rather something along the lines of Avis. Law firms work because each lawyer is his own little company within the larger context of the firm. This doesn't apply well to software development where everyone must be part of a 'team'.
Avis on the other hand is owned by the employees but run by individuals that the employees hire. So the CEO is a typical CEO with all of the common prerequisites. But rather than answering to some selected stockholders, the CEO answers to the employees (they collectively hold the most stock). This works out well because the employees control their own destiny. But it also means that someone is at the helm to keep everything working smoothly.
The most important thing to remember, an 'out of touch' manager isn't someone who doesn't code. It is just a poor manager. |
| Wed 05 Mar | Mikayla | For a shrinkwrap company, Marc, what you say makes a lot of sense. Also for small-company 'consultingware' intending to become shrinkwrap. I'm not sure partnerships would work as well there as a CEO who actually is accountable.
On the other hand, when I thought about turning a team I knew and trusted into a consulting shop, our structure looked a bit more like a 'partnership' model. Though we certainly had non-coders - my second in that group did documentation and testing, which made a great amount of sense. I had the vision of what the result should be firmly in mind, and he had the cynical hands-on perspective of what we actually had at any exact moment. |
| Wed 05 Mar | mackinac | Software engineers working in big companies, and many small ones, are managed like production line workers. I think this kind of management thinking is the root cause of most problems with software development.
The software partnership is an interesting idea, but does have the problem that software development is usually done in teams, and as the other post stated someone still needs to do the management tasks.
I used to work for a small software development company that was closer to the ideal software development environment. It was founded by people who had done development, but some did management and others stayed in development. As the company grew it stayed a software development company, but included managers and support people as well as developers.
It ultimately disappeared due to several reasons.
First, it had a hard time getting work. It had a good reputation for the work it did, but it depended on getting software development contracts from other, usually bigger, companies. You might think that with all the talk about a software crisis and how software is over schedule, over budget, etc., that a company that can do better than average would have customers lined up. But the companies that need software development done aren't set up to do things that way. Being exceptionally good at software development doesn't count for much. Your partnership probably would have the same troubles.
Second, it lost its culture and character as a software development company. This was due to a combination of factors. One was getting too big, but more importantly it got bought by a bigger company.
I think the partnership idea has some merit and it would be interesting to see someone try it. It may not be quite the best arrangement for software development though.
The best places to do software development seem to be companies where software development is the primary business of the company. Being small and privately held helps, but may not be necessary. For example, SAS is big but privately held, and MS is both big and publicly traded. Still, in both cases software development is the primary business of the company. |
| Wed 05 Mar | Marc | This is essentially the point as was making Mmackinac. While it might seem ideal to have 'everyone code' and have everyone be partners, it isn't a recipe for success. It is just a recipe for something different.
The true recipe for success is quality people, a solid business plan, sufficient capital, and a hell of a lot of good timing. Even then, a hefty dose of luck can help a lot as well.
Partnerships are risky and should only be done with people you know well, like a lot, and don't care about ruining your friendship with. Because if it doesn't work, it won't 'not work' in a pretty way. It will be ugly. Of course, if it works then you have landed yourself in a perfect position. It is simply risk and reward. |
| Wed 05 Mar | aa | Just want to point out that SAS and Microsoft are software development companies, but not in the same sense being talked about above. They both make products rather than do contract programming.
I think there's a maximum size you can grow to with custom coding, without adding products or business consulting to the mix.
Also, Microsoft's primary skill isn't software development, but rather marketing, aquisitions, strategy and business development. Their competitive edge is on the business side rather than the code.
From what I've read, SAS is noteworthy because they compete with other companies by treating their people well, keeping turnover down, etc. It's a HUGE and often underappreciated competitive advantage. |
| Wed 05 Mar | Simon Tzu | My company, www.deeptalent.com , works in a similar fasion to this. We work as independant consultants each of us quoting for our bit of the work and dividing the income in a similar fashion. Project management and sales are roles whoch are accounted and billed for as is any other work.
That said there are only three of us and we have only worked on small to medium size projects - it remains to be seen how scalable our system is. The environment is good and we make an OK living. |
| Wed 05 Mar | Must be a manager | On the contrary, Microsoft's primary IS software development. It's popular to explain their success as being due to marketing, but there are heaps of othre companies with good marketers, and you know, most of them don't do anywhere near as well as Microsoft.
Microsoft is a software company founded and run by software developers. From the start, it understood the complexities of software development, and the potential. That is why they are the most successful company on the planet.
Even down to little things like recognising that the best work will be produced if people can concentrate, and thus developers have offices. As a corollary, middle managers that don't get software don't get hired at Microsoft. |
| Thu 06 Mar | Bored Bystander | I know a company that is structured a lot like what the original poster is describing. This company has both products and services. It was founded as a collaboration of developers who were disgusted with the treatment they received from their then-current bosses. The owners are, legally, partners. The company was springboarded by one successful niche product.
My role - I contracted to this place; the company asked me to develop a follow on product in their vertical market back in the mid 90s. When I was done with a first cut of this product, they started to talk to me about being employed by them. I demurred.
Now, here's the problems they seem to have.
The partners are all technical. There is not one marketing, management, or sales guy in the lot. There is absolutely no diversity of insight. It's just one guy being a Linux zealot while another one wants to do things in Delphi, etc. So, much of the partner's energy seems to have been wasted in in-fighting over technology direction.
The partners spend the vast majority of their time doing technical work instead of strategizing or building relationships. Like geeks, they hide their heads in their monitors. Here is a concrete example. They developed a
web site in their industry that was preeminent for its type, as a pro bono gesture to that business community, which has racked up literally millions of hits. When that business association sought a paid, intranet version of this web site, this partnership *completely* dropped the ball. The business assoc. selected a vendor that later wound up reneging on the deal. They totally snatched defeat from the jaws of victory.
The point is - early success created an atmosphere with these guys of being too good to schmooze, talk, become known as solution providers. They think they can throw out a product and it will sell itself. That is a pattern they seem to have repeated several times. The problem is, the first one DID, but that hasn't panned out since that first lightning struck.
Oh, yeah. These guys who were once demeaned by their employers now do the demeaning, proving that success spoils most people. One partner thought it was a big joke to dick me around on payments while he went out of town. Another one referred to me once in the office overbearingly as 'their contractor' to verbally override my introduction as a consultant, like I was a frikking warm body. There is a third partner that seems to do nothing but post to recreational newsgroups from his home office.
So, I've seen a techie partnership. I am not sure what the magic formula is, but a bunch of programmers who have lucked into one success story doth not a a long term corporate strategy maketh. In fact, I don't find the subjects I'm describing particularly admirable.
I think the factory model 'works' because being successful in business isn't just about being technically competent, and the people who establish and maintain the important business relationships in most companies are almost completely removed from technical people in terms of background, values, and sympathies.
The sort of people that get off on demeaning technology people in little pigeonholes while they brag about commissions and their f***ing Volvos and Lexus's are the sales and marketing people who happen to make rain. |
| Fri 07 Mar | Simon Tzu | Bored Bystander, you describe well a lot of the problems companoes founded by pure techies face. Pure marketers face the converse problem of delivery but they will at least win the comissions and do not seem adverse to hiring technical staff.
This I think is the primary difference. Geeks seem far more reluctant to admit there are areas outside of their skillset and ger people in to take care of them and if they do actually get sales people in they then proceed to scare them off by making them store sales proposals in CVS and use VI.
It boils down to being mature enough to either adnit you will never have skills in a particular area or to streth yourself to acquire said skills. Sales is not all that hard put it does require picking up the telephone and speaking to people. _Rain Making_ by Ford Harding is a good book on this topic, it is targeted at those selling professional services (like engineers, architects and lawyers) and is perfectly suited to software developers. |
|
| Critique of joel's "why complex forum software bad | Tue 04 Mar | westyx |
| Idve closed the quotes, but the subject line was too short. What it *should* have been was Critique of joels /why complex forum software is bad/ (yes, those inside quotes are escaped).
Id quote the appropriate section, but since quoting is bad,
Joel mentions that you cant reserve a nick on irc. Now, i dont know the last time joel actually went to dalnet, or efnet, or any of the other networks that are still around, but of the 4 irc servers that i frequent (2 regularily, 2 infrequent), on *all* 4, i can reserve my nick with a password.
Joel also mentions that oldtimers tell youngsters to read the FAQ on usenet - and cant understand why this is wrong. If there is a frequent posting of the faq, it is pretty much always available as an article, and thus available to anyone that looks. Im sure if you saw the same question posted in your forum over and over youd post a faq (probably pointing them to your forum article :) ).
I think you also miss that the fact that if people dont like a forum, they will go away and it will wither. I dont see usenet withering - if its so hard to understand and abide by the rules, why isnt it dead? If a webboard/usenet community is vibrant and alive, perhaps people actually *like* being able to quote, to thread, to see what posts are new. |
| Tue 04 Mar | Dennis Atkins | You have to admit that Joel is right about one thing -- talking incessently about the design of the forum rather than the topic of the forum is BORING BORING BORING. |
| Tue 04 Mar | sgf | Yeah, imagine how bad it would be if he had posted it, rather than just emailing.
It's obvious he's made his mind up, so anymore posts disagreeing with his approach are pointless. |
| Tue 04 Mar | Eric J. Bowersox | I can definitely vouch for the correctness of Joel's thesis that a community is shaped by the implementation details of its software. I speak as someone who has re-implemented community features to look and feel *exactly* the same as existing software, to preserve a community's character. And then I did it AGAIN.
The community in question is Electric Minds, now at http://www.electricminds.org , which started life on a WellEngaged conferencing platform. When the community was acquired by Durand Communications, I worked as part of the team that rewrote our own software, CommunityWare, to work exactly like the software the community was accustomed to. Then, when the company (since acquired by another one) closed down the system hosting Electric Minds, I wrote a new software package (the Venice Web Communities System, http://venice.sourceforge.net ) that functioned like CommunityWare did. The idea in each case was to supply the same tools that community members and hosts were used to, and preserve the character of the discussions.
Surprisingly, many of our choices are the same as those Joel has made. We use a linear conferencing model as well, with the 'post box' at the bottom of the page. Some things that Joel has as fixed choices, we have as optional. Our conference hosts can delete posts and topics as needed, but in practice, they seldom need to do so. (I like his 'delete post for everybody except the poster, who still sees it' idea. I may steal it.) Venice can allow anonymous posters, but EMinds has chosen not to do so.
Excellent article, Joel. Indeed, as someone who's believed in online community for a long time, I am definitely still plugging... |
| Wed 05 Mar | Nat Ersoz | How about this be the last commentary the discussion format? And also the last commentary on Joel's commentary of the discussion thing? Gads, talk about lame. |
| Wed 05 Mar | Patrik | Westyx, I disagree with a couple of points you make,
1. It has been pointed out that you can reserve irc-names, but irc is a mess these days anyway. I've seen that your registered name expires if it sits unused for a period of time. Then you come back, and someone else may have reregistered it. I dont know if irc-names still expires, I havent been on irc in years. Also this registration service at least used to be vulnarable to net-splits, which means that the service that nagged you to change your nick could be offline for long period of times.
2. Usenet FAQs.
You often see repeated 'newbie' questions here on JoS; and in my oppinion the people on this board are more friendly, pointing newbies in the right direction reposting links to old threads and such. On usenet you see a higher frequency of 'RTFM', 'In 1991 newbies read FAQs' and 'Lets moderate this discussion' - kindof answers to newbie questions. Reposting of the FAQ at all times breaks the rule of repetition being boring. I think this repostíng of the FAQ adds to the environment being more hostile. Regulars that have seen the FAQ for the umpteenth time gets bored, and take it out on newbies.
3. Threading.
Dont forget what Joel said about the intended audience for this board. It was his customers that would post for technical help. My parents could use this simple board. They would be lost on usenet, threading or not.
Have this horse not been beaten enough by now? :) |
| Wed 05 Mar | Dimitri. | Regarding the discussing of the forum here: I do think it would be boring as long as the discussion would stay on this forum and this forum only.
However, I think that discussing the general phillosophy of designing forums is interesting and suitable for this place.
Indeed, small design decisions affect a lot in the way a community behaves. And I have to agree with most of Joel's opinions, even though I don't second the ones about news and slashdot.
However, I think the size also has a huge effect on how a community behaves, and that has to be taken into account. For a relatively small comunity, you can go with very simple design and manual moderation, while for a huge one like slashdot, you do need something autommatic, if you are not to hire thousands of editors. Well.
ps. about scaring the users and making them attentive: in Sweden we have a way of paying bills by typing a VERY long number from the paper bill (10-16 digits) into a web form. First I thought that there would be a huge number of people entering it wrong, but I understood that it happens in much smaller scale than expected, due to the fact that people are very aware of the fact that it's very probable to write it wrong, and are cautios. It still sucks, but it seems to work. |
| Wed 05 Mar | Jeff Lewis | Joel mentions that sending the thread to the user when new posts are made is bad because they don't need to return to the forum.
What about just notifying the user that someone new has posted to that thread? Nothing more, no content just a short email with a link to the forum... |
| Wed 05 Mar | Rob Moir | An update with a link to the forum would still encourage people to dive in and read their post only. I found myself doing this on the rage3D forums when i was posting there about a problem i had. I made a point of staying and looking around and managed to answer a few people's issues myself, which is how you get 'community' - but it was damn tempting to just get what i wanted and split.
Oh and if you had a link to just the forum you'd get endless streams of 'Well we're already getting email to the forum how hard would it be to make it a link to my actual article...whine whine...' |
| Wed 05 Mar | Joe Grossberg | Well one thing I disagree with is the fact that they don't have a policy about why they delete certain posts from the forum.
Sometimes it's obvious -- if you call Joel names or post a link to some porno, you're gonna get discarded, and rightfully so.
However, I've posted things before (e.g. a link to a Slashdot discussion that I thought was highly relevant) and seen them disappear. And I have no idea why (maybe personal animosity Joel has towards Slashdot after the readers flamed him before?), and this leads me to post less often than I would.
After all, why would I put the time and effort into contributing something thoughful if it can be removed without explanation and, as Joel himself admits, without my even knowing? |
| Wed 05 Mar | Dennis Atkins | Nat,
This is their whole life. It is all they know about - internet forums. That's why they can not discuss anything other than their obsession.
What the world needs is a good forum for discussing forum design. It should be open source and GPL'd so all the forum design fans can eat their own dog food.
All posts sshould be displayed in ochre text with a lime green background. And posts sorted some other way than the last time one visited. And registration, or not - you decide. And smiley icons or not, selected from multiple sets called 'squibs'. Everything configurable, or 'everyhooconfigamatic'. That way forum fans could spend all day every day reconfiguring their forum ('squelking') and adding new features ('pertibunking'). |
| Wed 05 Mar | Jimmy Chonga | Firstly, to those who continue to reply that conversations regarding the design of the foum software are 'boring boring boring' (ignoring the fact that the subject line usually clearly indicates the topic and hence can be easily avoided) _Joel_ broached this subject in his latest mailing. From a discussing Joel's article perspective that is THE topic right now. If it's so boring why did Joel make his virgin emailing specifically about it? Oh, right, the 'boring' title only applies to perspectives or commentary that you disagree with. People often attempt to get the last word by giving their opinion, and then declaring the topic a dead topic not worth talking about, etc. It's a very weak debating technique.
Secondly, Joel's emailing, or rather the online variation of it as I hadn't subscribed, is not the be-all and end-all of discussion board wisdom: It is Joel's personal perspective on how online communities thrive. Personally while I agree with a lot that Joel has said, I found some of his points contradictory and illogical (ex. The lack of channel/nick ownership ruining IRC communities, yet in another paragraph the lack of forum ownership is a primary tenet of a great online community. Indeed, I would agree with the perspective of others who basically say that the Joel forums thrive DESPITE their design, not because of it. Drop a community site out in the middle of nowhere, with no real draw (the draw in this case is Joel's perspectives), and see how thriving of a community it gets.
Don't take this as overly negative: Personally I thought Joel made a lot of great points, however I dislike the connotation that it is some basic truths rather than simply an opinion, or the quenching of conversation that someone doesn't agree with. |
| Fri 07 Mar | MarcelG | You could say that this thread is boring...you could just as well say that this thread is exciting.
Whatever you say, it might be relevant to anyone's opinion.
Not that that matters, but it could.
The fact is that ever since mankind started to find it's way in the 4rd dimension we call the Internet, it never had any experience in how to use it's senses in that dimension.
in the factual fysical world, we naturally respond to our psychological 'blueprints', and form natural groups such as families, friends etc.
We use communication of various forms of which only 10% (and according to various very smart people even less) is verbal communication (simple speech).
The rest is non-verbal communication, eg. signalling, posture, tempo, expression, status, etc etc etc.
And then, 20 years or so ago, we started to use the Internet...which knows only written communication, which is in fact only speech, but written....so without the tempo, without the posture and without all the aspects of non-verbal communication.
Now, we see that we try to put those non-verbal communication aspects into the internet. We tend to give ourselves an identity in the form of an Avatar, or a nickname.
This i-dentity then gains status, and 'respect', which we also see in the fysical world...but it also gaines privileges, such as judging other i-dentitities, and accessing 'private' parts of the internet.
Ok, to make my very long story a bit shorter; what I would like to say is this: we have thought many years of our psyche, at least since the old Greek philosophers we are thinking of such things, but only the last 2 decades we have got to know the internet as a new dimension to our psyche.
Not all boundaries and groundrules have been set yet, but we all experience that it actually _is_ changing, while we use it.......it's growing up, and we need to grow also.
We need to study the interaction of humans on the internet, how hierarchy works, which roles are defined, what groundrules are active 'by nature'.
We did the same 20.000 years or so ago when we started to live in static villages. We did this when religious changes occurred, and when populationchanges occured...
Every time the surface changes, we change....
and now the Internet is changing...
At least I think it's worth thinking about. |
|
| Utility functions and Aspect Oriented | Tue 04 Mar | Doug Withau |
| Andrew Hurst asked a question about Utility Functions last Friday. (http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=31915&ixReplies=16)
I have read about Aspect Oriented programming before, but I could not remember the buzzwords. This morning, Slashdot refreshed my memory: http://books.slashdot.org/books/03/03/02/2253212.shtml?tid=108&tid=156
Some links that explain better than I could:
http://www.eclipse.org/aspectj/
http://aosd.net/
Has anyone used this in a real project? It seems like the solution Andrew is looking for. |
| Tue 04 Mar | Andrew Hurst | From my reading of Aspect Oriented Programming, it seems more suited to the 'insert debug statements' type programming. Thats the clearest example I've heard it used for. They don't affect the flow of the program since they don't change anything if removed. I wasn't too fond of the example where the routine that started writing out the page in his JSP's would have an aspect to check for the user being logged in. Didn't seem too intuitive to me.
Regarding whether it did what I was asking before, I don't think so. The functions/methods I was talking about before were needed but didn't fit in the library. I don't think you'd set up an aspect to make sure every file path represented as a string had a trailing slash.
Though, anyone around here used AOP? It sounds interesting, but the possible spaghetti code factor really scares me away from it... |
| Tue 04 Mar | Li-fan Chen | In case Aspect Programming is not limited to Java, will you let us know what other language allows for aspect programming? |
| Tue 04 Mar | shrinky | Li-fan, perhaps this would help you...
http://aosd.net/tools.html |
| Tue 04 Mar | Just me (Sir to you) | AOP has been researched in many different environments. In the .NET world there has been some buzz recently on Clemens Vasters' AOP ServicedComponents work.
http://radio.weblogs.com/0108971/2003/02/07.html
Personally I find this interesting but dangerous stuff. If used widely the codeweaving has the potential to trow up some pretty scary hairballs IMHO. |
| Tue 04 Mar | Justin Rudd | Check out this ( http://www.iunknown.com/Weblog/WhatsupwithCLAW.html ) response from John Lam on AOP. Personally I'm working on an AOP-like framework ( http://pinetree-tech.com/weblog/archives/2003/02/18.shtml#000215 ) that doesn't magically add in aspects. When debugging you would actually step threw the code. Also you might want to check out extensible C# ( http://www.resolvecorp.com/products.htm ). It uses attributes to inject code into your objects before a complete compile. XC# isn't complete AOP, but it gives quite a bit of the benefit without hiding anything. |
| Tue 04 Mar | rwh | Actually, the impact on control flow reminds me of INTERCAL's COME FROM construct. |
| Tue 04 Mar | Colin Evans | The general goal of AOP is to isolate system concerns (security, persistence, threading and synchronization, transactions, resource pooling, logging) from the core 'business' concerns (manipulating data, business rules) and doing it in a transparent way. This simplifies code maintainence and makes it easy to integrate new system services with existing business code at deployment time.
AOP techniques are currently common in a lot of Java persistence frameworks. A lot of Java O/R tools (Hibernate, Castor, OJB) use dynamic proxies or runtime code generation to intercept method calls and save or load objects appropriately. JBoss 4 is basing its whole EJB implementation on AOP practices. |
| Thu 06 Mar | T. Norman | Beware of Aspect-Oriented programming. It is patented.
See US patents 6,467,086 and 6,442,750 :
http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=/netahtml/srchnum.htm&r=1&f=G&l=50&s1=6,467,086.WKU.&OS=PN/6,467,086&RS=PN/6,467,086
http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=/netahtml/srchnum.htm&r=1&f=G&l=50&s1=6,442,750.WKU.&OS=PN/6,442,750&RS=PN/6,442,750 |
| Fri 07 Mar | Just me (Sir to you) | 'It is patented'
What isn't? |
| Fri 07 Mar | Chris Tavares | It's patented by Xerox. If ever a company was guaranteed to drop the ball on innovative technology, it's them. |
|
| __FILE__ and __LINE__ in C# | Thu 06 Mar | Liron Levy |
|
One thing that really puzzle me in C# is the lack of
__FILE__ and __LINE__ macros that allow me to embed
this useful information in logger messages. It seems that
the only way to get this information is by using expensive
runtime calls to the .NET infrastructure (and even this
is possible only in the DEBUG version of the code).
I was thinking of using the C pre-processor for doing this
in the old way but Im not sure if this is the right path.
What do you think ? |
| Thu 06 Mar | SPS Guy | Take a look at the Trace functions - it's more work, but it gives you a lot more power. |
|
| Best Practices for storage of SSN/SIN? | Wed 05 Mar | Darren. |
| Hi all,
Im working on a project that (against our recommendations) is going to need to store Social Security Number (US) and Social Insurance Number (Canadian) information. Given the recent focus on privacy and identify theft, Id like to make sure that everyone involved in the project is aware of the potential risks and pitfalls, and takes steps to mitigate them.
Does anyone have any advice (or pointers to additional information) regarding best practices for the design of systems meant to track sensitive information such as SSN/SIN? I recognize that there will be technical issues (security api, db design, system architecture), data issues (policies regarding access to systems by admins, policy for destruction of old data) and legal issues.
Thoughts? |
| Wed 05 Mar | Chris | Id be interested to here an answer for this, I have heard from others that in the design of an Online shop that you never ever store the whole Credit Card numbers. And I presume a SSN or SIN is quite a bit more important than Credit Card numbers... So my reckoning is that you shouldn't be storing these numbers either normally.
And unless it is for the government, I would say that you shouldn't even have the number to begin with. In Australia I believe only government institutions can request your TFN (the SSN equivalent). Is it the same in the US? |
| Wed 05 Mar | James | A New Zealand company that asked for your IRD number (the nearest thing to an SSN) would be bizzare and nobody would touch it. |
| Wed 05 Mar | A. Coward | In the United States many companies demand social security numbers: Banks, Insurance companies, loan companies, employers, and schools. It is not as common today, but I've also had video-rental stores ask for it. |
Wed 05 Mar | Jeff |
I have heard from others that in the design of an Online shop that you never ever store the whole Credit Card numbers
Unfortunately if you have to do reoccurring credit card charges its almost impossible to get out of not storing the cc number. Anyone have any good ways to work around this?
Jeff |
| Wed 05 Mar | Andy | Are you sure that you really need to store the actual SSN? If you just need the number for comparison (authentication) purposes maybe you could just store a hash of the SSN. |
| Thu 06 Mar | Darren. | Thanks for the feedback.
This isn't an online shop -- it's an internal financial application. The SSN/SIN is needed to pass on to government and financial institutions. I recognize the business requirement to store it, but it doesn't make me any more comfortable about it. |
| Thu 06 Mar | mb | if it's a financial app it must have all sorts of privildged data. so you probably have lots of security concerns, and are addressing them. what are you afraid of? someone stealing the whole database? hackers? internal employees?
the ssn itself is worthless, most any 9-digit number is one. it's the correlation with other data which is interesting.
when i re-enabled my cell phone i think the employee terminal displayed my id number. i think they got it from my phone number. some nice 'procedural safeguards', eh? and this was in a store no less. |
| Thu 06 Mar | Prakash S | How about you generate another set of uniqe numbers based on the SSN and some other factors. You can then use this everywhere instead of the SSN.
This would obiously invlove more work, but atleast you will be more comfortable with things. |
| Thu 06 Mar | Li-fan Chen |
Andy: That's a really good idea, using a hash.
Prakash: That's a really good idea too, that
way you partition the security zones and freely
use the user's unique ID in the system while
still mapping to the user's SSN. The idea is
once you start to associate the user's profile
and preferences with a system user id instead
of the SSN .. you can just encrypt the SSN and
User ID association, and take that data off-
line for secure storage. The assumption here
is a hacker can't access can't be compromised.
If you can ensure this reporting generation
works in a section of the network that's
carefully sealed off from the net it's even
better.
So let's say you got User table like this:
ssn Account Balance
------------------------------------------
555-55-0001 $0
555-55-0002 $50
555-55-0003 $10
You create a user ID mapping to the SS
ssn maps to user_id
5555-55-0001 maps to 1
5555-55-0002 maps to 2
5555-55-0002 maps to 3
And then store the user data like this instead
user_id Account Balance
------------------------------------------
1 $0
2 $50
3 $10
During reporting you would join the tables and
use the associated SSN instead.
If people need to be able to submit their SSN
as a login challenge.. just store a hash of the SSN
as Andy suggested, although technically there
are still some weakness to this depending on the
cryptographic library that's providing the hash function. |
| Thu 06 Mar | Will | With regard to storing credit card numbers...
Just did a bunch of research on this. Typically, you contract with an online transaction processor (like CyberCash, now owned by Verisign) to handle the credit card transaction. Verisign will store the credit card numbers for you. You access a merchant portal to settle the transactions or to issue refunds. You can store the credit card numbers but it takes extra effort (setting up a secure database server not connected to the internet) and is not necessarily needed.
(Technically I believe you do not actually see the credit card number in the merchant portal, instead you settle/refund by using the transaction authorization number which was issued at the time of the original transaction). |
| Thu 06 Mar | Jimmy Chonga | Since you need to pass the number on to government agencies (i.e. it isn't used as a password) a hash won't be appropriate given that hashes are one way (well...the one's that are half decent). In my own experience I have used asymmetrical encryption: When the user stores a secret piece of information on a machine which I am not fully comfortable with (i.e. a co-located machine that is publicly accessible) I encrypt it with public key encryption (i.e. RSA. .NET now has RSA encryption) and store the encrypted block in the database. When necessary I replicate the data to a secure machine, decrypt with the private key (that of course is not on the potentially risky machine) and use it.
Having said that there is still a risk that hackers could simply install a interception/backdoor and grab the data before it's encrypted, but the reality is that most compromised machines are one off get in, smash the windows, and run away with a dupe of the data. As long as you code sign/audit your runtime configuration this isn't as much of a risk.
Cheers! |
| Thu 06 Mar | Jonathan | I am a little surprised that no one has mentioned that a portion of people living in the US do not have SSN. Sure, they may have a Tax Id, but not a SSN. Your business should be aware that they are limiting their customers.
Also, the only corporations that I'll disclose my SSN too are financial institutions and the government. Maybe I'm just paranoid but I would shop elsewhere if a video store asked for my SSN.
On a side note, I know employers (farmers) that ask to see, but never copy the SS card for there employees. To have the SS card on file opens them to additional liability. I am not exactly sure why. I think that if INS gives them a visit, it is harder to examine the authenticity of a SSN, if the proof is not on file. |
| Thu 06 Mar | RocketJeff | Interestingly enough, Yahoo has a story about SSN's being stolen from the University of Texas. Evidently someone hacked their system and took 55,200 valid number.
The story's at http://story.news.yahoo.com/news?tmpl=story&u=/ap/20030306/ap_on_hi_te/university_hacked |
|
| Microsoft's road ahead | Wed 05 Mar | Passater |
| Kinda interesting article:
http://www.aaxnet.com/editor/edit029.html |
| Wed 05 Mar | DH | Don't post that here!
You'll offend Joel's M$ sensibilities. :) |
| Wed 05 Mar | billm | I just want to pick on one part of this article. He says that 'Current Windows based software will not be compatible with the Longhorn filesystem. Microsoft has already stated that all their own software has to be rewritten for it - so will everyone else's.'
What seems so strange about this comment is that one thing that MS has *always* done is ensure backwards capability. You can still run the original VisiCalc released in 1981 (see http://www.bricklin.com/history/vcexecutable.htm ). Joel talks about the hoops that MS went through in releasing Windows 95 to ensure backwards compatibility ( see http://www.joelonsoftware.com/printerFriendly/articles/fog0000000054.html and do a search for SimCity ).
So now this guy is saying that MS no longer cares about backwards compatibility, to the point that they will throw it all away for a new filesystem? Just doesn't sound right. There are a couple of options, as I see it:
1. MS thinks that their monopoly position is so strong that they can now bully people into upgrading regardless.
2. The filesystem upgrade is *so* important that it is worth it.
3. This guy (or his sources) is talking out his ass.
My money is on 3. |
| Wed 05 Mar | Jimmy Chonga | I definitely vote for number 3, and really the article indicates that the guy has no industry experience, or he's intentionally acting naive. Microsoft, like many organizations, has a long history of talking revolutionary, and then acting evolutionary: Product after product has been introduced as an amazing new paradigm, and then, after filtering to the market, is really just shining the existing products. Is Microsoft making a database file system? I have no doubt they are (though filesystems are by their nature already databases, just currently with really poor indexes), but the likelihood that they'll forcefeed it as a mandatory item, breaking existing compatibility is a big fat 0% probability (I'm not saying 0.1%...ZERO percent). |
| Wed 05 Mar | Marc | Some of this was interesting, but it mostly read like a conspiracy theory. I don't like some of what Microsoft does and I've been known to rant about them. But in the end, they make a lot of solid products that I don't want to be without.
Microsoft is a lot of things but they are not stupid. Sure they make mistakes. But then every company does. The difference is that good companies work to quickly correct those mistakes. So yes, the subscription model might be something they want but if the market says forget it, they will change it in an instant. |
| Wed 05 Mar | Robert Moir | I'm going to take a wild guess that the new file system will be in place and to run on the 'bare metal' of this a rewrite will be required.
In addition a compatability mode will be in place where you work through a driver that emulates NTFS type filesystems and allows older apps to work but with a performance hit. |
| Wed 05 Mar | Passater | Well, here is one more article about Longhorn being incompatible with the existing windows:
http://www.theinquirer.net/?article=4163 |
| Wed 05 Mar | Mike McNertney | The Inquirer isn't exactly a good source of information. They have 'inside info' about various products all the time that turns out completely untrue.
As for the original post, I have a hard time taking someone seriously when they clearly have such a bias. I started to look through that site the other day, but I just couldn't take it. It sounds like any second he will be claiming that Bill Gates shot Kennedy from the grassy knoll.
Some of his points may be valid, but I just can't get through the incredible vitrol and lack of objectivity |
| Wed 05 Mar | mb | Although that rant is long and anti-Microsoft, it has some valid points to think about.
One thing to think about: Longhorn has no reason to break backwards compatibility. But a Palladium system with DRM for content must. Otherwise you'll just use the content in an 'old school' mode and go around the rights management. With this system, they can even force you to upgrade (maybe on your nickel) to access existing data should they decide that the software you're using has a hole which can get around the DRM.
(Yes, you could have a sandbox emulation mode, but again it must not be able to access data 'protected' with DRM.)
Basically this breaks the whole 'open protocol' style of computing and competition, where multiple software systems can communicate and work on the same data with a shared data protocol/format. |
| Thu 06 Mar | Dan J | It's definitely #2, not #3. First of all, Microsoft isn't denying that they will break backwards compatibility - its line is that it will be worth it for everyone involved.
Look, its major moneymakers are stagnant, right? Three or four years ago, everyone who was going to buy a copy of Office bought a copy of Office. It's over. The trophy has been handed out - Office is *the* productivity suite. No one is upgrading anymore, because it's not worth it - Office achieved perfection in 2000, although most people still run 97 and deal with it.
It's all or nothing for Microsoft - if people don't buy into this new system, it will steadily lose influence. The company that wins the middleware battle will see its stock skyrocket, and all the wannabe third party companies will choose it as the company to kiss up to for the next decade or so. If that company is not Microsoft, then what else does it have? All it has left is to annoy people with its demands that we upgrade because we HAVE to have the prettier blue XP menus or we WON'T be able to e-enable ANYTHING (or something). You can't be Software King for the next decade when your battle cry is pretty blue menus. You have to lead something big.
.NET may or may not work out. Yes, from a programmer's perspective, it rocks Java's world. I think it's the best platform ever. But that doesn't mean entire development/management teams will pick it up. As cool as it is, it might not win. If that happens, Windows and Office better be there to pick up the slack and offer Microsoft some kind of influence in Software Land. The strategy as outlined by the article writer is dead on, and frankly, it's the only real choice Microsoft has unless it really does want to 'bet the company' on .NET (come on, it's Bill Gates - the man is smart enough to have a backup plan. He's at least smart enough to not let all this desktop power just evaporate).
Microsoft is not just trying to screw the customer - the plan for a database-oriented file system, if completed as they have outlined it, will offer new features that will enhance user's lives. They are putting a lot into this technology - it is not just another NT.
Now, will it enhance your life enough to make it worth such a fantastic upgrade? I doubt it, but that's just me. If they sell it at a huge discount to get a high conversion rate and then go to a subscription scheme for the next version... then it might work. *That* would be evil genius. I'd have to tip my cap to them if they pulled that off. Either way, they better pull it off and increase platform dependence or no one will cater to them anymore. They'll pull Windows/Office XP from the shelves in a few years, and it will be 'Microsoft only' or 'no Microsoft at all', where 'Microsoft only' now means that your friends and business partners are also 'Microsoft only'. Hmm.
Part of me dreads failure on Microsoft's part, because the alternative office suites are... tolerable... but man, Lotus Notes and Star Office just suck compared to Office. Of course, I still want to be able to download MP3s for free, and my personal career would benefit if they lost the middleware battle, so...
Oh, Microsoft, you make everything such a soap opera. |
| Thu 06 Mar | Albert D. Kallal | Yea, right. We are going to throw out 20 years of our files and software.
Magically, the industry will now adopt some new system that is not compatible with exiting software?
Yea...right? How dim can some people’s mind be?
It is amazing how people seem to miss the fact that customers decide to buy, or not buy a product.
Microsoft has the best track record in the industry for backwards compatibility. Apple computer on several occasions has forced en-mass the throwing out of software. That move has hurt apple every time.
With MS, you can still run GW-basic code from 20 years ago. If you want to use ms-access 1.0 that is 10 years old, NOTHING is stopping you right now. You are NEVER forced to upgrade anything.
Despite that win xp is based on a complete different core then the old dos systems, most stuff still works.
Moving the general computing platform to win XP was a very good move on MS’s part.
There is no doubt that MS may not include some DOS compatability in longhorn.
However:
The idea that Ms is going to come out with a OS that does not support the current file system?
It is UN-imagined that I would not be able to move my exiting software and files to that new system. If you can’t do that, then why am I even bothering to write this message!!
So Laughable this kind of stuff is. To absorb both a new os, and a incompatable file system at the same time is certanly the April fools joke of the day.
The worst case would be that we run win XP inside a comptatbility 'box' like we have for ms-dos now.
People actually think that if MS says to drink pepsi that I will stop drinking coca-cola.
What a warped view of the world….
Albert D. Kallal
Edmonton, Alberta Canada
kallal@msn.com |
| Thu 06 Mar | Phillip Bailey | Do a Google Groups search on the author, 'Andrew Grygus'. Suffice it to say, his anti-Microsoft sentiment wasn't exactly a latter-day awakening. |
| Thu 06 Mar | Dan J | Albert,
Let's say that I, as a Microsoft head honcho, decide to piss you off by ending backwards compatibility. You don't buy my product, and it turns out you hold the majority's opinion, and we lose tons of money. Our new platform is worth nothing.
Now, let's see what happens when I follow your plan: I reassure everyone that there will be backwards compatibility. You can still run Access 1.0 or whatever, and Office 2000 and such. There's no forced upgrade, and I can use my old software, which doesn't depend on any new Microsoft platform/framework. Everyone is happy, because Office hasn't really changed in forever and there is no unbearable pain running through the Office-using community that will be relieved by this new version. All new Microsoft platforms/frameworks continue their slow uptake.
Wait, how does the second one make money again?
It's called 'risk' - you need it to survive. Bill knew that when he sold DOS to IBM before they actually had anything to sell them. Maybe *you* don't have the gall to try and convince people they need something they don't, but there are people out there who do. In other words:
http://www.despair.com/goals.html |
| Thu 06 Mar | Albert D. Kallal | Dan, I actually am in total agreement here.
There is not doubt that market forces are changing such that compatibility does not make such a cut and dry case like I made. Breaking some compatibility now actually might be a plus, and not a minus.
In previous years, there was so much to be gained by keeping compatibility. This issue most certainly may change.
This problem of getting people to purchase new software is certainly a big issue. There is not much need to upgrade.
However, Oracle, IBM and the whole computing industry has run this way for 40+ years.
The only folks that got real big bucking this pay for use model is MS (they did not make their fortunes on a lease type of payment system that IBM, or Oracle did). They are actually in a bit of a bind this way. I don’t have the answer here, but some type of payment system is the ONLY sustainable way a software company can function.
Their OEM pre installed windows is a very good deal right now, and will continue to gen good revenues. However, the existing base of software is very good, and we are used to purchasing it, and then using it. That is not how IBM, or Oracle works.
MS really does have to figure out a way to change their business model.
They should have done this with word97. I would gladly pay $30 per year for use of word. So would most people. Now that I got it…why pay per year?
If they had trained me to pay that $30 per year, then we would not even think about it. $30 per year to write letters is nothing to me. You just purcahse a thing that activates word for antoher year.
Now that I got word? Why will I want to pay?
MS blew this one in back in the office97 days!
Today, it is a bit late to change this…
Albert D. Kallal
Edmonton, Alberta Canada
Kallal@msn.com |
| Thu 06 Mar | Kedar Borhade | As far as I think
I am no great fan of MS, but AFAIK, M$ is *not trying* to maintain backward compatibility.
It is not that it is breaking backward compatibility and forcing people to shell out more money. Their this move is going to cause a lot of problems to them too.
M$'s this move seems to come by looking at the successful :-) transition made by Apple from its classic OS to the newer OS X. ( Apple too didn't maintain backward compatibility and is running the previous OS as a app in the main.) Now M$ acquisition of Connectix, Virtual PC seems to be a similar move, run the applications from the OLDER version in a emulator rather than to provide a OS support. This will give time for newer products to come to the market and people can have a taste of the newer OS without having to lose the older applications.
So get ready for a new OS. |
| Thu 06 Mar | Stephen Jones | The article as a whole appears common-sensical, although it is basically only rehashing comments from the manstream press. I also feel it has the future of Longhorn exacltly described.
----'The biggest risk to Microsoft is that the Longhorn effort falls apart, as did its 'universal filesystem' predecessor, Cairo (W22), still an embarassment to Microsoft. Cairo became later and later, was then 'repositioned' as a 'suite of technologies', and swept under the carpet. Failure of Longhorn would be more serious, because that would severely impact Microsoft's upgrade revenue stream.'----
The reason Windows has a near monopoly on th e desktop market is 'the application lock on entry'. You don't mind changing your operating system but when you find you will have to change all your apps you start thinking twice, and then find that the apps to change to aren't there because nobody's prepared to write apps for an OS without users and there aren't any users because there aren't any apps.
If Longhorn is incompatible with all previous software then MS has thrown all of this away. Even if they get all of their major apps rewritten people will be offered the choice of paying from $300 to $1,000 dollars for a software system incompatible with all thier old stuff, or paying nothing for a Linux distro that is just as easy to install and has a load more applications than the new MS setup.
The comparison with the Apple change is misleadiing. Apple users have a fanatical devotion to their brand only equalled in some religious cults. If Steve Jobs went off to Guyana and built Jobstown with a huge 200 feet high microwave oven designed like an emac in the town square and told his 'customers' that the latest Apple experience consisted of them all climbing inside and having thier insiides fried they clamber over each other to do it. |
| Thu 06 Mar | Simon Lucy | In a way its that Microsoft is subject to the same pain of monopoly as everyone else is. The weight of compatibility, of maintaining previous versions when there is no viable competitor has reduced innovation to a stumble.
Now you can say Longhorn will have a file system which is incompatible, but then so was NTFS with FAT. To remain POSIX compliant the same structure of file handling will have to remain the same even if the permission structure is different.
Will this matter to users? Well there's a tremendous lag in software versions in use. Recently Microsoft has begun to try and fix this by declaring that all products die on their fifth birthday. This means that Windows 2000 should expire next year sometime (I really doubt that).
My wife's current place of work is a national non-governmental organisation, both machines she uses during the day are Windows 95. Their current upgrade plan is to introduce Windows 2000 on the PCs along with Office XP. Its unlikely they'll even begin to implement that before the Summer.
As has been said innumerable times, software doesn't rust.
We participate in the voluntary obsolescence of products because the thrust of the marketing and almost the whole point of the software package industry is to have the newest shiny thing.
Microsoft has managed in the past not to develop too far ahead of its user base so it can drag it along and keep them locked in.
Trying to change their whole model from providing software to a desktop to enabling distributed services with .NET and enforcing security and licencing on an individual user may be a step too far ahead of the requirements of their user base.
But there's an important fact to remember, there are no new users out there to capture that make sense. There is no New World for the Old Software Empires to colonise. Of the areas that are popularly pointed at as the 'New Market' ,you could say, China, Asia, the Third World.
China has greater and greater numbers of software developers internally, they have a written language which will always be a barrier to non-literates. The Chinese government understands how do Distribute resources rather than market by Choice and will only ever allow their own monopoly.
Asia is not a single place, just as Erp is not a single place. But where the economy allows software saturates most if not all of the countries in Asia.
The Third World simply doesn't have the resources.
So you have a classic churning market, selling to the same people new stuff which does almost exactly the same as the old stuff.
It would be better if Microsoft embraced competition (or coopetition as Ray Noorda coined it), for its own sake and everyone elses. Whilst Monkey Boy is there though, I seriously doubt that.
So, will Longhorn replace NT and its children? Probably, over the ten to twelve years after its released. Which will put me somewhere approaching my Seventies.
Will Palladium replace all the desktop operating systems or sufficiently large numbers of them to enforce DRM? Highly unlikely. If it did it would mean that the US had decided to become totalitarian which even in the current climate seems unlikely. |
| Thu 06 Mar | Stephen Jones | ------' If they had trained me to pay that $30 per year, then we would not even think about it. $30 per year to write letters is nothing to me. You just purcahse a thing that activates word for antoher year.'------
Sorry Albert but you are quite wrong on this one. You don't need Word to write a letter or even to do a book with diagrams, graphics and tables. There is plenty of free stuff out there (either Open Office or cover CD free versions of Lotus Smart Suite 97 or higher or others) and you can get a full OEM office suite from Corel or Lotus for not much more than that $30 one year subscription for Word.
If you are prepared to keep on paying each year for MS Office stuff it's because you are using many of their advanced features in a semi-professional environment, and you are probably the kind of person who will buy the upgrade when it has a feature you need. I bought Office XP for my laptop ($100 academic license) because you can import XML file into Access with it - no other reason. The average home user buys Office because he thinks he needs it, but after a year he will realize that he doesn't. Get all the money out of him before he wisens up.
IBM and Oracle lease enterprise level software to companies that need continous support; if they pay upfron they don't get it. MS took a different model, because it was selling primarily to the individual; you don't offer somebody continous support for a $30 a year lease unless you want to go broke quick. |
| Thu 06 Mar | Jimmy Chonga | Let me reiterate, and I would put money on this, that there is absolutely no doubt in my mind that Microsoft will have full compatibility with all existing applications that are not explicitly 'system software' (i.e. Office, SQL Server, Mozilla, etc.). What will break, though, is system utilities like Norton and the like: Of course they'll break. They break with pretty much every OS revision.
Even if they use a database base file system, what's the big deal? As I mentioned in another post, the file system ALREADY is a database, just a really poor one. I would say with absolute certainty that it will have an NTFS front end that will appear just as it does today: Perhaps it'll have intrinsic indexing services that will automatically index data saved, but that's just gravy. |
| Thu 06 Mar | Greg Shoom | I really find it difficult to accept that Microsoft could be so stupid as to not maintain backward compatability with existing Windows software in the Longhorn OS. It is the existing installed base of applications that has safeguarded Microsoft's near monopoly in the desktop OS market. Why don't many companies adopt Linux for their desktops? Because they have a huge investment in Windows software. What happens if they are forced into upgrading all that software by Microsoft? Many might start considering Linux, because it, paradoxically, would now be the more conservative choice, the one guaranteeing backward compatibility.
This could offer another opportunity for Linux on the desktop. There have been ongoing efforts to produce a Windows emulator for Linux, such as Wine. These have never been terribly sucessful. One reason has been the difficulty of keeping up with Microsoft's continued changes to Windows. What happens if Microsoft abandons the existing Windows OS in favor of a new one? Then achieving full emulation of Windows becomes much easier in Linux because it is no longer a moving target. In this case, moving to Linux becomes the safe choice for people with a large base of installed Windows applications but who need to upgrade their operating systems.
In other words, by not maintaining backward compatibility, Microsoft could end up repeating IBM's mistake with the PS/2. IBM tried to force a new PC architecture on the industry, but the industry balked, preferring to stick with the existing architecture. The result was that IBM lost its influence over PCs. Likewise, if Microsoft tries to force everyone onto a new, incompatible, operating system, and some other OS, like Linux, offers Windows compatability, we could see a migration away from Microsoft OSes, ironically in favor of the de facto standard of Windows. |
| Thu 06 Mar | Albert D. Kallal | >>>You don't need Word to write a letter or even to do a book with diagrams, graphics and tables. There is plenty of free stuff out there
Ok then make it $15. My point here that they should have been charging a very nominal fee that I really don’t care about. A very nice low cost yearly fee would have been the way to go here.
I am easily willing to pay $25 a month to send and receive faxes. (I do pay for a fax machine and a fax line right now), so $15 per year for word is a bargin.
My whole point here is that the software industry generally does function on a renewable model (well, *except* ms). Oracle, and IBM have run on lease and pay per use. It is the only sensible approach.
Now:
>>>you are prepared to keep on paying each year for MS Office stuff it's because you are using many of their advanced features in a semi-professional environment, and you are probably the kind of person who will buy the upgrade when it has a feature you need. I
No, not at all. Students at a University campus these days are very cheap when it comes to software. Why are they not all using Star Office right now? Star Office is free? It has little to do with the advanced features. Fact is, why am I not using star Office now? This whole issue of star office being free has existed for some time now. This is not a new issue!! What about the super cheap Word Perfect bundles?
The only reason why I will switch to star office is if word DOES BECOME too expensive to upgrade to. And, that is exactly the problem that MS has right now!!. They should have hooked me on a cheap subscription years ago. In the long run, they would make more money. As mentioned, the solution is a VERY LOW cost per year fee. (the previous failures of subscriptions from MS has failed due to the higher cost!!!…they are going about this whole thing in the wrong way!!).
It has NOTHING to do with the fact word has a bunch of advanced features I don’t use. The average student on a camps does not use advanced features of word (say, as compared to a business that is doing mail merging from a SQL database to send out over due bill notices). We use word because not only because is it good (and it is a premium product), but also the time invested in using the produced is re-useable and is used everywhere. For sure the fact that those high end and advanced features exists also makes us want to use the product. Down the road, I just might need those features. So, one really should go with the best all around product if it is AFFORDABLE.
So, star office is free, yet why do all students use Word? I had at 3 pc’s I purchased that came with Microsoft Works that included a word processor with a nice spell checker. In those cases, ms-word was also included in the software bundle. I always installed word. (yet, there was ZERO DIFFERENCE in cost between which word processor I choose). There was also ZERO DIFFERENCE in the features that I use between the Works word processor then ms-word.
However, I certainly do know that ms-word has more advanced features….so I might as well use a product that about the best for the money. (and FOR THE MONEY is the key issue here). I also want to use a product because everyone else sends me docs in word format.
I use word because it is popular and is a very good product. I know when I go to my friend house, or to a business, they likely also will use word, and thus I will not need training or fooling around for 5 extra minutes to start writing a stupid letter.
Software has its value in the fact that people use it. There is tons of $5000 products sitting in the clearance bin at the local computer shop for $40. No one in their right mind will purchase that used software. The reason is obvious that people don’t purchase that old used software:
There is no future in using the software!!!
I am willing to pay $15 per year to use Word so that I do in fact get upgrades. I will thus in fact get new features. And further, when a bug fix is required, I will get that also. I want people working on and supporting that product.
How can anyone think that purchasing a word processor for $150, and to have the company go bankrupt after they sold to the existing market make sense? After the all the customers have purchased the product, the company closes down and goes home? What kind of sustainable business model is that? It makes NO sense at all.
Companies are not willing to invest in a product that will not be around in 5 years from now.
The solution is not to trick me into trying to purchase the next version office. What a disastrous policy to bet the future of a company on fact that you * H O P E * I will upgrade to the next version . This is a policy of nonsense.
I don’t want to worry if the company is going bankrupt next month. I want a good qualify word processor from a stable company that has a business model that is sustainable over time. End of worries.
I want to train my employees to use that word processor, and know that they can use it for the next 5 years, or next 10 years. I get that with IBM, I get that with Oracle..Why can’t ms figure this out?
>>you don't offer somebody continous support for a $30 a year lease unless you want to go broke quick
Actually, you do. If ms had been charging for every single copy of word on my cheap $15 per year thing, do you think they would be better off now? With out a doubt, right now the biggest competitor for office xp, is office 2000, and office 97 (what 50% or more of the HUGE market is those two previous prdoucts). Software as mentioned does not rust. They don’t really need that many people to code and maintain the software once it is written. (IBM really stretches those dollars since much of their SAP software has been sold over and over..they still suck water that dry rock!).
MS could easily make tons of money on a $15 per year word subscription. In fact, I bet they would make more on that, then what office XP will now bring them in a year. And , the real kicker is that NEXT YEAR, they would assured of at least the same revenues, if not a slight increase. Right now, sales of some products like office will/are no doubt starting to drop.
The installed user base of office97 is so huge right now. In addition, office 97 is so good, that I really don’t need office xp.
They would EASILY BE MAKING MORE money right now on a cheap subscription basis.
They also could still charge for premium phone support. It is silly to hope that these users will some how magically decide to upgrade to office xp.
I mean, if I had been on that cheap subscription plan, I would be using office xp right now! For $25 per year, to get the new version of office?…ya..you bet I would. You would have to be silly not too!! Great, all new software for only $25 per year? ($25 would include Excel etc..perhaps $15 just for word).
Right now, will I upgrade?? Hum, no, I will not, and that means they get no money from me this year!
As I said before…this is hindsight on my part..but it WAS the way MS should have modeled their company. With the huge installed software base, and assured revenues, all they would care about is writing good software. They would have LITTLE to worry about loosing customers to other products.
In either business model, if they mess up the product, then customers will leave, but at least with my model, if you keep then using the product, then they will keep paying you money.
Right now, you can keep me using word 97 for the next 10 years, but that does not help MS one bit.
With such a large user base, and a low cost subscription, they would be so successful, that I am sure they would be back in court again!
Albert D. Kallal
Edmonton, Alberta Canada
Kallal@msn.com |
| Thu 06 Mar | Stephen Jones | Students use word because it costs them $100 for the Professional version; if they buy it bundled, and plenty of computers have Word or Office bundled, then the cost is about the same except the software is tied to the machine.
Offer the student Office on a $30 a year subscription and the next year he will decide to use something else or will have got savvy enough to be using a pirate copy. Tell the guy he gets support for his $30 a year and you can guarantee you'll be paying out double or triple the subscription price in support costs. Word is the single most common cause of computer rage.
Lotus Smart Suite is quite common in the UK because the mail order manufacturers, who have over 50% of the non-corporate market often bundle it because it costs them less than Works Suite. In the US that level of manufacturers doesn't exist, so you will probably see more Microsoft tie in.
Oracle and IBM are not typical of the shrinkwrap market. MS started off dealing with Personal Computers, and the economics are entirely different. I have loads of books and CD's; I couldn't care less if the publisher or music company went bankrupt.
And MS is not going to go bankrupt even if it never makes another piece of software. Lays off all its staff and lives of the licensing for Windows on new computers. The hardware will eventually go and if the price is cheap enough people will buy a new OS preinstalled to avoid the hassle of reinstalling the old one.
Back in the 50's and 60's in the UK people used to rent TV's instead of buying them (my father rented his for so long that they wrote him a letter saying his rent had been reduced to zero, but they weren't going to service it; we got a colour TV a couple of years later but it was ten years before we could persuade my father that he could throw the old one away because nobidy was going to ask for it back!). The system allows you to forget about maintenance and upgrade to the latest any time you want to. Yet as soon as the price of TV's dropped significantly in real terms people abandoned the idea in droves and insisted on buying. Now the only people who rent TV's are those with a lousy credit rating and students or temporary residents who don't want to be carting it around with them. |
| Thu 06 Mar | Dan J |
First off, students use Office because most universities have a laptop program now, and Windows/Office are pre-installed. This means they will only switch if using Microsoft products is against their religion. And for those who must get their own software? They're certainly not paying for it - they're downloading the pirated professional versions of XP off their campus network. Students aren't paying a dime for software. You don't have to be savvy to use a campus search engine.
Now, I think the most important point of the article, which has been overlooked here, is that of the way business people think. I believe he wrote something to the effect of 'business people like to think about golf', and Microsoft caters to that. 'Just sign the check, and all the problems will go away'. Relief of pain and confusion. Just sign the check, and we'll make all the decisions for you. Simple as pie. Excellent sales technique. Microsoft does it well, and they will continue to do so as they pitch such ideas to IT managers (many of whom were never IT developers).
Microsoft == More Golf
It really doesn't matter if it's true or not. It's marketing. Once you've hooked a few big companies, the little ones will follow. Big companies will give in to the More Golf ideal, and little companies... well, if you're an IT consultant and all your clients use Excel for budget documents, etc., they're going to want you to use Excel - are you going to refuse just because you don't want to pay for the new upgrade? No, you're going to upgrade. Fast.
Now, will Joe SixPack ever upgrade? Maybe not, but is that a big deal? Microsoft currently makes more money in site licenses for corporations than it does with home users (who pirate everything from their friends and the Internet). Unless my insurance company, bank, car manufacturer, favorite soda vendor, etc., ever feel the need to start sending me Office documents, the fact that Corporate America is on the new system and I'm stuck on XP really doesn't matter.
This doesn't mean that the home computing arena isn't important, but I don't think it's as simple as whether people will like the new Windows or not. Microsoft is investing a lot in the whole home entertainment/Xbox project, and all of that needs to be considered when you try to figure out what the Average Joe will be going for in ten years. And that's a whole other thread.
So, the $64K question is: Do Sun and Red Hat have a More Golf Enterprise Services Plan? Hmmm... |
|
| Oldest Computer Magazine You Have | Wed 05 Mar | DB |
| In the same vein of old tech books, I am curious what the oldest computer magazine you currently own. I have a Byte from 1983 on my shelf. I like taking it down from time to time to see how far we have come. I know I will never throw that one away. I know I have some older Bytes, but I could not find them. |
| Wed 05 Mar | Better than being unemployed... | I've got Issue 1 of 'Crash' - seminal Sinclair Spectrum magazine, dated February 1984 - hiding somewhere in my parent's attic. |
| Wed 05 Mar | timob | Issue 1 of Computer and Video Games - full of stuff about soldering irons and space invaders |
| Wed 05 Mar | timob | And a Creative Computing annual from about '75.
Full of printouts of Mr Spock drawn with a line printer. |
| Wed 05 Mar | Patrik | The oldest magazine I can shake out of some closet would be COMPUTE! magazine from around late 1985 or early 1986. |
| Wed 05 Mar | Tony E | Practical Computing - 1981 I kept it because it has some really awful code in it that I wrote!
Sadly I didn't keep all my old copies of Byte, in the early days it was fantastic especially Circuit Cellar and Jerry Pournelle. |
| Wed 05 Mar | Hugh | Playboy, 1961. |
| Wed 05 Mar | Bored Bystander | Popular Electronics, January 1975, with the front cover that featured the Altair 8800 computer kit. |
| Wed 05 Mar | shrinky | Abacus Quarterly, 1560 BC
Feature stories...
1. Pharaoh Gates comments on the latest 68-bead abacus from Nile Business Machines, 'Nobody will ever need to count higher than 640K'.
2. Pyramid schemes; too crazy to be true?
3. New paint software from Ra Services. Only 40 Shekels, with a royalty free library of 400 full-colour heiroglyphics! |
| Wed 05 Mar | G'ould | >> New paint software from Ra Services. Only 40 Shekels
Obviously this stuff came through the Stargate from offworld. |
| Wed 05 Mar | RH | Datamation, September 1982, which by no coincidence is their 25th anniversary issue, and so is a retrospective going back to 1957. The lead off article is a profile of John V. Atanasoff, 'creator of the automatic digital computer.' |
| Wed 05 Mar | Daniel Tío | I have several 'ZX' issues dated '82 and '83. 'ZX' was a spanish magazine devoted to the Zilog Z80 microporcessor and Sincalir machines.
The first Sinclair machines (ZX80, ZX81) sold reasonably well in Spain among the hobbyist community and the Sinclair ZX Spectrum was a real boom.
Many spaniards (like myself) were 1st introduced to the computing world with the beloved Speccy, I still have an '84 model perfectly working. |
| Wed 05 Mar | runtime | I used to collect K-Power in the 1980s. Sadly, I don't think I have them any more.. :~-( |
| Wed 05 Mar | Tom Fairlie | I used to love computer magazines. A few years ago, I through out all of my old Antic and Analog magazines (for the Atari 400/800) from 82-85. They were great. I used to get some Amiga magazines (Amiga Experience?) too.
And yes, I was a subscriber to Byte as well. May they all rest in peace.
Today's computer mags are pretty weak. CPU is okay (they have GOT to DUMP those columnists though), but I think Maximum PC is the most fun to read from the hobbyist perspective. PC Magazine is still a tiny bit useful if you want to see what's new. Aside from Dvorak though, it's like the flagship of weak. |
| Thu 06 Mar | Simon Lucy | I have issues of Byte from 1979, I think all the Practical Computing have gone over the years. I have complete Byte issues for 1980 and 1981, several for 1982. |
| Thu 06 Mar | mackinac | The 'Computer Hobbyist', vol 1 number 1. No date on that issue, but vol 1 number 2 is December 1974.
Not really a magazine, just a newsletter of a few pages. Lead article, a multipart series: Hal Chamberlain, 'A Graphical Display for the 8008'. |
| Thu 06 Mar | John | Byte November 1977
Introduces the TRS-80, shows the prototype of the soon to be released disk drive
Article on building the Kompuutar - 6502 based
Ad for 16K of ram only $485 - assembled, tested and burned in
Ad for a paper tape reader that promises to read punched tape 'as fast as you can pull it through.' $74.50 Kit or $95.00 assebled and tested. |
| Thu 06 Mar | Herbert Sitz | I'm not sure they're thrown away yet or not. But I used to have lots of copies of Kilobaud, Byte, and Creative Computing from the '78 to '80 days. I bet my parents still have them in their basement. I remember taking long bus trips to get to the computer store to get them, back when I was 14 and 15 years old. |
| Thu 06 Mar | Bored Bystander | I remember 'Electronics Illustrated' that my dad subscribed to when I was a kid. This was a 'harder core' (more technical) and less cosmetic version of Popular Electronics that disappeared by the mid 1970s.
E.I. ran several calculator type projects. One cover project I distinctly recall was from around 1964. It was a desktop 'computer' of sorts which used a rotary phone dial (!) to enter the digits. The display was a row of 'nixie tubes' which are neon filled tubes with a stack of elements each in the shape of a digit. (you see nixie tubes in military instrumentation in cold war era movies sometimes.)
I recall that the project revolved around fabricating and building a series of identical circuit boards based on transistor logic, each of which represented storage for one digit and the display drivers for the paired tube that displayed the digit.
So, that was a relatively ambitious and crude hobbyist 'computer' project, predating the mass market of SSI and TTL integrated circuits. |
|
| What do you do with your old tech-books? | Wed 05 Mar | Enjoy |
| Your probably know the problem: With every new technology cycle youre buying new books as the old ones become pretty unusable.
For example ASP2 and ASP3 (the same applies for Java 1.2 and Java 1.3 and Java 1.4): My ASP2 books are laying around without being touched for years. Its almost the same with my ASP3 books - I searched for something a few days ago after not touching them for months. And I already see a new book-tide coming (uhm... its already here): .NET.
Some books are old(er) but theyre explaning important things and such as Essential COM (Don Box) and Id like to keep them.
So what do you do with your old tech-books: Can you sell them (where? and whos buying?)? What about recycling? Do you just burn them (polluting the atmosphere)? Or what do you do?
PS: SWEng-books (such as Mythical-Man-Month) are NOT the kinds of books I write about here. |
| Wed 05 Mar | Evgeny Goldin | I just hide them in the place where I don't see them .. |
| Wed 05 Mar | used books for sale | I've got some of them stashed. I've also collected up large numbers and donated them to the library at my old high school, if they had any residual value. The day I did that, my dad was there and asked me to wait until he tied a counterweight to the other side of the house so it wouldn't flip over ;) |
| Wed 05 Mar | Neil E | They're on my shelf, silently reminding me what a waste of money some tech books are... |
| Wed 05 Mar | Patrik | Same goes for me. I have a box with 'outdated' books sitting in the closet - the oldest in the heap dating back from the mid eigthies. |
| Wed 05 Mar | Ben Combee | Austin has the 'Half-Price Books' chain, and occasionally I sell a few books there, although I usually end up buying more books than I sell.
I actually like reading through a lot of older tech books, mostly ones before 1990. Looking at 72 dpi art from the early Macintosh world has been inspiring for a lot of the mobile device programming I do now, and I love the old 'Best of Creative Computing' series; I was fortunate to get a fresh set of these from David Ahl recently in one of his garage auctions.
There are some books that are pretty useless -- it is unlikely that I'll be referencing the nroff manuals from AT&T System V anytime soon, but I did find old Turbo C manuals useful a few years ago when I was trying to implement a Borland-like console interface for the CodeWarrior Win32 runtime library. |
| Wed 05 Mar | treefrog | Yeah, but there are some tech books that it is kind of cool to have old copies of. I have all 3 editions of Stroustrop on my shelf. It is kind of nice to get a good overview of how the language has developed. Plus there certainly seem to be things in older editions of some textbooks which are not in the newer editions, and can sometimes be useful.
I do have to confess that the 1st Edition of Stroustrop came from my father-in-law's library. |
| Wed 05 Mar | Sergent Sausage | They just seem to hang around forever. I've got stacks of them in the garage, in the den, in bookshelves, in closets. They tend to hang around in the bathroom (sitting room reading material). I've been at this professionally for 12 years and as a hobby for 8 years prior to that. There are literally hundreds of them laying around. I've never thrown them away. I guess they'll make a good replacement for a cord of firewood one of these cold winters.
What's your oldest? I see a set of DOS 1.2 manuals peeking out from the corner of the bookshelf. That's gotta be, what, about 1982 or so? |
| Wed 05 Mar | Just me (Sir to you) | Repurpose them as sound proofing in the house. |
| Wed 05 Mar | Patrik | Sausage,
Oldest in the heap;
Compute!'s First Book of Atari Graphics © 1982
The Visible Computer 8088: Assmembly Language Teaching System IBM PC © 1985
Brings back memories :) |
| Wed 05 Mar | AndyW | If no one wants them from the local tech groups, I throw them away. I tried to recycle them but they were rejected by the newspaper. I tried to sell them to the local used book store but they did not want them. I gave some to the local library, they would only take a few select books. But mostly I toss them in the trash.
One day I was cleaning out my 'library' and found magazines from the early 90's, as well as programming books and other stuff. From that day on I have adopted a policy. When I am done with the sitting, while reading a technical magazine, I toss it. That way I do not pile up the information. I have stopped cutting out articles to save, now I just book mark them. When I get the next version of the book I need I toss the old one.
For example I have my original perl cookbook, but I am on the third version of ASP3.0 I do not keep the previous ASP books. Everything in my collection is up-to-date.
I do not keep |
| Wed 05 Mar | Tony E | Having chucked out loads of stuff over the last 18 months I have tried to be a lot more descerning in what books I buy. I now avoid anything with a product name in the title and anything by Wrox.
Most of the books in my library now are either from O'Reilly or Addison Wesley, stuff I keep reffering back to.
For transient stuff like ASP or .Net I try and stick to using the web as a reference. |
| Wed 05 Mar | Andrew Burton | I keep all my books, no matter how old -- I have a Vax book I bought, and I've never seen a Vax. My running theory is that when the big one hits, I can be that whizzened old coot who rebuilds the Internet. |
| Wed 05 Mar | John C. | In the past I've donated them to my local public library, which will not shelve them but will sell them and use whatever proceeds they can gain to buy books they really want :-) Also a tax deduction if you itemize, but you ought to be realistic about computing the resale value of outdated titles. (This latter applies to U.S. taxpayers, and the usual 'I'm not an accountant, nor do I play one on TV', applies. Consult a real tax advisor.)
Of course, I take care not to give away the books that are old but are true classics -- or that have nostalgia value for me, like some of the manuals for CP/M systems I used to work with in the early 80s. |
| Wed 05 Mar | Andrew Hurst |
Please recycle. Throwing books in the trash is rather wasteful, and in most places you can recycle paper.
|
| Wed 05 Mar | Philip Janus | The first pruning generated a lot of chaff, but since then I try to go through my books once a year to get rid of anything I'm not using (most of my VB6 stuff will go next time) - I donate them to the library. By keeping up with it, the stuff I'm giving them is generally sellable or worth putting on their shelves.
And, of course, it's tax deductible. :-)
Philo |
| Wed 05 Mar | Prakash S | Books are something which I never throwout. I just stack them up... |
| Wed 05 Mar | shrinky | I keep them on the bookshelf. I feel it necessary to confirm the ASCII value for with 7 different sources before proceeding with my work. |
| Wed 05 Mar | HeyCoolAid! | Humm... I bet Martha Stewart could think up some 'lovely' and 'simple' things to do with them that would only take 487 hours each to complete. Then you can hand them out as Christmas presents.
:) |
| Wed 05 Mar | Nick Brosnahan | A friend of mine just recently called me to ask what to do with an entire yard of Inside Mac books he had. I told him to pull out IM VI and use it to prop up his new monitor. Another use is to keep the thick ones around as instant booster chairs for your kids. The thin ones are usually worthless, just recycle. |
| Wed 05 Mar | mackinac | Try donating them for book sales http://www.booksalefinder.com |
| Wed 05 Mar | Bella | When I last moved, I trashed an entire bookshelf of old books, circa 1995-1998. Back from my client/server GUI days. Loads of VB3, VB4, Oracle Forms, Powerbuilder and LOADS of magazines.
It felt great to throw away so much stuff.
Next time I move, maybe I'll throw away the contents of my 1998-2000 Java bookshelf ! |
| Thu 06 Mar | Chris Palmer | I'm not sure this is much better than just trashing them, but I tend to donate them to thrift stores. They turn around and sell them for something like $0.50, so *someone* might like them, plus I can mark them down on my taxes as charitable contributions... |
| Thu 06 Mar | flamebait sr. | I keep certain sets of old tech books around just in case I'm called upon to fix some old thing built with them. An old hypercard book saved my butt once.
So I try to keep around at least representitive technology books at home just in case I need them. |
|
| Why is printing not exact? | Tue 04 Mar | Dave B. |
| Has anyone done any programming where they used the Windows API routines to print some text and/or graphics? (i.e. obtain and draw on a Printer Device Context, etc.)
If you have then you know that by querying the capabilities of the printer you can find the printable and unprintable areas of a page.
I found that even though Windows tells you that you can print in the printable area, when I draw a rectangle around the perimeter of the printable area, only the top and left sides of the rectangle were printed. I have tested this on two Ink Jet printers. Maybe its just ink-jet printers. Maybe dot-matrix and laser would produce different results.
What this tells me is that the (Top,Left) corner of the printable area is the only guaranteed reference point on the page. The (Bottom,Right) corner of the printable area cannot be guaranteed even though Windows gives you these limits.
After fiddling with the (Bottom, Right) coordinates I found that adjusting them by as little as 4 twips allows the printer to print those sides of the rectangle.
Why would the printer not be able to draw the right and bottom sides of the printable area given the limits that Windows (i.e. the device driver) sets?
Is this because of the physical limitations of the printer or possibly inaccuracies in the Device Driver? |
| Tue 04 Mar | Marc | The positioned output depends in part on the mechanical capabilities and quality of the printer. When paper is fed into the printer, there are tolerances of about 1 mm where the paper is misplaced in the y-direction. Also there are tolerances of about 0.1mm to 0.5mm in the x-direction. This is very common with Ink Jets.
It could also be that the printer-driver is bad - or has a lax implementation. A poor driver might just return the wrong unprintable area.
I've found that by subtracting a small amount (.10mm) to the printable area you almost always get good results. |
| Tue 04 Mar | Dennis Atkins | I have noticed that some very recent printer drivers from HP are extremely defective - placing things in the wrong area, aligning stuff incorrectly, drawing things that should be smooth badly. Worthless junk. Very annoying. |
| Tue 04 Mar | Dave B. | Thanks Marc.
I also discovered that the paper I'm using for the tests is not exactly 8.5 in. wide or 11 in. high. It is about 1/64 - 1/32 of an inch short. I guess if you could account for all of the inaccuracies which are incurred until and while the printer is ploting the output, you could produce exacting output, but that is probably not feasible. So, as you suggest, I will have to adjust the printable area by a small amount to account for this build up of error. I'm attempting to figure out a reasonable generic error term ( you suggested .10mm ) or a formula for calculating one. The other option might be to simply trust the printer driver and lean on the known point (Left,Top). |
| Wed 05 Mar | runtime |
With all the money printer companies like HP make, you would think they could create a printer that actually works. Printers seem like the most error-prone part of modern computing. Whenever I (try to) print something, I fear:
- mysterious 'blinken lights'
- mysteriously stalled printer queues
- paper jams
- paper reloading (easy but then the print job undoutably gets aborted or confused)
I know printers have a lot of moving parts (literally), but can't they make them more error-proof and easier to diagnose errors??
|
| Wed 05 Mar | Robert Moir | I'd say that 60% of all printing problems, and certainly 95% of all page layout problems are due to faulty drivers.
I wonder if HP have an especially bad rep here because they really do write drivers that are that bad, or they write drivers that are average for the printer industry (e.g. Crap) but just sell a lot more printers. |
| Wed 05 Mar | Peter Ibbotson | Try it again but using a postscript driver. In particular the HP drivers clip right justified text badly (i.e. a number in a bounding box) I think it's something to do with printer fonts. In general the PS drivers seem to be much better. |
| Wed 05 Mar | Eugene Patek | From my old days of writing some code to control DM printers - I think the Upper Left Corner was the beginning of axis. So it makes sense that (Top, Left) corner is a guaranteed area - they need to start count from somewhere. |
| Wed 05 Mar | flamebait sr. | Dude, why are you bothering using paper? Paper is so 90s. ;)
Your printer is designed to work for a few years, then die, so you can buy a new one. Also, dealing with the quirks of paper is a royal pain in general, even with coppiers and laser printers. The 'real' presses use rolls of paper and a cutter at the end so that they have to deal with it all once and never again. Every page edge is an invitation for trouble.
There is no economic incentive to provide completely correct printer drivers for anything other than a printer that is expensive enough to merit Postscript. Coincidentally, Postscript drivers tend to be the least buggy. It needs to work well enough for the users to not throw it away in disgust and not much better. Because there's so little choice in printers these days (Epson, HP, Lexmark, and Canon) you generally have no better choice anyway. |
| Wed 05 Mar | Marc | Maybe Joel knows the answer to this. How does Microsoft handle this? I've never had a problem with any Microsoft product when I go to print. Are they storing the offsets for each make/model someplace? They must compensate for this some how. |
| Wed 05 Mar | Dave B. | Microsoft uses the offsets provided by the printer driver. This is evidenced when you use MS-Word. If you go into word and attempt to set the margins, it will not let you set them outside of the unprintable area ( i.e. the values returned by Win32 API GetDeviceCaps(), which are from the driver ).
If you set the margins to their mimimum in MS-Word. Then draw a box (i.e. a table) on the page and expand it to fill the page, when you print it, it exhibits the same behavior as my program (i.e. the bottom and right lines of the box do not print (on my printers) ). This tells me that Microsoft uses the (Left, Top) anchor and trusts the driver manufacturer for the (Right, Bottom) margins.
As for the reason I'm using paper ( I know you were probably being sarcastic, although maybe not. ), a physical copy of the output is needed for proofing and 'waxing'. As for accuracy, I'm trying my best to understand the physical limitations of the printing devices so that I have a better understanding when a customer asks me, 'Why is my printer printing a quarter of an inch off?' and I can say with honesty, 'It's a limitation of the printer and the printer driver. Contact the Manufacturer for an updated printer driver or upgrade your printer.' ;) |
| Wed 05 Mar | Joel Spolsky | Applications that Really Really Care about exact positioning on the page, like forms-filling-out applications and Quicken's check writing feature, always have an alignment feature, where they print a special page with some kind of marks on it and you tell them how wrong it is.
That said, computer hardware companies are notoriously awful at writing software. They often assign an electrical engineer to do it, someone with no software skills or talent. The history of Windows device drivers is the history of Microsoft trying to make it easier and easier to write a driver because it became clear that the hardware companies just couldn't do it. ATI's video drivers crashed Windows 3.x a lot more often then 3.x crashed by itself, and Microsoft always got blamed. |
| Wed 05 Mar | Robert Moir | The problem with using a table full of 'published offsets' for each printer would be that it wouldn't take into account
i) manufacturing tolerances
ii) newer models of the printer
So those applications that need precise printing because you are trying to print onto headed stationary with them are back to either printing test pages as Joel says, or sucking like a Kirby vacuum cleaner. |
| Wed 05 Mar | Chuck McKinnon | And aren't I dealing with this very problem myself, today!
Without a doubt, iffy tolerances and bad paper handling can be contributing factors, but my vote goes to bad printer drivers. Prosise points out that '...printer drivers are maddeningly inconsistent in the information they report and the output they produce. For example, some printer drivers return the same values for PHYSICALWIDTH and PHYSICALHEIGHT as they return for HORZRES and VERTRES.'
For those of you who haven't called GetDeviceCaps on a printer before, PHYSICALWIDTH and PHYSICALHEIGHT are supposed to be just that -- the physical width/height of the page (in pixels). HORZRES and VERTRES are supposed to be the width of the printable area, also in pixels. In other words, they're supposed to take the printer's need for margin space into account.
If your printer tells you that the physical and printable areas of the page are identical, you either have a VERY nice printer or a bad printer driver. No prizes for guessing which is more likely.
My solution? I'm fudging by a few pixels, so I can be (more) certain that the entire image will print.
Chuck. |
| Wed 05 Mar | Dave B. | I have been pondering the 'print a sheet with special marks and let the customer measure it approach', but come on, I mean we're talking about the customer here. Do you think they know how to use a ruler?
All joking aside, I believe it is a good idea. Unfortunately ( or fortunately, I'm not sure which ), it's now in the hands of the customer if they want exact output or not. |
| Wed 05 Mar | HeWhoMustBeConfused | I struck the same problem many years ago, but reasoned my way around it by considering the thickness and origin of the line being drawn.
In this case, I made an assumption that the dot/pixel is drawn with its origin at the top-left specified by the co-ordinates. Remember that the dot has its own height and width.
I then assumed that the co-ordinates returned by the API represent the outer dimensions of the bounding rectangle. That is, not the right-most co-ordinate at which at dot can be drawn, but the maximum value at which printing-origin + dot-width can be printed.
So ... subtract the dot-width (or an approximation) from the rectangle ... and you will have an area in which you can print.
This may not be the CORRECT answer, but it does work :) |
| Thu 06 Mar | flamebait sr. | The best solution is an alignment page that requires no ruler.
An example of this is a good alignment page to make sure that color and b&w cartrages are aligned properly. It prints a series of color lines between black lines so you just feed in the line number that looks the straightest.
Or RGB convergence tests that draw a grid out of alternating red, green, and blue lines.
For your purposes you could draw a slightly diagonal dashed line around the margin so that you can have the user count the number of dashes on the test page to determine what the margins actually are. |
|
| Selling non existent software features | Tue 04 Mar | Colin Jennings |
| One thing that bothers me is how many times features for software Im developing get sold that are not implemented. Its happened on many applications that both my roommate and I have worked on and we constantly discuss if its necessary.
It bothers me because then I have the stress of delivering a feature in a rediculous tight schedule. The result is disorganized sphagetti code and a feature that hasnt been fully thoughtout. I absolutely hate putting my name on crappy work because of some sales guy or the President breathing down my neck and trying to boost revenue at my expense and possibly putting the long term reputation of the software on the line.
There has got to be a better way! Maybe I dont understand the sales side. Selling a well defined solid product seems like a lot more fun than stressing out for anybody that will give you a buck. Maybe thats too idealistic and somebody needs to tell it too me straight, but either way Im really sick of it. |
| Tue 04 Mar | Go Linux Go! | This is entirely too common and the problem will likely never disappear. One of the core problems is that many people in management think that by promising a feature, it will make you work harder to implement it.
However, the problem can be mitigated when development folks clearly demonstrate how this strategy doesn't server the long-term goals of the company. At a company I worked for, I felt I was successfull in 'training' the management that promising a feature doesn't make that feature appear. It took time, but development and sales/marketing worked together on the feature list and only that feature list was shown to potential customers.
Note that I said mitigate...Not everyone is interested in the long-term goals of the company. I've lost count of how many clueless sales people I've met who are only looking for a quick commission check. They'll promise a customer anything today because they know by the time the poop hits the fan, they will be on to the next sales job. |
| Tue 04 Mar | Honest Abe | This is common in all industries. Bait and switch or fished in. You get the customer to commit and then milk them. The customer (if its a company) can't say 'we made a mistake, lets back out' so they stick with it as deadlines get passed and money gets burned. The more the client spends the more they will likey keep spending...and then word gets out and everyone is trying to sell them something. |
| Tue 04 Mar | Dignified | This has happened so many times on the project that I'm on, that I guess I turn a blind eye to it now. I should probably be more adamant, but oh well.
What's worse is that I took over a piece of the project that claimed to have a certain feature implemented, and was billed as such on all of our marketing materials, but was not functional, AT ALL. It wasn't even that we said we had it, and we didn't. It was in the program, but did not work.
Nobody ever noticed because the customers as yet had not needed the feature. After a year and a half, I convinced management to disable the 'feature' and remove it from our marketing materials.
I would say that this shows that persistence pays off, but I'm sure as soon as a customer wants it, I'll be tasked with turning it back on and making it work. Such is life. |
| Tue 04 Mar | Brent P. Newhall | How are the sales folks learning of the features you're working on? Perhaps you can keep the sales force from learning about your features, or be extremely careful with what you announce to people outside the team. You could say, 'Well, we're working on , but that may not make it into the final product.' |
| Tue 04 Mar | Dignified | I don't know how other people's shops run, but many of our features are roadmapped out a couple releases ahead of time (subject to change of course).
Apparently the sales people just tell people that we're farther along than we actually are, and worry about catch-up when they close the deal. |
| Tue 04 Mar | Wade Winningham | In a company I used to work for, the sales team was tasked with doing whatever it takes to get the business. This entailed what I refer to as 'lying' to the customer in order to get their money.
My general reaction was to implement the feature if it was relatively minor. With major tasks, I would inform management so a timeframe could be worked out or whatever.
I think that eventually, selling vapor-features bites the salesperson really hard at some point, they learn their lesson and are cautious in the future. |
| Tue 04 Mar | Colin Jennings | I do try and keep a very open line of communication with the sales and marketing folks. Fortunately, I work in a smaller company where that is possible and that definitely helps manage the expectations.
One unfortunate thing is that I work on electronic design software and I have minimal experience with these types of applications from a user perspective. It is very technical. I generally have a hard time trying to drive features.
Additionally, the President of the company get this 'high' from pressure situations. He really seems to love it, but it just burns me out. Maybe I would feel the same if I owned the company like he does.
But, I agree, keeping an open line of communication with the 'pressure cooker' instagators is a must. |
| Tue 04 Mar | Nat Ersoz | Back in ... hmm, I think it was around 1993. The company I worked for was bidding a contract for Bell Atlantic. They wanted a field deployment in 3 months. Our prior experience told us that our best time to field would be somewhere between 6-9 months, and probably on the high side of that. But some of the technology had matured, we could hire some more people, perhaps we could be field testing in 6 months... So that's what we told them in the bid - 6 months, no sooner. A competitor, with no experience said 3 months. They won the contract. We went elsewhere.
The most interesting part of this, is that the head of North America operations (a guy named Jim Meyer) told my manager specifically that he was watching how he handled this high pressure situation. Meyer told him that integrity meant everything and that the contract was secondary. I was frigging impressed.
As the contracts went, that thing was called BA 'Video Dialtone', which went nowhere. We wound up winning a separate contract with TeleTV as a repeat of this a few years later, which also went (almost) nowhere. FWIW, |
| Tue 04 Mar | anonymous coder | This is a nasty problem because your sales force is competing against other sales forces that are doing the same thing. If your sales team levels with the customer saying, 'we won't have that feature until our next release,' but your competitors say, 'we have it now,' how do you prevent your customers from jumping ship and chasing what appears to be a competitive advantage? Even if your competitors offer something completely broken, software users are so used to being guinea pigs by now that they expect not to see it actually working for a few releases, even though they continue to behave as if the feature is ready for prime time the first time they see it.
Note that I am not advocating this practice by any means. I'm just saying that I can kind of understand where it comes from. I have a few ideas about how to combat this, but I must admit that none of them are guarenteed to work. What would you do instead? |
| Tue 04 Mar | Colin Jennings | Unfortunately, I think anonymous coder hit on a major reality, but I think that train of thought is so short sighted.
But who knows? Sell crap now and then fix it later. Maybe that strategy is much more profitable than creating solid software and selling only to the people that can use the features you've got. |
| Tue 04 Mar | Mike | You are in good company. Microsoft has made a very good living doing just that. How many of us patiently awaited SP3 on NT 4 for half the stuff to work? |
| Tue 04 Mar | anonymous coder | I think the key strategy I'd use to fight this in the marketplace is to 1) establish a reputation for quality by never releasing substandard products and 2) establish a reputation for very short lead times for feature development and stay lean.
I think if you can pull this off you can win as the customer will learn to think, 'if I wait a month, I'll have a working version of the feature' |
| Tue 04 Mar | Colin Evans | At the end of the day, you need to sell software in order to make the bottom line. It's always a pain to have to throw in and throw together new features and last-minute fixes, but if it brings in the needed sales, you now have money and time to fix the 'spaghetti code'.
The best examination of this that I've seen is the XP idea of 'technical debt', where you incur debt by deferring bug fixes or properly implemented features in order to ship on time with a specified feature set.
The catch is that you have to pay off this debt in the future. If you don't, it will accrue interest in the form of extra bugs and extra work required to maintain and improve old code.
If you never pay off your technical debt, eventually the code will become unmaintainable, as the time to add new features or fix bugs will start to be longer that the time to totally refactor or reimplement the software.
Here's the reference:
http://www.c2.com/cgi/wiki?TechnicalDebt |
| Tue 04 Mar | John Rosenberg | As Steve Ballmer would say 'Get the business. Get the business. Get the business.' Selling is the core job of any company and if that means promising features that are not available then so be it. You have a job because of your sales team, and that's the reality of any business. It may not be 100% ethical or 'good' but it works selling products and that's the bottom line. |
| Tue 04 Mar | tapiwa | I would suggest two things..
Never show the salesmen screenshots of what your implemented feature will look like. Most of them have this 'I have seen it and therefore it is almost there' attitude.
Tied to this, shorten your internal development cycles. Instead of doing screen shots and a 12 month roadmap, you might want to have monthly demos of the features currently implemented.
You might suggest what direction you are heading, but those screenshots that look so good on PowerPoint always come back to haunt you! 'You showed it to us six months ago, so we thought it was ready. Its your fault.'
I realise this will not work in all situations, but it does have the added benefit of giving sales a working demo to play with on their laptops! |
| Tue 04 Mar | HeyMacarana | I used to gripe about the sales and marketing department too, but then I finally understood what they have to go through to make a sale. The best way to understand why they do what they do is to step into their shoes for a few days and try selling the software yourself.
Of course, the only way something like this will happen is if you get management to buy in on the idea to let you temporarily switch tasks. Some small companies do actually rotate developers and have them try and sell every once in a while. In my opinion this is a good thing that should be done at least once every six months or so.
The only thing I'd hate to see though is if we switch over to sales for a little while, and management decides sales people should start coding for a temporary period too. LOL, I can see the horror stricken faces on those sales guys now :)
Anyhow, if you're going to do anything like move up the career/corporate ladder, then you're eventually going to have to do some selling in some form or fashion anyway.
There's got to be more than chasing the almighty buck for 8-12 hrs of almost everyday of your life.... Sigh. I'm almost getting sick of this industry and am almost ready to bail if it weren't for my sickly retirement nest egg which is almost nonexistant. |
| Tue 04 Mar | anonymous coder | How about a 'confuse the customer' approach to sales? In the course of your normal development, add in a few quirky features that offer some marginal utility, but keep them hidden. When you get into a situation where your competition is announcing some feature that you can't match while still being able to live with yourself, you unveil your hidden features instead. This at least gives you some leverage because you can claim, 'yeah, but does the competition have this?!?!?!' It also allows you to segment your market a bit better and if the competition takes the bait, you can force them to disrupt their plans to fix what's broken with their new feature while you roll out a superior implementation. Could work? |
| Tue 04 Mar | Eric W. Sink | A good sales guy is someone who does exactly what he is incentivized to do and can get it done. If you have one of these people, your challenge is to make sure your incentives line up with what you actually want him to do.
If you accidentally get your incentives in the wrong places, it's your fault. The sales guy is not capable of consecutive thought on his own. He will not try to figure out if his actions are good for the company in the long term. If he does, he is not a good sales guy. Fire him and get somebody else.
If your sales guy is selling stuff you don't have, that's because he is personally making more money doing it. |
| Tue 04 Mar | anon | So is the solution to personally charge the salesperson for excess development time incurred developing his non-existent feature? ;-) |
| Tue 04 Mar | Not A Salesman | He'll just back-charge the NO-SALE cost of the feature not being available. |
| Tue 04 Mar | Colin Jennings | Maybe my incentives need to be in line with the sales people incentives. I throw together some feature to lock in a sale...cut me a little piece of the pie. I have a feeling a few developers, including myself, would willingly throw themselves in the fire for that. |
| Tue 04 Mar | pb | The problem is that prospective buyers not only let sales dudes talk about future modifications, they encourage that!
I tune out once a sales guy starts talking about features that are not currently in place. |
| Tue 04 Mar | Dave Bryant | A problem with changing incentives so that the developers 'get a piece of the pie' by quickly implementing features that have been sold, is that it encourages the developers to not work on features until they get to this stage. Or at least to hide them from the sales force so that they get something extra from it.
Think about it - why should i start working on this feature now, when i can wait a month until it is urgent and then get a bonus for doing it in a rush. |
| Wed 05 Mar | Bob | But if your going to be doing it in a rush anyway, which you invariably will be why not be included in the action...
Sometimes it annoys me when the sales guys get a commision for selling something and I get nothing but more unpaid overtime. |
| Wed 05 Mar | jannek | tapiwa said: 'Never show the salesmen screenshots of what your implemented feature will look like. '
Or just make screenshots look incomplete, for example, draw them by hand.
Myself, I use the 'flat' option in the Visual C++ dialog editor. It is very handy for making screenshots look incomplete.
The uglier your screenshots are, the easier it is for the salesmen to realize that more work is needed before the feature is ready. |
| Wed 05 Mar | PhilS | I have built three different software companies and bought millions of dollars of software over the last ten years and I have realized that the most popular method of buying software is seriously flawed. The upfront purchase (or lease) of software was developed for several reasons. Companies purchasing software were familiar with buying capital goods, which required a large upfront payment, which was depreciated over a period of years. Software was similar to such a capital good in that it required large amounts of money to build and theoretically lasts indefinitely after being built. Software companies desired to charge a large amount of money upfront for a license fee as it enabled them to recoup their development costs as quickly as possible. Many software companies were able to “bootstrap” requiring very little capital to grow to very large sizes. The exchange of a large initial license fee satisfied all these initial goals very well.
However, the end user and developer’s goals quickly diverge as soon as a license purchase is made. There are two main reasons both of which are clichés in the software industry.
Once software is installed and utilized for a period of time, the end user finds out that: “its what I said I wanted but now I know what I need”. The end user needs additional features that are almost never the “gee whiz” features used to sell the software, but rather the mundane “blocking and tackling” reports and features. In addition the customer needs rock solid stability, not just during the pilot stage when achieving stability is relatively easy. Instead customers need stability after the rollout stage where loads of data and many inexperienced users are taxing the demands of the system.
The second cliché is “there are thirty-three days in the month the financial quarter ends” As the financial quarter ends for any software company, there is a tremendous pressure to close sales and make the quarter. The company needs to align all its resources to win the new customers whose license payments allow it to exist and thrive. The difference of one or two sales can make or break the quarter. The software company will do almost anything to get those sales.
Both of these facts are very well understood behavior by both the purchaser and developer. Purchaser’s wait until the last days of a financial quarter to buy software and demand that additional new features they want are written into the contract for delivery. In addition they demand and get price breaks. Software companies write contracts on the last day of the quarter (or as is commonly known days after) with these provisions. Once the contract is signed the purchaser and developer now have exactly opposite goals. The purchaser will soon find out what new features it really needs in addition to those its written into its contract, which were quickly “jammed in” so that revenue could be recognized.
Here is where the relationship now stands: the software company is busy promising and putting in new features to gain new customers, and the end user is left with software that doesn’t fulfill its needs. The end user needs those new mundane features to help it use the software, but should recognize that there is now another new customer writing a contract with its wants, which will supplant the existing customers needs. Worse yet, all of these “features by contract” are usually unique to a particular customer and are hastily added. The end result: bloated software with so many custom features that its unusable, and unstable software that was literally thrown together. The “golden rule” applies: he who has the gold makes the rules, the software company has the purchaser’s money and will do only the bare minimum to get a maintenance payment fully realizing that the user will have to make the decision to either be orphaned or pay 10-15% of its original payment “to protect its investment”. No matter how well intentioned, resources always go to adding new features to win sales versus tightening existing functionality to make existing customers more satisfied.
I have lived both sides of this relationship. No matter how dedicated you are to making the best software you can, there is no way to do it when new sales are driving features. The only way to build great software is to have a great product manager that is balancing feature requests from existing customers via a dedicated support department, potential customers via strong sales and marketing departments, and just as importantly balancing a tough development department that reasonably limits features and scope so the software is rock solid and maintainable. An upfront license fee basically reduces a product manager to a keeper of new sales/marketing requests. They will try to balance needs from support and development, but when push comes to shove it will come down to a final cliché: “we need this feature or we will have to walk away from the business”. New sales are so important the software company has almost no choice but to meet almost every demand no matter how reasonable or unreasonable.
I now sell software purely on a quarterly fee based on the usage of the software. |
| Wed 05 Mar | Prakash S | Phil,
Are you making more or less with this quaterly fee arangement? |
| Wed 05 Mar | Dennis Atkins | Feh. What a cynical thread this is, even if it might be true.
Whatever happened to 'delight the customer'?
Is it dead?
I guess these comments made apply to business software and not shrinkwrap software? |
| Thu 06 Mar | PhilS | Much less up front, much more later. I wrote a full article with NPV (net present value) analysis. I had a company that I sold that had $20M in revenue one year only to have $5M the next (and the $5M was mostly services/support) I was the CFO and saw it coming. The CEO disagreed with me until the bitter end.
Look at the i2's, Manugistics, etc, etc. If you actually sell great software nobody needs to upgrade, if you don't and you think in this market people are going to buy your stuff before checking out all your current customers you're in fantasy land.
Therefore the one time license fee looks great during times when people are buying and is absolutely awful when their not. |
|
| When did booleans burn you? | Tue 04 Mar | Philip Janus |
| Lighter topic!
I first got burned by booleans on an employment application processing app - several questions had yes/no checkboxes, so I implemented them with booleans.
Made it to beta before someone pointed out that did not answer and unreadable also needed to be options. So I had to rip out the plumbing and rework it.
Im now very judicious with booleans (I generally avoid them) and *never* use them for user-interface data.
Philo |
| Tue 04 Mar | Li-fan Chen | Yeah I always ask myself of the requirement,
is there any chance the client will request
more options?
is the nature of this question so simple
that it can't possibility be asked in any
other way?
When I feel even the slightest doubt about
it I generally assign a value type that's a
reasonable over-kill--like
tinyint in a database server like SQL
Server (1 byte, 128 value positive and
negative plus accounting for NULL values)
or short int or byte (8 bits or 16bits
depending on the 32-bit programming language
you are using)
It's not an exact waste of space, unless
your program domain is on the scale of
millions of records or more.
If you start having problem you can always
encode lots of bit-wise answers into a
bitfield.
Waste a little, you deserve it :D
-- David |
| Tue 04 Mar | Li-fan Chen | In software engineering text you'll find
some mentioning of aliasing the type you
are using. Instead of using a type like
boolean and values like TRUE and FALSE
you go one level of indirection and pull a
structure or class.. or at the very least
create a simple type that points to some
other type.
So your type of boolean could point to a bit or a byte or whatever
And your own version of TRUE and FALSE could point to true and false, 1, 0, YES, NO , doesn't matter |
| Tue 04 Mar | sedwo | I would think a UI with two checkboxes 'yes' and 'no' should have been designed with radio buttons. It guarantees an answer as one of them is always a default.
If there are other options ('not sure', 'n/a') then they should also be displayed as most users get confused when the UI options don't represent their possible answer. |
| Tue 04 Mar | Li-fan Chen | Another thing I run into is the problem of using arrays when later on I get caught having to change the data structure to a hash tree or worst--a tree).
Again, that's why modular programming really helps and a few helper classes/modules/member functions really smooth things out. |
| Tue 04 Mar | Li-fan Chen | sedwo you are one sharp cookie *grin* |
| Tue 04 Mar | Joel Spolsky | If you look closely at the Windows API the 'BOOLEAN' type is implemented as 16 bit integer, and in some cases it actually distinguishes between three states (1, 0, -1), for example, in a tri-state checkbox which may be checked, unchecked, or 'indeterminate' (for example, the state of the bold checkbox when some text is bold and some isn't) |
| Tue 04 Mar | Stephen Jones | When they wrote the monstrosity that is our college database system it slipped through the specifications that a student could be marked late, as well as absent or present.
Off they go and make the field boolean. They were not very pleased, and spent a year trying to persuade us we should change the college regulations to fiit the table structure, when they found out about the lates, and the fact that they had to make three lates equal one absence. |
| Tue 04 Mar | apw | Should be 'When did the lack of requirements burn you?'
This has happened countless times on the product my company produces. And is a nightmare to remedy. Especailly if it has been in the field for a while.
Try migrating boolean to character data leaving the customer to decide if a false is actually NO or UKNOWN (Y/N/U)...
The data type doesn't burn you, its the requirements or lack of that does... |
| Tue 04 Mar | Go Linux Go! | apw,
I understand where you're coming from, but it *is* the datatype that burns you. Requirements are always gonna change. It's a given. Accept this nuisance as a fact and life will be better.
Just like Philo, I've been burned on this so about the only place I use booleans is on return values for functions. I never use them on UI elements because eventually, someone is gonna want to add another field and that efficient lil' boolean value will give you a huge case of heartburn. |
| Tue 04 Mar | Martha | I find myself using maximum-length text fields instead of memo fields, because I know that eventually some manager somewhere will want to search the comments, or even sort by them. The only way to convince them that there's no useful data 'hidden' in the comments is to let them look. (The side benefit is that users learn to be concise. At least that's what my inner optimist says.)
I've never been burned by a boolean, but that may be because I've instinctively used them only for 'flag' type values. For example, on a list of employees, 'CurrentlyEmployed' would be a boolean; either the guy still works here, or he doesn't. On the other hand, I wouldn't use a boolean to indicate whether the person is a temp or permanent, because eventually some supervisor somewhere *will* decide that a 'contract' employee is different than a 'temp' employee. Or something. |
| Tue 04 Mar | Vulcannis | All the 'problems' with booleans listed so far have been because the boolean was misused. A boolean is a logical indicator, it is NOT a two value enumeration. Whatever data size the boolean implemention has is irrelevent--whether it uses 1 bit or 32, a boolean only has two values. But that doesn't mean all two value indicators are booleans.
Avoiding booleans because you misused them is ridiculous. |
| Tue 04 Mar | Mark Bessey | In my experience, there are only two types of fields in the average database:
1. Fields whose specification is too restrictive. These cause problems for users because they have to decide how to work around the lack of flexibility.
2. Fields whose specification is too loose. These cause problems because trying to extract information out of the database becomes an exercise in second-guessing the creativity of the people doing the data entry.
By definition, a Boolean value can never provide more than the absolute minimum amount of information (one bit). Therefore, ALL boolean values in databases are over-specified, and should probably be replaced with at least a three-value field (YES, NO, not sure).
In the real world of paper forms, a common idiom is the multiple-choice question with catch-all, for example:
How did you find out about Joel on Software?
A. Web search
B. From a friend
C. Slashdot
D. Other: _________________
I don't see this as much as I'd like to in database applications. There is at least one internal database where I work which has a feature whereby user-defined keywords which can be attached to any record.
This is potentially a nightmare of one-off values, but in practice, the currently-defined keywords are displayed in a list on the record entry form. It's very easy to pick out the right keyword, and if you really need a new unique value, you can easily create a new one.
This feature ends up being used quite often as a way to try out new organization and reporting techniques without having to redesign the database. If some keywords become part of the process, they can be promoted to 'real' fields of their own later. |
| Tue 04 Mar | Go Linux Go! | Vulcannis,
I think you missed Philo's point. The original requirements were for a field to be 'yes/no'. That's equivalent to true false. It's not a two field enumeration. Using a boolean in that case makes perfect sense. It's not misusing booleans.
The problem happens when someone decides to change the underlying question behind the field. So rather than asking a 'yes/no' question, the question is changed to something where an enumeration is required. Now that boolean field no longer works.
From what Philo said, there was nothing wrong with his design based on the initial requirements. The only problem is that requirements change and using a boolean field to store user input, no matter how proper at first, is destined to fail once the requirements change. |
| Tue 04 Mar | Brent P. Newhall | I've often been burned by Booleans that were implemented inconsistenly in the code. I'm sure we've all seen code in which 0 equals true for one variable, but 0 equals false for another.
Some of it was my own code.... |
| Tue 04 Mar | John CJ | I am amazed that anyone would ever use booleans for UI elements or database fields. I don't think I've ever seen any 'real-world' type is that is strictly boolean. The only time I ever use booleans is internally within an application because in my experience, binary computing is the only thing with boolean semantics. |
| Tue 04 Mar | Ian Stallings | [I think you missed Philo's point. The original requirements were for a field to be 'yes/no'. That's equivalent to true false. It's not a two field enumeration. Using a boolean in that case makes perfect sense. It's not misusing booleans]
Actually you can read it as is he had two separate check boxes, one for 'yes' and one for 'no' so the data type was simply misused. And even if it was one checkbox a boolean would be the correct data type to store the information.
Data types cannot be wrong, they are simply tools used by the developer. If your basis for a good data type is when requirements change the type can handle it you will be let down. If you can explain how a data type should self-adjust for changing requirements I am all ears. |
| Tue 04 Mar | Go Linux Go! | Ian,
I'm not sure what you mean by 'If your basis for a good data type is when requirements change the type can handle it you will be let down'
It is possible to anticipate requirements evolving and possibly using a datatype that stores a larger set of values. Instead of using a byte field, go ahead and use an integer. Maybe the customer swears their SKU numbers are always numeric, but you figure you'll make the database field a varchar just in case they decided to start adding alphanumerics to their SKU's. Even if the customer says a field is always yes/no, why not use an integer field instead of a boolean... Yada..Yada..Yada..
I don't think anyone said anything about making datatypes evolve. I believe what has been discussed is 'defensive programming' techniques. |
| Tue 04 Mar | Philip Janus | To answer some of the underlying questions...
1) The user interface was a paper form. I haven't found a good implementation of radio buttons on a paper form yet... (and it was an established paper form - I had no control over its creation)
2) Regarding requirements, it was one of my first applications. As I indicated in the initial post, I *have* learned from the experience. [grin]
Philo |
| Tue 04 Mar | Chris Palmer | The underlying problem is a mechanism/policy problem. You should use the infrastructure of your application to provide a mechanism, and the upper layers to set policy.
For a database/forms-driven application, the DBMS is the infrastructure and should do no more than provide a mechanism. Take a cue from K&R and provide the most flexible mechanism possible (within reasonable constraints, which will vary from situation to situation). Then implement policy in the upper layers, like the UI.
Thus the original poster's boolean problem could have been avoided by using an enumeration or text string to store the value, and setting the 'boolean-like' policy in the UI (with e.g. radio buttons). Then, when you find out you need more than two values, it's a simple matter of changing the policy in the UI. The infrastructure can implement the new policy with no changes.
Of course, how it actually shakes out will depend on your situation. |
| Tue 04 Mar | Frederik Slijkerman | Booleans are fine as 'logical indicators' and as return values for functions, but they are best avoided as function arguments. Boolean arguments are not self-documenting in function calls. For example:
void printEmployees(bool onlyManagers);
...
printUsers(false); // what the hell?
versus:
enum { utAllEmployees, utManagers } UserType;
void printEmployees(UserType type);
...
printUsers(utAllEmployees); // aha!
The problem with boolean arguments is that they seem reasonable when you define functions, because you see the identifiers. They are confusing though when you call a function. Morale: Use enumerations instead of booleans for flags and options. |
| Tue 04 Mar | Frederik Slijkerman | The printUsers() calls should be printEmployees(), of course. |
| Wed 05 Mar | quey | Letting your data handle incomplete data is an example of fudging - it can be great if your data is well specified, but I wouldn't want to force specifications onto my users.
Polite software allows fudging: http://archive.devx.com/upload/free/features/getstarted/2000/sp00/acsp00/acsp00.asp
Make your code generic: http://c2.com/cgi/wiki?ZeroOneInfinityRule
Could someone explain why I shouldn't use a boolean to represent the value of a checkbox? It's either ticked or unticked. It would take a scarily flexible solution to cope with someone scribbling over the form and writing 'I plead the 5th amendment on this question!' in the margin. |
| Wed 05 Mar | Chris Palmer | quey: The whole point was that sometimes a checkbox becomes inadequate, and if the code underlying it is overspecified (i.e., a boolean), you won't be able to extend the software to meet the new requirements as easily. |
| Wed 05 Mar | Philo | Quey - as an example, your requirement indicates allowing the user to answer 'Have you ever used tobacco?'
So you figure 'checkbox, right? Yes/no - boolean'
You implement it, build the app, and the day of release someone points out that
a) The policy is for the user to affirmatively answer the question - they must *do* something to select an answer, so there cannot be a 'default' answer other than 'not answered'
b) Privacy requirements indicate that the user doesn't have to answer the question, but not answering a checkbox indicates the answer 'no'
So you have to implement it as a pair of radio buttons without a default selected. You now have three states - Yes, No, and unanswered. And if you've coded your app with a boolean in the database, you have to replace it with an int, rewrite your stored procedures, business logic, etc, etc...
Philo |
| Wed 05 Mar | Simon Lucy | There's a difference between a printed form, and encoding that, and a form on a screen, the processing of which you can control.
You can't control how someone is going to fill out a printed form, apart from sanctions like 'we will take your first born'.
So, creating the input form from that kind of data always has to cope with that problem. There's an argument that you can still use a flag for the actual data but that you have a set of aspect fields which show the quality of that data. That's especially true when you can't expect the person inputting the data to make the quality decision on the data. |
| Wed 05 Mar | Phibian | While I'm not disagreeing with the principle that incautious use of booleans can come back and bite you, many of the 'examples' given here seem flawed to me.
The argument is that if you store a yes/no question as a boolean, when the spec changes to include unanswered (for example), that data type must change. Problem is, in many databases, a bit datatype already accepts three values by default - 1, 0, NULL. Changing the form to meet the new requirement could be as easy as ensuring that the column default is NULL and not setting the radio button (to use the example implementation given in an above thread) to have a default.
The example given near the top of this thread with four options was much better. However, it seems to me that the responses all focus on how 'booleans burn you' because the data type is limited to two or three responses. In my experience (maybe what I do is unusual, but...), changing the datatype in the database is much easier than changing the user interface.
If the requirements change such that a yes/no question becomes a yes/no/maybe/I don't know/Unanswered question, if the extra options weren't anticipated, taking a minute to change the database from a bit to something that can hold a limitless number of options isn't going to be the part that burns.
My 2c |
| Thu 06 Mar | Robin Debreuil | Two of the things I like most about C# are t/f is NOT the same as 1/0, and Enums. That really takes care of a lot of these problems.
But getting burnt by changing specs doesn't stop at bool - say you decided to answer 'do you smoke' with a int instead of a bool - then you can be sure the requirement will become a user comment and you will still be mucking about. |
| Thu 06 Mar | Chris Tavares | The problem seems to be that the use of booleans to represent values that are not 'true/false', but instead just accidentally happen to have two possible answers.
In that case, the right approach is to use an enum instead of a bool. That way, if your solution space suddenly grows an extra option or two, you just expand the enum.
Of course, this isn't so easy in a DB - unless SQL supports enumerated types (I don't know a whole lot about SQL). |
|
| Bad UI Design in just three widgets | Tue 04 Mar | snotmonster |
| Sometimes you come across a bit of UI design so boneheaded you just have to tell the world...
http://users.bigpond.net.au/snotmonster/ |
| Tue 04 Mar | Better than being unemployed... | That's genuis at work.
Surprisingly, there are more bits of bad UI design out there in the field than you'd believe. Cast your mind back a few years to the .com / IT boom. It was an employee's market, and so the good people went to the best offers. The rest took whatever else they could find. Some people just rejected 99% of candidates (which I see no problem with). Others, desparate to get someone - anyone - to complete a project, had to settle for bozos who couldn't use a bit of common sense about UI design. (They should have read 'About Face' by Alan Cooper, that would have drilled some fear into them that they weren't doing the right thing!)
Now the market's swung the other way, and we're finding competent developers are spotting obvious UI bloopers in released products.
(Or at least I am. Frequently...) |
| Tue 04 Mar | Pete Robinson | more at the User Interface Hall of Shame
http://www.iarchitect.com/
(site seems to be down - anyone know if its moved?) |
| Tue 04 Mar | Philip Janus | I haven't been able to get into iarchitect.com for two months. I sure hope someone archived it somewhere...
Philo |
| Tue 04 Mar | nobody | Here:
http://web.archive.org/web/*/http://www.iarchitect.com/ |
| Tue 04 Mar | Albert D. Kallal | Boy, is that a gem of a bad UI or what!!! I don't think onc can do worse if you try!!!
As for that hall of shame site? Yes, it has been down for a long time now. I think it is gone.
However, is there is the internet archive, and it is great for looking at those sites that disappear.
Hence,
You can get to the site by:
http://web.archive.org/web/*/http://www.iarchitect.com/shame.htm
It is great site on UI stuff.
Albert D. Kallal
Edmonton, Alberta Canada
kallal@msn.com |
| Tue 04 Mar | shrinky | There's another copy over here...
http://www.akzhan.midi.ru/iarchitect/
...but that might not be too useful to you ;-) |
| Tue 04 Mar | Dan Shappir | I remeber a program with a textual interface that contained the following UI gem:
'Do you want to input distance in meters or feet [y/n]:'
Since the program used a Boolean variable to indicate the choice, the programmer selected a yes/no question ... |
| Tue 04 Mar | Philip Janus | The webarchive's no good - the images still link to iarchitect.com, and the images are 80% of the content. :-/
Philo |
| Tue 04 Mar | Max Hadley | Reminds me of the time I learned not to use a boolean to represent a 'sex' field - I was writing an application documenting racehorses... |
| Tue 04 Mar | Dozy | Dan, it took me a minute to see the problem with the example you showed. I really need to get back to bed. |
| Tue 04 Mar | Mike McNertney | Philip: I have no problems viewing the site on webarchive... the images are just a bit slow to load |
| Tue 04 Mar | Dennis Atkins | Actually I like snotmonster's UI example. It reminds me of playing Myst.
'We dare you to solve the mystery of the interface!'
Fun! |
| Tue 04 Mar | Martha | That could have been programmed by one of our engineers.
It would be funny if it weren't so depressing. |
| Tue 04 Mar | UI Designer | Martha,
We must have worked at the same place. This is precisely why engineers shouldn't be allowed anywhere near UI design activites. |
| Tue 04 Mar | Tj | There's nothing wrong with engineers doing design. That is, if you take the opposite of what they consider 'good design.' The way I did it was, I emailed coworkers' opinion on a screenshot I made. Usually the engineers would agree with me and the others wanted something else. So obviously I went with the NON-engineers.
Engineers side too much on elegance and idioms. We like 'clean' things that may not be so good for endusers. For example, the little picture of a hallway on the top left of the screen I'm on, might be meaningless to many nontechnical users, who don't know it would take them back to the forum mainpage.
It actually helped in that someone might volunteer to help me out further with the design, doing some photoshop wizardry. Some of my happiest work, because morale was low and doing nonapproved work was so fun. |
| Wed 05 Mar | John Burton | >This is precisely why engineers shouldn't be allowed anywhere near UI design activites
Or perhaps you just need better engineers. I know plenty of engineers who can design great user interfaces (and plenty who can't). User interface design is a skill like any other and nothing says that you can't have more than one skill.
The problem is that many engineers are happy to learn a single skill and expect that to be all they need. That's a problem with those engineers and it's not fair to make the sweeping statement you made. |
| Thu 06 Mar | David Person | The Interface Hall of Shame can now be found here:
http://pixelcentric.net/x-shame/ |
| Thu 06 Mar | John Topley | It's not by the same people though, is it? |
|
| Where does the name Fog Creek come from? | Mon 03 Mar | 7FFEFEC0 |
| I apologize in advance if this has been answered a million times before, or is otherwise obvious, but I would still be interested in the answer! |
| Mon 03 Mar | Patrik | From the contact information page:
Sales
Phone: +1 (866) FOG-CREEK (866-364-2733)
FogBUGZ sales: fogbugz@fogcreek.com
CityDesk sales: citydesk@fogcreek.com |
| Mon 03 Mar | Patrik | Its been said, the name was chosen to fit the phone number, not vice versa :) ... sorry for the unclear answer. |
| Mon 03 Mar | Laurent | I always thought that Joel had shamelessly recycled the name 'Fog City Software', Guy Kawasaki's company (fogcity.com) |
| Mon 03 Mar | red | Um, is knowlege of pop culture needed to decipher this? |
| Mon 03 Mar | runtime | This question was asked before and someone mentioned a Boston pub called Fog Creek. I don't know if that is the REAL answer though.. |
| Tue 04 Mar | Steve | It was actually supposed to be called 'Frog Squeak Somewhere' but there was a misunderstanding on the phone to the graphic designers and the logo came back Frog Creek. The team liked it so they kept the name. |
| Tue 04 Mar | JDW | And what about Frog's Leap? There's a vineyard, and I used to work with a guy who had a consulting company called Frog's Leap. |
| Tue 04 Mar | B# | I've heard this reply before and I'm not buying it. It may have been the framework but not the impetus.
Anyone? |
| Tue 04 Mar | programmer | Good question. It's a good name. It's particularly interesting because it SOUNDS like a place out West, like Colorado or Utah, and so it sort of tickles one's imagination to learn that the company is in Manhattan.
I don't know if this played any role in Joel's choice of names, but I think the Internet has driven people to new heights of originality in search of a company name.
You have to name a new company something that is unique enough that a Google search will not pull up a million irrelevant records. And yet it has to be short enough to be memorable.
I witness this phenomenon occurring in the names of rock groups. Blink 182? I am sure the Internet had a lot to do with the choice of that name. Billy Corgan's new band, Zwan? I heard some people asking, 'Why did he not just call it Swan?' Because he couldn't get the domain name Swan, and doing a search on a nonsense word like Zwan will only pull up hits related to the band.
So my guess about Fog Creek is that it is a non-existent place, but it creates the aura that the founder wants to cultivate, with cozy and personal associations. |
| Tue 04 Mar | B# | Fog Creek exists in 5 locations that I can find. 3 in Alaska, 1 in BC and 1 in South Dakota.
I thought that Joels cc bike tour sent him close to or through South Dakota but apparently not.
oh well, another theory shot to hell. |
| Tue 04 Mar | B# | Anyone know what Fog Creek is in yiddish? I'm going to figger this out if it kills... well, maybe not me, but something killable (Black Adder!) |
| Tue 04 Mar | Bored Bystander | Notice who hasn't weighed in on this yet... bwah hah hah... |
| Tue 04 Mar | B# | No that completely escaped my notice... thanks! |
| Tue 04 Mar | B# | Ok Joel
What happened in Frog Creek? |
| Wed 05 Mar | Patrik | Bored,
...chances are we will not find out from Joel in this thread, we have had threads like this before. Didnt work then, I would be surprised if it does this time around :) |
| Wed 05 Mar | trollbooth | Fog Creek is the name of the mountain compound located in the badlands of North Dakota from which Joel spreads his propaganda of disinformation. Including who he really is and what he is affiliated with. I'm on to you Joel and I'm on to your little dog too! I have copies of your plans and I will expose them on this very message board this Thursday at 3:31 PM EST or possible Friday at 2:37, depending on if I can get a ride to the internet cafe, but I digress. Again. I am on to you. |
| Wed 05 Mar | B# | I hesitate only slightly but...
LMAO |
| Wed 05 Mar | Bored Bystander | I think Joel staying out of threads like this is his way of saying 'kitchee koo!' and irritating the hell out of people that are obsessed with his thinking.
Me... I have my own thoughts. I'm glad Joel has his, too.
And where would we be without thoughts?
I like thoughts. Thoughts are good. Oh, look at the pretty birdy...
:-) |
| Wed 05 Mar | B# | Obsessed! I'm not obsessed! I don't know how you could call it obsessed when I'm not obsessed. I can stop anytime I ...
And btw, Kitchee koo?!?! |
| Wed 05 Mar | dunno wair | Yes, Kitchee koo.
It's actually the fax number for Fog Creek Software. |
| Wed 05 Mar | Mr. Not-Revealing-My-Area-Code | When I set up phone service in my latest apartment, I was given three options... I chose:
787-2347
Cheating with an extra character, this spells 'SupaFish'. I couldn't resist...
SupaFish Software... hm... |
| Thu 06 Mar | B# | Are you suggesting that Fog Creek Software was so named because Joel, who plans like a Melvin Udahl, had no idea what his company would be named until he got his phone number selections from the Phone Depot? Hmm... Maybe!
Fig Crock, Fog Crack, Fig Cheek... |
| Thu 06 Mar | dunno wair | There's a Fog Creek in Ista, British Columbia...
Do you think that maybe Joel's software company is merely an umbrella corporation for a morally bankrupt logging company engaged in the deforestation of the Canadian hinterland?
That would explain his near-phobic aversion to maple syrup... |
| Thu 06 Mar | B# | You may be on to something here... So then Fog Bugz would actually be the Chemical Weapons Division and CityDesk the dis-information bureau... This is double-plus-ungood.
My Alcan hat seems to have slipped. |
| Thu 06 Mar | B# | The fat man walks alone
REPEAT
The fat man walks alone |
| Thu 06 Mar | dunno wair | Understood.
Will wait in the dry goods aisle for the blue light special.
End transmission. |
|
| Handling Errors | Fri 28 Feb | RM |
| I have seen excellent books on Design Patterns, Debugging, Refactoring, Development Mythologies, User Interface Design, Team/Code Management. But I dont know any books about handling errors. I have done Google and Amazon search but no luck.
Any recommendation ? |
| Mon 03 Mar | Liron Levy | My comment on
'Not really. with exceptions you can check for errors in only a few places. With error return codes you have to check the code on almost every line.'
It is usually not practical to handle all errors that have
occured in a block of code with ONE handler. You still
need to add proper 'catch' blocks for each error involved.
In this sense - it is no better thn using if/else clauses.
One more thing - using result objects forces a more
comprehensive treatment for errors (how they are
defined, what types of errors are there etc.). Using
exception classes encourages programmers to define
new exception classes without considering their
impact on the software system as a whole. This can
be solved of course (by using proper design) but I've
rarely seen it happen. |
| Mon 03 Mar | Exceptional Coder :P | 'It is usually not practical to handle all errors that have
occured in a block of code with ONE handler.'
It is poor design to handle all errors in a single handler. Except for RuntimeExceptions, all exceptions are the result of one of two occurrences in properly functioning code based on a good design. Either A) a calling function violated the assumptions or guarantees of a called function or B) the called function is not honoring its own assumptions or guarantees. The place where the violation occurred is where the handler should be located.
'You still need to add proper 'catch' blocks for each error involved. In this sense - it is no better thn using if/else clauses.'
This is not true. Exceptions, in Java at least, exhibit an inheritance relationship so that one handler can, though not necessarily should, respond to several related kinds of exception. To do this with if/then logic you'd have to probably do some complex bit arithmetic or something equally opaque for even simple cases.
Using result objects doesn't force anything on anyone. Will the compiler refuse to generate code if you don't handle the case when the error number on the result object is equal to fifty-nine? The code will compile clean if you ignore all errors. With exceptions you at least have to actively ignore all exceptions with an all encompassing catch block.
'Using exception classes encourages programmers to define new exception classes without considering their impact on the software system as a whole. '
How so? |
| Mon 03 Mar | David Clayworth | Hate to be the dissenting voice in this thread, but we use exceptions extensively in our C++ code and the results are excellent. The nice thing about them is that you can choose at what level to handle an error. If any kind of error object is returned, then you are being forced to consider it at the next level up. In our code most errors will force the termination of the operation, with an error message that can be determined at the point the error is detected. If the error is detected five levels down, thats five times I have to write
if (errorReturn.result != NOERROR) {
return errorReturn;
}
actually more than that because I have to do it once for every method that is called. And what about methods that can't have errors? Do I have to put the check in when I call them too? Someone might modify the method to have an error later. |
| Mon 03 Mar | Liron Levy |
A comment to the enthusiastic C++ programmer:
1. In C++ the problem with exceptions is even more
serious thn in Java because C++ exceptions that
don't get caught cause the application to terminate
without proper stack dump.
2. When using C++ callback methods that are called
from a C library - exceptions don't pass the C stack
frame barrier. This excludes a lot of legace code ...
3. C++ does not warn you if you didn't handle an exception
that MAY be thrown by some called method.
Now a general comment: it is usually not practical to
handle errors in higher levels thn the method in which
they've occured. Usually - you need to translate lower
level errors (e.g., SQL error) into higher level errors (e.g.,
'inventory data error') so this 'neat' feature of
exception is (IMHO) of little use.
For those of you who consider it 'ugly' to handle the
error condition of each specific method using if/else
clauses - consider this: when you use try/catch clauses
and you pack calls to many methods with the 'try' clause -
you miss a very important thing - clarity. You no longer
know how each error handler ('catch' clause) relate to
each method called. This is a very big disadvantage in
my opinion.
Consider:
try
{
func1();
func2();
func3();
}
catch(Exception1 e1)
{ // Do I need this handler for func1,2 or 3 ? don't know ...
}
catch (Exception2 e1)
{
}
catch(Exception3 e3)
{
}
Now can you tell me which 'catch' clause relate to which
method called in the 'try' clause ? no way you can ...
unless you've documented this properly in the code itself
(which is not checked by the compiler ....)
Can you handle the error conditions of func1 and func2
with the same handler ? YES (you'll probably save a few
keystrokes down the road) but your code will be very hard
to maintain later when func1 or func2 have changed.
Another thing - what if someone removes the call to
func1 later during maintenance ? will he remember to
remove the proper 'catch' clause ? I don't think so.
Now compare this with:
Result res = func1();
if (res != SUCCESS)
{
}
else
{
}
res = func2();
if (res != SUCCESS)
{
}
else
{
}
res = func3();
if (res != SUCCESS)
{
}
else
{
}
In this code it is clear what code handles the error
conditions of each function called. No chance someone
will ever forget to update the proper error handler when
say func3() changes ...
As I see it - there is really only one way to handle errors
properly - right where the've occured. This is the only
place where you can embed the necessary logic that
is needed to properly manage the problem. |
| Mon 03 Mar | Russ T. | Not to sound crass, but, are you friggin' kidding me?
This result object and the examples I've seen in this thread so far have been crontrived and almost trollish. As far as the last example on the result object, I submit that one can be as specific or inspecific on where they place try/catch to be as local or non-localized in handling specific error conditions. With result objects, you _always_ have to test. Period.
Obviously, as others have pointed out, you can get sloppy with Java exceptions (e.g. method declared as throwing 'Exception' , throwing unchecked exceptions, etc).
However, to suggest that the whole Exception paradigm is not as effective as result codes is ludicrous.
I'd contend that most experienced programmers will agree that a hybrid of two approaches allows software to be safer, more reliable and still maintainable. Just as return code checking is lacking when dealing with error propagation, throwing exceptions is inappropriate in cases like String.indexOf(). In the case of Java, I'm really geeked at the ability to know at _compile time_ that there is some base-level of error processing ocurring in my code. |
| Mon 03 Mar | Jim Lyon | My maxims on exceptions vs. error codes:
1. When in Rome, do as the Romans. If you're extending a body of code that already uses error codes, use error codes. If you're extending code that already uses exceptions, use exceptions. Code that is half and half is almost always worse than code that uses either model exclusively.
2. If you don't have garbage collection, don't use exceptions. The major problem here is that when an exception propagates through a routine, that routine needs to release any resources it acquired. By far, the most often acquired resource is a memory allocation. Without garbage collection, your code gets littered with either try...finally statements or with smart pointers, both of which tend to hinder readability.
3. For releasing resources in the face of exceptions, syntactic sugar like C#'s 'using' statement is your friend. Yes, you can do it in C++ too, but you end up creating 'resource holder' classes for each resource type that might be held. These classes tend to clutter up the code and reduce readability.
4. All things being equal, prefer exceptions. You can get rid of a bunch of code clutter by not having error-code checks everywhere. This is win when you don't have to replace it with lots of resource-allocation and smart-pointer clutter.
But the most important maxim is:
5. Figure out your error-handling strategy at *design* time. Over the years, I've seen innumerable projects fail because people coded the main-line code first, and then thought they could go back and add in error handling. The result is usually lots of bugs that persist for years. |
| Mon 03 Mar | Punter | It's surpising to find that some people still prefer result codes.
Here's a couple of questions for you:
How do you report errors from constructors and operators?
What do you do about the 95%+ of client programmers that ignore your result codes?
If an exception is not handled, the application ( or at least the thread) exits, for an ignored result code the application continues in an invalid state. If that doesn't concern you, I hope you're not working on anything important :) |
| Mon 03 Mar | Mike McNertney | Liron, you keep talking about how bad it is that you can ignore exception errors, but that problem is much worse with error codes such as you are suggesting. The compiler doesn't even complain if you completely ignore the error code and proceed on your merry way. If anything, the requirement of checking result codes after every function call actually discourages error checking.
Second, there is a problem with your solution that I don't believe anyone has mentioned yet. It requires casting the result of every method, since your return value is simply Serializable. You are basically throwing out all compile time typechecking of return values, which seems like an extremely bad idea, especially since the interface no longer describes what the appropriate return type *should* be, and you must rely on the documentation.
One other point. People mentioned a few cases where a library threw an unchecked runtime exception. Well... if you weren't able to anticipate this error, you also wouldn't anticipate any other sort of error return from it, so the chances of any program continuing to work when a library encounters some sort of undocumented error condition seems pretty slim to me. At least with an unchecked exception you get a stack trace to exactly where the error occurred, instead of some memory corruption causing your program to crash 5 minutes down the road |
| Tue 04 Mar | Liron Levy |
My answer to Russ:
Yes I ALWAYS have to check - what's wrong with this ??
What is so trollish in my examples ? - IMHO they don't
even come close to the definition of 'contrived'.
My answer to punter:
'How do you report errors from constructors and operators?' - You are right - constructors and operators
are the single case where result objects are a problem. In
fact - I feel that the whole exception mechanism was
designed to solve this single problem ... My solution is
simple: don't put code that can fail in constructors. I've
always preferred to do this in dedicated initializers (the
COM way). In large software systems - you often need
to do a second pass initialization anyway (e.g., to pass
pointers to interacting objects etc).
'What do you do about the 95%+ of client programmers that ignore your result codes?' - I make sure they don't.
'If an exception is not handled, the application ( or at least the thread) exits, for an ignored result code the application continues in an invalid state. If that doesn't concern you, I hope you're not working on anything important :) '
On the contrary - when all else fails I'd rather have the
software continue on working thn failing automatically.
Consider an auto-pilot software. Would you prefer the
software to crash when an unhandled error has occured
or to continue on running (with the risk of unpredictable
behavior - but still a risk, not a must).
My answer to Mike:
'The compiler doesn't even complain if you completely ignore the error code and proceed on your merry way. If anything, the requirement of checking result codes after every function call actually discourages error checking.'
I strongly disagree with you. This is strictly a matter of
coding guidelines and conducting proper code reviews. On
my team nobody ever thought of ignoring error codes !
'Second, there is a problem with your solution that I don't believe anyone has mentioned yet. It requires casting the result of every method, since your return value is simply Serializable.' - Believe me it is not such a big problem. In
java you do this on a daily basis anyway ...
'Well... if you weren't able to anticipate this error, you also wouldn't anticipate any other sort of error return from it, so the chances of any program continuing to work when a library encounters some sort of undocumented error condition seems pretty slim to me. ' - At least your software
is not GUARENTEED to crash ...
'At least with an unchecked exception you get a stack trace to exactly where the error occurred, instead of some memory corruption causing your program to crash 5 minutes down the road' - We solved this using the
logger mechanism. BTW - we've always used profiling
tools such as Purify to make sure we don't have memory
problems (I wouldn't trust the JVM for these). |
| Tue 04 Mar | Get Real | Sounds to me like maybe you moved to Java from a Visual Basic or similar background and are trying to make Java behave more like what you are familiar and comfortable with. If you are going to ignore all of the benefits of using a language like Java, why not just switch back? At least that way you won't have to fight with the tool so much.
Seriously, your arguments assume the worst possible behavior on the part of someone using Java as it was intended: poor design, ignorant exception handling policy, contrived sources of errors, and so on. At the same time, you assume model behavior for someone following your recommendations: perfect code reviews, people that check all dependencies when modifying the behavior of their functions, and the coup de grace, ' 'What do you do about the 95%+ of client programmers that ignore your result codes?' - I make sure they don't.'
This scheme you propose goes beyond poor design; it is just plain silly. I won't bother repeating or adding to others' arguments, it will obviously do little good. In a few years though, when you have some experience, you'll see what all these folks are trying to tell you. Good luck. |
| Tue 04 Mar | Liron Levy |
Reply to 'get real':
First - I have about 8 years of programming experience
and I've designed and programmed in many different
environments, so please - answer to the point instead of
blatantly attack me for my thoughts.
'This scheme you propose goes beyond poor design; it is just plain silly' - tell this to the guys that developed COM,
and Windows API, I guess they were silly too ...
BTW - visual basic has an exception mechanism very similar
to Java exceptions so I don't have to switch back. I've
recently talked with a very experienced and respected
VB programmer who told me that on his team they prefer
not to use exceptions at all - only error objects (that are
also supported in VB as an alternative). |
| Tue 04 Mar | Chris Tavares | Just a couple points of information on exception handling in C++ as responses to a few messages back:
1) C++ exceptions, at least with VC++, DO pass through C language stack frames in my experience. In fact, I've successfully thrown exceptions from Windows message handlers back to my event loop.
2) C++ does not have garbage collection, but exceptions are still a good idea. You use the 'Resource Acquisition is Initialization' idiom - never use a plain pointer or handle as your only reference to a resource. Instead, put it in an object (for memory, auto_ptr<> is your friend). This way, the resource will be automatically freed in the destructor.
There's two nice things about this idiom:
1) Your C++ code has very few try catch blocks. Any cleanup is automatically done when the stack unwinds.
2) You don't need explicit deallocation anymore, since the destructors automatically free their resource when the stack frame exits.
Exception safe code in C++ is hard, no doubt about it. But it is often quite clean and elegant once you learn the techniques. And these techniques apply even in the face of return error codes. :-) |
| Tue 04 Mar | Dennis Atkins | I've enjoyed this thread and it has made me even more convinced that the approach Levy uses, which has long been the approach I favor, is best.
One trick to make sure the caller doesn't totally ignore the result object is to make it the first argument (by reference) to any function that can fail.
Regarding the issue of memory leaks, why on earth is this an issue for anyone writing professional software anymore? Your debug version of ANY software you write should be journalling all allocations and deallocations. Any memory leaks, or buffer overruns that occurred during the program should result in a repot being emitted when your program quits. Doing this is just basic common sense. Whenever I hear about 'memory leaks' and 'security problems caused by buffer overruns' and such I wonder where on earth the developer has been the last twenty years.
Levy, you rock! |
| Tue 04 Mar | Get Real | Hi Liron,
I apologize if my earlier post came across as a personal attack. Based on your description of your approach to exception handling, I get the impression that you lack experience exploiting modern approaches to this problem. If all of the examples where you've seen these approaches used are like the ones you have described in your posts, then this impression is correct - you simply have not seen these methods used properly.
This kind of experience is not necessarily a strong function of time in the industry either. I've been programming for a long time, and I would say that I lack experience in a number of areas. For instance, I couldn't write a clean texture mapper to save my life. Ask me to code a modern device driver? No way.
Despite this, though, the approach you recommend is simply poor, given the available alternatives. A number of people have tried to point this out to you, and you respond with contrived arguments as I mentioned in my earlier post.
As far as the folks that designed the Windows API and COM - I'd hardly call them experts in the art of clean design. Practical? maybe, but certainly not clean. Probably everyone on this forum could rant for days about the unnecessary trials they've had to endure as a result of the many poor choices these 'experts' made. I know I could. These technologies were put into place under very different circumstances than we face now, though, so there is some mitigation for the needless complexity, the bizarre behavior, and the many annoying idiosyncracies typical of those technologies.
If their new .NET offerings followed the same course as these older technologies, I'd be happy to look them in the face and tell them how silly their work was. Fortunately, however, they have learned and adapted. Structured exceptions didn't find their way into this new technology as a marketing gimmick; they are a superior solution in almost all cases.
Being a respected VB programmer hardly qualifies someone as an authority on the fitness of modern exception handling to a given problem. He/she probably lacks experience with using exceptions properly too, and is therefore falling back into comfortable patterns carried over from time using VB6 and its ancestors. All you accomplish when you do this is to complicate your code, to diffuse responsibility for handling exceptions all over the place, and to force people to do a job that the compiler could and should be doing better. As my earlier post mentioned, you are fighting the tool.
Finally, the post above by Jim Lyon is probably the best practical advice in this entire thread. If appeals to 'purity' and 'correctness' do not sway you, at least try his recommendations. They will make your life easier. |
| Wed 05 Mar | Alyosha` | 'As far as the folks that designed the Windows API and COM - I'd hardly call them experts in the art of clean design.'
It should also be mentioned that Win32 and COM were designed to be callable from C code, which rules out the use of exceptions. MFC throws exceptions, for what it's worth.
Exceptions are a little bit more painful in C++, what with the problems with memory allocation (everything's more painful in that language, actually =-) ... so I could see why one would avoid the try-catch-finally features of that language, but in Java, there's no excuse ... |
| Thu 06 Mar | Liron Levy |
'As far as the folks that designed the Windows API and COM - I'd hardly call them experts in the art of clean design.' - At least their system works (most of the time ..) |
|
| Software Patents | Tue 25 Feb | anonymous |
| How are all the small companies out there dealing with software patents? It seems to me that pretty much all software written probably infringes on one or more patents. Of course many of these patents are completely ridiculous, but the patent office cant possibly check for all prior art (and many times it doesnt seem like they even do a basic check). If everyone checked for patents for all software that was written I imagine software would take several times longer than it already does to develop and much of it wouldnt be written. Not to mention the additional costs that would probably be involved in legal staff. How can this system continue? Does the average small software company get contacted very often about patent infringement? |
| Thu 06 Mar | Greg Shoom | The first poster mentioned the cost of checking for patents before writing code. However, one of the real absurdities of American patent law is that it imposes a penalty on companies for doing this. If you violate a patent accidentally you can get sued for damages. But if you *knowingly* violate a patent, you can be sued for treble damages. So how does a company avoid this latter fate? By not checking if there are any patents applicable to what what they're doing. In fact I've heard that the lawyers for some technology companies specifically tell the engineers to avoid looking into patents so that they can't be accused of knowingly violating a patent. They're willing to run the risk of accidentally violating a patent to avoid being accused that they knowingly violated it. |
|
| Automated Tests for Data Extracts | Wed 05 Mar | Matt H. |
|
Ok folks, heres the question:
Im a huge fan of Xtreme Programming, but Ive had few chances to use it. Id like to write an automated test handler for my next script. The psudeo code will look something like this:
#----------------------
my $dbh = Make_Data_Connection;
$dbh->Sql = Select CustID, Last_Name, First_name from Customers
$dbh->Execute;
$rst = $dbh->First;
while ($rst is not null)
{
print $rst[0], $rst[1], $rst[2] to some_file;
$rst = $rst->Next_Record;
}
#---------------------
So, how can I automate this? Do I have to create a test environment that has like 16 records in it, run it, then compare the results to a file I have on disk somewhere?
Theres got to be a better way to automate the unit test.
Thoughts?
regards, |
| Wed 05 Mar | Go Linux Go! | I'm not sure if this is what you need, but take a look at the various unit testing frameworks at:
http://www.xprogramming.com/software.htm |
| Wed 05 Mar | Brent P. Newhall | I think you're ahead of yourself. :-)
According to XP principles (as I understand them), the developer begins with the customer's statement of desired functionality (the user story). The user story is then broken down into small programmer tasks. The tests are derived from the tasks -- and this is important -- before any code is written.
What is the script *supposed* to do? Are there any restrictions on its operation, such as a maximum run time or the exact format of the outputted file? Don't worry about how it will work; worry about what it will do.
Here's what I think you're trying to do:
You're writing a script that extracts all customers' ID, first name, and last name from the database, and writes that information to a file.
I would split this up for easier testing. Write one function that writes a customer's record to a file. Your test could run that function and ensure that its output is in the proper format.
Then, you'll need to test the entire function. I think the best route is to create a development database (which is a good idea in any case), which your automated test script populates with data. When the test script runs, it populates the database with known data, runs this function, then tests the outputted file to ensure that it has the right number of lines and that it contains the appropriate data. |
| Wed 05 Mar | Matt H. | >I think you're ahead of yourself. :-)
Obviously! I'm supposed to 'Test FIRST' blah blah blah.
In this case, I've chosen something trivilally simple where the inputs, outputs, and data transformations are so clear that it was possible to write the pseduo code from the business requirements. (In other words, someone looked at the User Story and said 'Hey, this is like, 10 lines of code ...')
Again, how do I test it?
I like the idea of a separate function. As for the dev environment ... I'll have to look into that.
Other advice? |
| Wed 05 Mar | Andrew Hurst | I've never written unit tests for simple accessor functions. get/set etc. They're pretty straightforward. You end up testing the language implementation, and not your code, as its just a couple lines. If it gets more complex than just a 'return foo;' however, I'll test it.
Now to what you were talking about: I think getting data from a database like that is an accessor function. Granted, you have to get a db handle, prepare it, and execute it, but thats about it. You'd be testing your select statement, and the libraries that return the data to your script. Unless you're doing something more complex than get/return you shouldn't need to test it. Its a waste of time.
Now, if its particularly complex SQL, you might want to set up some tests to put in some dummy data, then run that function and make sure it returns the correct value. Though, even that is arguable, imho.
Though I just thought of something. Maybe it would be a good idea for a test to just make sure that those columns in the database exist, and that they have the data types you expect. That way if anything changes in the database your tests fail immediately and you know why. Any thoughts? |
| Wed 05 Mar | Go Linux Go! | Andrew,
Your heading in the right direction about the database changing. Many people quickly test their code and say 'I don't need unit tests. I just tested my code. It works fine.'
It may work fine today, but what about tomorrow about Chuck the Chucklead Coder checks in his latest changes? This is where having a suit of unit tests come in handy. Just re-run all of your unit test to make sure that no other changes have broken your code. |
| Wed 05 Mar | Danil | Matt - one thing to keep in mind is that the diehards design their solutions with testability in mind. Thus 'how do I test this implementation?' isn't really the right question; instead ask 'how do I test this feature?'
That said, what do you think is wrong with the test you described? |
| Wed 05 Mar | Andrew Hurst | GLG,
So are you saying that the unit tests for accessor like functions (like our DB example) should just test the columns etc exist? Or that they should test the full functionality of every function. I still think its bad practice to test a function if its just a straight get or set.
I know my theory of just testing the columns would fail if Chuck came in and changed what columns that function retrieved. What might be handy is to make sure the data structure returned has all of the right columns/entries etc. Without testing the data. That should catch much of what Chuck could do to mess things up.
The extreme of testing your db accessor functions is that you end up with a test database, where all of your test code knows all of the data in it. With larger databases, this gets unwieldy, and very prone to error. Or, you could have your tests insert this data into the database for you. But, you'd end up with more db accessor functions in your tests, than in the functions you're trying to test. Thus you'd be more prone to having a bug in your tests (!) than in your regular code.
I'm rambling, I know. But to sum up: I'm not advocating not testing your database code. I am advocating not testing database code that does the equivalent of a simple get function.
i.e.
# don't test this:
sub getCategories() {
@rows = db_select( 'SELECT CATEGORY_NAME FROM CATEGORIES');
return \@rows;
}
# do test this, but don't test the data returned, test the
# data structure returned, num parameters, etc.
sub getSomethingComplex {
my ($parm1, $parm2, $parm3, $parm4) = @_;
@rows = db_select('SOMETHING COMPLEX WITH MANY PARAMS');
return \@rows;
} |
| Wed 05 Mar | nobody you know | I never used unit test on data returned but I have some thoughts to share:
* use database dump with well known data: drop database, create empty database, load data from dump, run unitests (querys), validate results
* database for unit test should not be large (opposite to load test) but rather with well selected exceptional data with all boundary conditions covered; it should be easier to track down error if you know that 'rent for customer Jack Welch exeeds allowed threshold' or 'employee Lucky One has birthday on Febryary 29th'; and it is easier to make accepted answer table/file with 10 record than with 50K;
* each time you discover new boundary or exceptional data you need to add this into test database (dump) and into answer tables/files;
* you could insert results from select query into separate table and compare this to right anwer table; (at least you can compare at database level - no need to dump file);
I have no idea how can one handle this conviniently or if there is framework or applications available. |
| Wed 05 Mar | Steven Tyler | Check with the QA department if they are using a functional test automation tool like Segue SilkTest.
Most functional automation test tools like SilkTest let you drive the GUI or a DLL then use the ODBC capability to do queries on the backend database. It has many features that can be wrapped in your own libraries to do database dumps and compare either in memory to expected results or by dumping to file and comparing there. I've done it both ways and it depends on the scenario which is best.
This way say if your use case is to add a person, you can capture the person information in a data structure to drive the GUI with it, and reconcile the database information from select statements.
If you're developing in Java then you could do this as well in JUnit by manipulating the objects directly and use JDBC to check results. |
|
| Good Job advertisements | Wed 05 Mar | Just me (Sir to you) |
| From this short description I can get a good picture of who they are looking for to do what.
http://radio.weblogs.com/0117167/2003/03/04.html#a163
More informative then a lott of the more serious descriptions out there. |
| Wed 05 Mar | Evgeny Goldin | Cool. I especially enjoyed from this one:
Stealth plane are nice. You give them orders, and they disappear. When it reappears, it always says “Mission accomplished. I hit the target”, but sometimes it really hit Lichtenstein's embassy. You are NOT a stealth plane, you are a big, noisy, C130, that we can hear, see, and talk to for the whole project.
Doesn't always work for me, though .. |
| Wed 05 Mar | Sun Tan Stan | '...e-mails, phone calls, carrier pidgins, and smoke signals...'
Too bad they don't have something about proofreading in that big list, huh? |
| Wed 05 Mar | Stephen Jones | They are probalby outsourcing and 'pidgin' iEnglish is the sub-contractor's lingua franca |
| Wed 05 Mar | Brent P. Newhall | I wouldn't describe this job posting as 'brief.'
I love it. It's descriptive, and it's written in a natural language style that anyone can understand. That's how all job postings should be written. Awkward, formal job postings deserve a lackluster response. |
| Wed 05 Mar | Nat Ersoz | How 'bout The Linux version:
1. Your level of 'smart' will be judged by your contributions.
2. You drag out gdb when necessary, but don't expect to use it.
3. You don't post questions to mail lists without first grepping the source tree.
5. You don't give a shit about Groove.
6. You know how to read and write an RFC, and know what compliance means. You've written and tested code against standards adopted industry wide (ISO, ITU, ...).
7. 'Stupid Human Tricks' with a GUI have little to do with getting the job done.
8. You realize that not every deliverable has a human interface. Therefore, you don't drag out the window manager when you need a socket handler.
9. You know that given the same functionality, simpler is better.
10. You don't check your share price every 15 minutes.
There, I think that will do... |
| Wed 05 Mar | Prakash S | hilarious!!!! |
| Wed 05 Mar | David | Isn't #5 sort of contradictory to #4 and #15?
We want you to have lots of exactly this kind of experience. Oh, and we also want you to be the kind who doesn't like to do the same thing all the time. |
| Wed 05 Mar | Philip Janus | '7. 'Stupid Human Tricks' with a GUI have little to do with getting the job done.'
[sigh]
I'd prefer to hire programmers who can grok that while they may be annoying, executives and accountants are the ones that sign the paychecks, and keeping them happy is generally job #1.
They don't have to be able to *do* the politics, but I want them to appreciate the need for them.
Philo |
| Wed 05 Mar | z | Did anyone else checkout this web page on a Netscape browser? Either mine is messed up or they really don't want anyone who doesn't use MS for everything. |
| Wed 05 Mar | Andrew Hurst | Netscape 4.7 is just broken. I spent a couple hours this morning trying to fix something it rendered incorrectly. Upgrade, is my only suggestion. (To Mozilla :) |
| Wed 05 Mar | mackinac | I'm using Netscape 7 and the page came up OK. I switched to Netscape 7 after trying Mozilla, but it seems to have many of the same bugs and it crashes a lot. |
| Wed 05 Mar | Andrew Reid | '* You can speak like Anthony Robbins, write like Ernest Hemingway, and code like Dennis Ritchie.'
I speak like Ernest Hemingway, write like Dennis Ritchie and code like Anthony Robbins. Think I'm a chance for the job? |
|
| Leaky Abstractions & Meta Object Protocol | Tue 04 Mar | satya |
| Remembered reading about the law of leaky abstractions sometime back @ http://www.joelonsoftware.com/articles/LeakyAbstractions.html and was watching this presentation at http://murl.microsoft.com/LectureDetails.asp?259 on Meta Object Protocol, when I realized that they are speaking about the exact same problem!
Wonder why the Meta Object Protocol has not becomre prominent... Too complicated.. ? |
| Wed 05 Mar | Martin | I don't get this 'Leaky abstractions' thing...
Abstractions are defined, AFAIK, to be simplified versions of the object, where all irrelevant stuff is discarded.
What Joels article talks about is how hard it is to implement something from an abstract desciption, or from a simple list of wishes.
So, saying that abstractions are leaky is like saying 'circles are not rectangular'. We know that, and we actually want and expect it to be that way.
What Joel calls leakiness is a basic property of an abstraction - you discarded the irrelevant stuff, and boom! You got an abstraction!
So if Joels abstraction seems to leak, it's either because
- He discarded something that was not irrelevant, and thus his abstraction was not an abstraction after all, and therefore he cannot conclude that abstractions are leaky.
- He expected his implementation of the abstraction to have the same properties as his abstraction, but it didn't (of course! The abstraction covers only the important stuff, the implementation has to cover everything!). So something is wrong with his implementation, but his abstraction still stands unleaky.
Or am I missing something? |
| Wed 05 Mar | Robert Moir | Leaky abstractions to me are ones that sound like a good abstraction on the surface but which are actually flawed representations of the actual thing they represent.
Some people know this and adjust behaviour accordingly, but I'm sure that everyone knows at least one person who thinks that understanding an abstraction of a problem is the same as understanding a problem. Those people are going to cause trouble. |
| Wed 05 Mar | Tj | I just reread the article. His Law of Leaky Abstractions:
'All non-trivial abstractions, to some degree, are leaky.'
One way to restate this is that all of our important communications and beliefs are simplifications of reality that can lead us astray if taken too literally. Another is that knowledge is fractal; look closely enough and notice many tangents to research.
I'm ordering the video lecturer's book, but as I understand it, the metaobject protocol is actually in somewhat common use. In Java, there's 'reflection' which gives metaobjects for an object's details like methods, class hierarchy, etc. Python even gives you access to doc strings. So unless I understand badly, people do use metaobjects every so often.
It's not very common in Java since Java tends to discourage programmers from doing cool things at runtime, but still it can be a clean way of creating classes dynamically.
BTW, you reminded me of the old worse-is-better article. [ http://www.jwz.org/doc/worse-is-better.html ] It's hard to make good abstractions (can you make a good contradiction-free religion?) but worth it in the end. |
| Wed 05 Mar | satya | Actually if you look view the presentation above, Gregor Kiczales deals with exactly this problem. How to expose some internal nature of the abstraction (what he calls a mapping dilema) so that an user of the abstraction can supply an alternate algorithm for the cases where the current assumption does not make sense.
One example he gives is for the Oracle implementation, where he says (based on his discussions) that about 35% of the code is actually a reimplementation of the OS memory scheduling algorithm because some db memory needs to be LRU while others need to be MRU!
The presentation is worth watching! ;-) |
| Wed 05 Mar | DJ | Definitely a good presentation!
What I get from it is that leaky abstrations are caused by hidden implementation decisions that are made affect the behaviour of the class/object in certain ways.
That is the nature of abstrations and we have all ran into them. Currently to overcome these problems we usually have to do major workarounds
Gregor is saying we have to find a way to expose those hidden implementation details and let the client choose which implementation to use.
There are huge problems to overcome but I think it is something to think about the next time you are creating classes. |
|
| Motley Fool has the best message boards | Tue 04 Mar | Craig Sullivan |
| I think its great that Joel has built these message boards and allows us to use them free of charge, but I would vote for the Motley Fool message boards as the best on the Net.
Problems with Joels implementation:
1. If you are a semi-frequent visitor to a message board site, you dont want to wade through each topic to see whats new. Its better to have all the new posts near the top of the screen.
2. Who cares if the conversation meanders off the topic? Thats how conversations normally flow. Somebody throws out an idea and the community runs with it. With Joels board, there are a bunch of topics with replies that nobody reads.
3. Not being able to reply to a particular post sucks. I want to be able to talk to a specific poster sometimes. When I want to talk to the community at large, Ill start a new topic.
4. Joel needs some kind of recommendation feature so people dont have to wade through reams of crap to find the one post that is worth reading. Most people have neither the time nor the desire to read stuff they arent interested in.
I agree with Joel that the other sites he mentioned in his e-mail suck, but its not because they are threaded and put new posts _near the top/on the first screen_, its because their implementation sucks.
Joel, I think you have a successful message board here, because your other content is so good, not because youve nailed the message board format. |
| Tue 04 Mar | Rob | Have you read Joel's article http://www.joelonsoftware.com/articles/BuildingCommunitieswithSo.html yet? It explains away most of your complaints. BTW, if you want an off-topic conversation, either start a new one or use another forum instead of suggesting 'improvements'. This one has clear objectives. |
| Tue 04 Mar | Craig Sullivan | Yes, I just finished reading Joel's article and I'm disagreeing with it. Joel didn't mention anything about a board cop that decided which posts were on and off-topic. Thanks for your efforts. |
| Tue 04 Mar | Super | I don't even believe that Joel engineering this message board this way from the start because he's some sort of expert on how message boards should work.
What I think he did was create the most simple message board possible, in order to save time and effort, and it just happened to work. Now he writes a massive article about how he's created the perfect message board.
Either way, his board is decent for this kind of discussion, and it's easy to use. |
| Tue 04 Mar | Herbert Sitz | Well Joel did say that in designing this board: 'Two hours of work (ASP, Microsoft Access, and VBScript) and I had banged out a system that did pretty much everything I wanted (which is not much!) '
But in his defense he did look at lots of more full-featured message systems that he didn't like before he resorted to writing his own. You can read the story here:
http://www.joelonsoftware.com/printerFriendly/articles/fog0000000008.html |
| Tue 04 Mar | pb | The Motley Fool boards are *horrible*! Since they switched to membership even to *read* the boards, they have become a total ghost town (as have Raging Bull and Silicon Investor; whereas Yahoo stock boards have a singl/noise ratio very close to zero).
Here's another idea for a budding entrepreneur: create stock message boards with the right balance of active discussion and high signal/noise ratio. If you charge, only charge to post. Be careful about charging, though. One major advantage to not charging is that anonymity is required to get some of the best postings. |
| Tue 04 Mar | Tj | This is a great interview question. Ask the candidate whether motorcycles or racing cars are better. No hire to anyone who has an immediate, unshakable belief in one over the other. |
| Tue 04 Mar | TK | Joel's orginal BB was Greenspun's LUSENET. I think he kept the straightforward function of LUSENET and didn't implement email alerts or categorization. I like the way it turned out.
I use LUSENET for a completely different kind of community. We use it to report high school events such as sports scores and academinc competition results. I'm fortunate to find 5 or 6 folks we are willing and able to post the reports. Email alerts broadcast the reports to several hundred students, teachers, and parents who read email but never surf (includes my wife). This isn't quite the same type of community as the JOS crowd. We need slightly different functions from our forum. (It takes all kinds of animals to make a farm.) |
| Tue 04 Mar | PizzaMan | Regarding quoting (or the lack thereof), in an email list or a usenet group where the entire thread is not necessarily visible or available, quoting helps place the follow-up in context.
One or two people I exchange email with regularly have their email software set to *not* automatically quote the original message in the reply; I find this somewhat irksome as my original message may not be top-of-mind any longer and having it immediately visible is handy.
On this type of board, though, where the entire thread is always visible, quoting becomes redundant and distracting. I think Joel made the right decision there. |
| Wed 05 Mar | smm | Just because your mail software is so braindead it can't show your sent mail as a reminder doesn't mean the rest of us should suffer through tons of quoting in email.
Outlook is probably the number one contributor to this problem. In fact, it really isn't email software, it's just software to create incomplete copies of a discussion thread. |
| Wed 05 Mar | Passater | Tj, that would be a very stupid question. People have likes and dislikes, you know. |
| Wed 05 Mar | Tj | Note that I didn't define the context of 'better.' I think if you look closely at some interview questions, a version of this is asked, where you're penalized for having a bias that stops you from seeing the alternatives' merits. One should at least consider the point of things he dislikes.
If you can't see what's good in others, what good are you? ;) |
|
| Mobile devices application ideas. | Tue 04 Mar | scorp |
| Is there anyone working on creating applications for Mobile devices like PDAs and Java Enabled phones ? Considering the screen and memory/processor limitations, what do you feel are the various kinds of applications that make sense to develop. Im basically working in 3d visualization and would like to know whether 3d viewing makes sense , is there a need for it on such devices ? Any other ideas are welcome. |
| Tue 04 Mar | sedwo | We are currently developing data acquisition and control software for Pocket PC's (imagine a tricorder). The data handling aspect has an unlimited scope of possibilites with 2D/3D visualisation. It is planned for the future as it would be extremely usefull to manipulate an view the data in various forms. To date there are very few (~2) libraries to aid application development with better graphing and visualisation. More choices would be good. We would be very interested in applying an easy-to-use 3D library to our app. for viewing the logging of data in real-time.
The gaming/entertainment industry on the PPC is already developing real-time 3D apps. Depending on your expertise, today's PDA's are full of power and potential to handle sophisticated applications. |
| Tue 04 Mar | scorp | sedwo,
What sort of library are the gaming guys using for creating 3d apps? Is it proprietary ? Do you have a good implementation of something like OPenGl for these devices ?
Coming back to your application , what sort of 3d viewing do you require ? Do you have triangulated data that you wish to render ? |
| Tue 04 Mar | sedwo | scorp,
To my knowledge most of the 3D games developed for PPC's are a hybrid of the released DOOM source and a bit of their own stuff. Gapidraw is a popular library to handle the 2D stuff, and an easy platform to build on a 3D engine. I can't say I've seen OpenGL stuff, but wouldn't doubt that some sort of an implementation exists.
While our current application deals with all data in general, a plug-in architecture still needs to be designed for more specific data handling and viewing. GPS data for example will need to be handled within a 3D view. AFAIK, our primary milestone is 2D, with 3D in the future after that.
All in due time. And many long hours. ;-\ |
| Tue 04 Mar | Li-fan Chen | Yeah data acquisition.
If you get a reciept printer or scanner to
work with it and have access to the
corresponding printer/scanner access apis
you could also pull off a portal Point of sale (POS) station.
I have seen young adults do Pepsi taste tests out on Queen Street in Toronto with a Palm collection the results of the taste taste.
At expos in VAncouver I have seen actual POS systems.
But really if you don't need the mobility you couls save a crapola of trouble by using a laptop. |
| Tue 04 Mar | runtime | fathammer.com is start-up that makes 3D gaming engines for handheld devices (like Pocket PC and Symbian cell phones). Their screenshots are pretty amazing, but I haven't seen a real demo.
Also, Macromedia has been beta-testing the Flash Player 6 for Pocket PC. I think it be released publicly in just a month or two. |
| Tue 04 Mar | Brent P. Newhall | To me, PDAs are ideal for holding collections of data.
I'd love to see a PDA application for downloading e-books from Project Gutenberg ( http://promo.net/pg/ ), with which I can search for authors, genres, and titles that I want. Select a title for download, and it's automagically downloaded to your Palm and set up for use with a good reading application.
There's interesting potential for games on the PDA, and I'm not thinking of first-person shooters. |
| Tue 04 Mar | pb | You're going to read a book on your Palm??
There are almost no apps of consequence on wireless. Most of the data capture, etc. will be custom. Games might be interested but latencies are so bad that it'll be tough to produce a decent networked game that needs speed. |
| Tue 04 Mar | Brent P. Newhall | I *have* read books on my Palm.
And I'm not thinking of networked games, either. |
| Wed 05 Mar | Ben Combee | I've seen some very neat games on Palm OS -- sure, there are lots of puzzle games and ports of old arcade games, but there are also some interesting concepts in cooperative gaming. At PalmSource 2000, the game AutoPond was really popular -- it involved using IR beaming to collect items, but you had to go out and find people who had items you wanted to complete your goals. When you 'met' a new device, you would find out about any devices that one knew about, expanding your field of possibilities even more.
As for e-books, I use my PDAs for all sorts of reading. My use here falls into a few quick categories:
1) Reference -- I can carry a large dictionary around with me all the time, and also things like the CIA World Fact Book. A lot of people like having religious texts too.
2) Clippings. If there are web sites that update frequently that I like to follow, having the articles synced to my device means I can check up on them when I have a free moment. I use AvantGo to grab sites like Salon, The Motley Fool, space.com, and the American Bar Association newsletter.
3) Short stories. I like having a collection of stories from FictionWise on my device all the time. I'll read one or two a night before going to sleep, or pass the time at lunch reading through them.
Another really neat application I've seen is a translator that lets you build up sentences for common activities in your local language, and not only does it translate it into another language, it provides an interface for the person to whom you are talking to answer the question in his or her native language, and it translated that back.
Just look at a site like www.palmgear.com to see a whole universe of apps that people have found to be useful. |
|
| Does Anyone Know about Internet Telephony? | Tue 04 Mar | Tele-Phony Guy |
| I am curious about VOIP from a developers perspective.
I would like to implement a solution that allows incoming messages or faxes to be taken at an assigned phone number and stored on my own internet-connected server. Likewise I would like the capability to call out from an internet connected server, from a program, to real world phone numbers - for instance, to distribute messages to an organizations membership.
So what Im thinking of is basically a sort of specialized virtual PBX with fax and automated outbound capabilities.
Now, is there a commercial service that sells access to an access point (for want of a better word) that would allow an internet connected computer to access real physical real world phone lines? Ideally, Id rent minutes and Id rent access to a dedicated phone number. The inbound and outbound audio data streams would be socket IO to my server.
I know that my question probably scratches the surface of a vast sea of knowledge. Please be kind.... I dont even know where to begin researching this stuff.
Thanks. |
| Tue 04 Mar | Tele-Phony Guy | Oh, yeah... I am interested in this from a DEVELOPER'S perspective. I know that there are several virtual PBX and internet based message services for consumers and end users that make the user go through a bundled software package to monitor calls or download messages. I can't use this level of service for what I'm planning.
I want something that allows me to write my own software for this purpose - for instance, allowing me to capture inbound voice messages to WAV files and then doing something with them based upon caller ID, as an example. |
| Tue 04 Mar | Prakash S | I don't know much about it, but this sounds interesting, ....
If you do find something could you pls email the links/ etc to me.
Thanks, |
| Tue 04 Mar | Dino | Alcatel OmniPCX 4400 |
| Tue 04 Mar | TJ Haeser | 'Does Anyone Know about Internet Telephony?'
I know it sucks.
Glad to be of help! |
| Tue 04 Mar | Justin | Have a look at the YAC Number section on http://www.yac.com
This (free to subscribe) service allows phone redirection voicemail and faxing.
Also http://www.MediaRing.com.
Try searching google for 'softphone'. |
| Tue 04 Mar | Li-fan Chen | A bookstore should have a small but
respectiable telephony section in the
technology and computers section check it
out. Unfortunately the telcom industry find
it necessary to come up with trillions of
bizarre acrynums and concepts and much of
that made it into the internet telephony
world. A big picture book will help prep you
a lot. After that you might want to try an
API book like JTAPI (Java) or a collection
of system tools like Bayonne For Linux
(C/C++). Good luck :) |
| Tue 04 Mar | Li-fan Chen | There used to be a magazine call 'Computer Telephony', but business is down so they renamed it to some portal-sounding name like 'A Magazine About Any Modern Devices that uses electricity'...
They have a website, check them out. You might find some of those telephone access point you are talking about.
Another thing: Microsoft has TAPI 3.0, it's like Java's JTAPI, but in COM. John Wiley Publishing attemptd to write an open source visual basic wrapper around TAPI 2.0 I think, check that out. |
| Tue 04 Mar | -j | Session Initiation Protocol (SIP) is a good place to start, although SIP is in it's infancy and supports a lot more than just VoIP. Check out http://www.sipcenter.com for more info. Another good resource is 2600, the hacker quarterly. They have lots of info, descriptions, and some details on switched networks, LATA's, etc. which may or may not be helpful to you. Pick it up your local bookstore or magazine rack if you can find it. It's on the web at http://www.2600.com |
| Tue 04 Mar | jerry | It sounds like you don't want to host the actual hardware. You might want to look into Voxeo for something like this. Take a look at www.voxeo.com. |
| Tue 04 Mar | Larry | Check out Vovida's VOCAL system. This is a complete library of SIP-based VoIP and call processing functionality.
http://www.vovida.org/ |
| Tue 04 Mar | Tele-Phony Guy | Everyone - THANKS. The links that have been provided look great.
I just needed a starting point so I could come up to speed on the terminology.
The question/statement about not wanting to host the phone access myself is correct. I only want to host a network server (IE, pure software) and I want to outsource the physical access to the telco lines. |
| Tue 04 Mar | Doug Withau | H323 is the big standard for VoIP. There is also SIP which is simpler. The vovida stuff is open source.
Cisco has their own form of simplified H323 called Skinny. They also make POTS to IP gateways. Get out your checkbook.
Avaya, Nortel and all of the bigger networking hardware companies are investing in VoIP. |
| Tue 04 Mar | Battered VoIP Expert | Hi,
I understand exactly what you want, but am not sure if such a hosted solution currently exists. The effort of sending a bit stream to a server that would make calls is a piece of cake actually and you don't necessarily need VoIP to accomplish it. All you need is a server that can encode (transcode actually) your packets into a G.711 stream that is passed to the PSTN (public switched telephone network). The G.711 codec is only necessary if you want to fax stuff or want to ensure compatibility. There are cards that can do this, but I'm not aware of a hosted service that provides what you're looking for.
The card itself would probably have an Ethernet interface (or through a NIC via the PCI bus) and break up the voice packets into a series of bits that would be reformed (probably through FPGAs or DSPs) into a normal TDM (time division multiplexed) voice channel called a DS0 (digital signal 0, the lowest bit rate channel in the telephone network). The card may have a normal telephone jack on it but more likely has a T1 coming out of it (if they have more than one customer :-).
The encoding of the bits into the DS0 is handled by a software codec. The ITU maintains standards for these codecs, but the G.711 codec is the most used and most compatible one (and the only one available for faxes). It offers a 64Kbps bit rate (8 bit samples at 8KHz).
Now, as to what format to send your packets in, that's the question. If you use a VoIP protocol, it would probably be an RTP/UDP stream with SIP and/or H.323 to control it. There is a hodgepodge (i.e., mess) of protocols out there now, but you would ultimately have to use whatever the host provider would want anyhow. Try Googling on 'hosted telephony provider soft VoIP fax call support' or stuff like that.
Email me at anytime. If I'm free, I'll help you out. voip@axebow.com |
| Tue 04 Mar | Battered VoIP Expert | Oh, and one more thing. If you could get a host to accept WAV files, then it wouldn't really be VoIP at all. IMHO, an MP3 format would be much better and I'll bet that someone is working on an MP3 to voice call converter somewhere right now (Cf. IVR systems). A lot of embedded products that use voice are looking at the MP3 format right now becuase it's free, relatively easy to implement, and inherently has variable characteristics.
BTW, a 'VoIP' call would entail you running some sort of *real-time* encoder on your PC that would take an analog source or waveform input and transmit it immediately to a far end with all of the performance handling characteristics that real-time stuff demands. If your connection wasn't up to snuff, packets would drop left and right and quality would suffer. |
| Wed 05 Mar | | 'Does Anyone Know about Internet Telephony?'
Sure, someone does.
www.catb.org/~esr/faqs/smart-questions.html |
| Wed 05 Mar | Matt Watson | Not sure what platform you are developing for, but inside the Microsoft Platform SDK there are some TAPI examples for TAPI 3 (The COM Implementation) and for TAPI 2.
The TAPI 3 samples work with streaming files and recording conversations and stuff like that. You might be able to find what you are looking for there.
They helped me out in my current TAPI fiasco. |
|
| One possible JOS improvement... | Mon 03 Mar | Deep Thinker |
| Lately Ive started a couple threads, and then responded to various posts as people reply. Ive tried to keep things on thread, and answer any questions people have.
One thing Ive found irritating is that to respond to a thread, you have to move on to a new window, and the comments you are replying to are not visible. I would find it very handy to have the area for entering a response be in a popup window, and have the comment thread be visible.
I find popups as irritating as the next guy, but this seems to be a reasonable circumstance for one. It would certainly make things easier than going back and forth to check previous comments.
Just a thought. |
| Mon 03 Mar | Sam Gray | That's why I usually open the reply form in a new window. It even lets me reload the original thread in case I've been typing for a while. Plus, that way I can cut and paste, which makes Joel so *very* happy... (= |
| Mon 03 Mar | red | One wonders whether is an issue for the webapp, or the browser. Moz & Phoenix work on many platforms, and keeping two windows open in a tab is just a middle-click. Opera and that Apple browser are probably similar.
Then again, the users here of non-IE browsers total probably 1-2%, so you can't just treat it as a matter of an upgraded browser. |
| Mon 03 Mar | red | And of course, I'm on a stupid UI tangent. This precise point is actually answered in the mailing. |
| Mon 03 Mar | red | Oops, I just had time to fully read the mailing. All my posts today can be deleted. |
| Tue 04 Mar | Dennis Atkins | You have to admit that Joel is right about one thing -- talking incessently about the design of the forum rather than the topic of the forum is BORING BORING BORING. |
| Wed 05 Mar | Peter Montgomery | If you're really hot to cut and paste, open the 'reply' in a separate window. I use IE, but I'm sure all the other browsers allow this. In IE, just right click, and then select 'Open in a new window'. Voila'! Your original thread is there in the original window, ready for all the referencing you want to do.
Thanks,
PeterM |
|
| Database modeling in Visio 2002 | Mon 03 Mar | Jeff |
| Visio 2000 could create DDL scripts from an ER diagram. Visio 2002 does not seem to be able to do this. Does anyone know why Visio 2002 dropped this feature?
Does anyone have any other gripes about using Visio for db modeling?
TIA,
Jeff |
| Tue 04 Mar | Karel | It amy be that visio/M$ wants to adopt the UML profile for datamodelling and genrate DDL from there? |
| Tue 04 Mar | Sanjay Sheth | I also noticed that MS dropped support for Sybase SQL Server in Visio 2002 which Visio 2000 supported very well. |
| Tue 04 Mar | Fred | Generating DDLs is still possible but only with the Visio Entreprise version that comes with Visual Studio .Net!
Greets, |
| Tue 04 Mar | Colin Evans | I use CASE Studio to do my ER modeling; Visio's ER support is crappy. At $330 for a license, it is a deal!
http://www.casestudio.com/enu/ |
| Wed 05 Mar | Eugene Patek | Being a DBA - database modeling is part of my job. My preference always has being ERWin. It is not cheap, but probably best suited for all modeling-related, DML generation, reverse-engineering of the existing DB, etc., tasks. I hope CA does not ruin the great software :-( |
| Wed 05 Mar | RocketJeff | If CA's past performance is any indication, I don't think you have much hope. |
| Wed 05 Mar | Philip Janus | Eugene - what does ER/Win do that's worth $8k?
Recently I've been using Dezign for Databases ( www.datanamic.com ) for ER Design. It can reverse engineer, it's easy to work in, it displays exactly what I need, it can generate the DDL scripts, and it's $100.
I looked at Case Studio (posted above) last night, and it looks even better, and is $300.
Philo |
|
| Is the forum software available? | Mon 03 Mar | Olli |
| Hi, in the latest article Joel talks about the design decission made for the forum software. I want to know if this software is available for download somewhere? |
| Mon 03 Mar | Joel Spolsky | Nope. It's hardcoded with a bunch of things that are specific to our setup and we don't have time to clean it up for distribution.
That said, I believe that there are people who have cloned it, I just don't know where. |
| Mon 03 Mar | Alex Chernavsky | Here's a PHP / mySQL version that's very similar to the JoelOnSoftware boards:
http://www.johnsadventures.com/backend/DiscussionForum/APHPDiscussionForum.html |
| Mon 03 Mar | Big B | http://rik.org/discuss.php?cmd=show&thread=2 |
| Tue 04 Mar | Luser | This type of software can be created by poorly trained chimps in just a few hours. Go find the PHP (or any language) manual and get to work.
Compare this to the 1960's when creating software like this required highly trained ex-NASA chimps. |
| Tue 04 Mar | Li-fan Chen | Mommy how much is that chimp in the window? |
| Tue 04 Mar | Luser | The chimp is $10 for the first hour, then $5 for each additional hour. You are responsible for feeding the chimp. |
| Tue 04 Mar | dunno wair | I'm interested in the Extreme Programming methodology.
Is a second chimp available? |
| Wed 05 Mar | Greg Falcon | Nope. Chimps are too smart to fall for gimmicks like that. |
| Wed 05 Mar | dunno wair | What if I offered him stock options? |
|
| Hmmm... It's a nice discussion forum, but... | Mon 03 Mar | Philip Janus |
|
...I cant count the number of words I wrote.
HeyMacarena commented in the Joels Email Article thread:
Both message board forum software have tons of features and are the direct opposite of the requirements in Joels forum e-mail that less is more, yet they are still very popular with the website community.
Anyhow, it seems that simplicity isnt necessarily always better.
Someone wrote an article about that once, based on a product he worked on and was very proud of.
Ah, here it is:
http://www.joelonsoftware.com/articles/fog0000000020.html
So which is it? Less is more? Or more features better?
Philo |
| Mon 03 Mar | Tim Sullivan | It really depends on the goal of the application and the expectations of the users. The goal of the message board was not an ideal, high-powered, full-featured messaging system. It had a single, simple goal: allow FogCreek clients the easiest possible way to get support from FogCreek online.
If this were a commercial forum product that was for sale, this would probably not be a best seller, nor would it be heralded as the next big thing in discussion technology. So comparing it to something like Excel, which is commercial and needed to compete with the reigning heavyweight champion of DOS, Lotus 1-2-3, well, that's just plain silly. Different scopes, different problems, different target audiences. |
| Mon 03 Mar | pb | If he were selling the software as a product, the question might be relevant. |
| Mon 03 Mar | Philo | I thought about this on the way home.
He IS selling a product - the forum. He wants people to come here (and keep returning) instead of going somewhere else.
Right now returning members come here because of the discussion. Joel's articles have drawn the participants, and his forum software has given them a venue. He has a lock on this particular product - a monopoly on intelligent Microsoft-tolerant professional coders interested in software as a profession.
That, by the way, I believe is the differentiator among the forums Joel mentioned. It's not the format, but the style of the forum. Slashdot attracts the disaffected counterculture anything-but-Microsofters. FuckedCompany has its name and Pud's general attitude to thank for attracting the juvenile anarchists in town.
As counterpoint to the 'easy posting in a linear fashion makes for intelligent discourse' just check out Anchordesk - a regular litany of MS bashing.
So... what if we grow discontent with this forum? So long as the greasy hamburger joint with the stale fries and the rude waitress is the only place in town, that's where the crowd will go. But when someone opens a new place next door with good food, quiet music, and a pleasant waitstaff, the greasy hamburger joint may find out their cheap prices weren't what people were looking for.
I give it two months before someone sets up 'Joel II' on a full-featured BBS software. It'll be interesting to see how right Joel is about 80/20 really being a factor in discussion forums.
Philo |
| Tue 04 Mar | one programmer's opinion | 'I give it two months before someone sets up 'Joel II' on a full-featured BBS software. '
Well, my bet is it won't become a popular site. Most of the popular forums/newsgroups/etc. on the web are places that have content + discussion. |
| Tue 04 Mar | Brent P. Newhall | Nothing is now stopping or has ever stopped anyone from setting up 'Joel II', despite numerous complaints about the features of this board.
It hasn't happened. I'd be interested to see what would happen if somebody tried.
IMHO, Joel's set up a very good board. A separate board isn't worth the trouble, and wouldn't sustain a long-term community. |
| Tue 04 Mar | Dennis Atkins | You have to admit that Joel is right about one thing -- talking incessently about the design of the forum rather than the topic of the forum is BORING BORING BORING. |
| Tue 04 Mar | Philo | Philo's Third Law:
'Attempted to suppress perceived noise generates real noise'
Dennis, instead of hitting every forum with your opinion, why don't you start threads covering topics you're interested in?
Philo |
| Wed 05 Mar | Dennis Atkins | Are we bored yet? Are we? Huh? Gotta admit this is dull right? Why does the forum have a white background? Why not lime green? A lot more people would use this forum if it had a lime green background I assure you. |
|
| A good desk | Mon 03 Mar | Marc |
| Im in the market for some office furniture. Most of this stuff is easy to find, but a good desk is eluding me. Everything I see seems to be designed forty years ago. Sure, they are all very good looking and even have some accommodations for technology (cable paths, keyboard drawers, etc). But none of them can handle what I want too through at it. The best example is that they all have hutches (something I like) that can only accommodate a single monitor (something I cant have).
Here is what Im looking for:
- Reasonable price (Im not forking over $10k for desk, more like a few hundred)
- Good amount of storage (PC, files, books etc. Preferably with encloses to keep things clean).
- Room for 3 monitors, a flatbed canner, pad of paper, and a PocketPC
- It would be nice if it had integrated lighting, power, etc. But none of that is a necessity.
So what do you guys use? Where did you find it?
Also, does anyone know if that extreme desk that was used in the movie Swordfish actually exists? My guess is that it falls into the $10k range, but Im curious. I havent found anything like it out there. |
| Mon 03 Mar | flamebait sr. | Well, you could always go to the local community college and learn metalworking and woodworking and do it yourself.
Often that is the best route.
Otherwise, you should consider purchasing modular office furnature so that you can have more options than the home office sets that you often see. And a little woodworking here might make it more usable. |
| Mon 03 Mar | Bruce Perry | check out
www.anthro.com
They have good modular stuff. I use one of their desks. You'll probably have to go more toward $800-$1000. They won't have enclosed drawers or shelves though. |
| Mon 03 Mar | B# | Check out the
'Fog Console'
www.anthro.com/_Fs/FS_CnslStn_David.asp
|
| Mon 03 Mar | Ed the Millwright | A hollow core door and two sawhorses. |
| Mon 03 Mar | Jeremy | Find a place that sells second hand, solid core, flat wood doors. I paid about $40 for mine. There was a small scratch on mine that became the bottom of the desk. Pickup a can of clear coat and apply a few layers until it's nice and shiny.
Then, go to Ikea and buy two sets of desk legs for about $25 each. They come in packs for four, but with three monitors you probably want to put a couple of legs in the middle-back to support the extra load. While you're at Ikea, pick up a set of desk drawers on wheels. It fits neatly under the desk. You can also find metal guides for all the wire. Finally, pick your favorite keyboard tray and mount it under the desk. If you spend more the $400, I'd be surprised.
If cost is an issue, this produces a big sturdy desk for little money. With thecash you save on the desk, buy a comfortable chair... you'll thank yourself later! |
| Mon 03 Mar | Mike Swieton | I have to suggest you think hard before going to Ikea. They sell things cheaply, and they do the job, but they are not the most durable furniture. I use it, but the particular desk I got was designed to be assembled once and only once: the joints were not designed to be disassebled: in this one desk it's all cheap plastic that gets screwed into. This desk isn't ever going to get out of this room.
They have fine products, but... They aren't masterpieces you'll own for life. Of course, they're dirt cheap too. But you'll get more life out of a couple of 2x4's and a door. |
| Mon 03 Mar | Marc | Anthro.com has some very nice stuff, but it sure is up there in price.
I'm currently using the 'door and stilts' approach. But this isn't exactly visually stunning. When hosting a client or vendor in my office, it looks very unprofessional.
I might have to just suck it up and go with Anthro. But geez, 5k for a desk seems a bit extreme. :) |
| Mon 03 Mar | Philip Janus | I have two folding tables - one 8' and one 6', angled into each other. It's the 'door and stilts' idea but gives you the deep corner for a big monitor. Then you can put your satellite monitors on either side.
Only downside is that the standard folding table is only 30' deep. I'd love to get a 36' deep desk.
I'll probably go with a custom solid wood desk once I win the lottery.
Philo |
| Mon 03 Mar | Philip Janus | 'Check out the
'Fog Console'
www.anthro.com/_Fs/FS_CnslStn_David.asp'
Where on that do you put the three open books + client documents?
Philo |
| Mon 03 Mar | RH | I prefer a table to a desk. I find it easier to get a table at a comfortable height for a keyboard - desks are less likely to be available in different heights. Also I like the freedom a table gives my legs, not confined to a cubby hole. And a table leaves more room on the floor for a UPS, or subwoofer, or even a computer.
I can't stand keyboard trays that attach under a table and slide or swing out. I've never seen one solid enough to really use, and they never seem to work with mice well.
I also can't stand any sort of structure mounted on the table top. They are restrictive without being useful, in my experiece. And ANY sort of box to hold the computer (or printer, or scanner....) is just making extra work and (perhaps) trapping heat.
When I can have a wall behind the table, as a backdrop to the monitor, I really like to have >sturdy< shelves - more like a wall mounted book case - on the wall above the monitor. Spacing the bottom shelf for CDs, and the upper ones for books works for me. |
| Mon 03 Mar | rjm@rdmitchell.com | I agree with the poster above... modular office furniture is the way to go. I went with the Bush Advantage series from http://www.everythingofficefurniture.com/adser.html. (You can also find a limited selection at Staples.) The corner desk easily fits 2 19' monitors. I got two additional side tables and a filing cabinet. The furniture should rearrange to fit any room in the event that I move to a new location. |
| Mon 03 Mar | B# | 'Where on that do you put the three open books + client documents?'
Philo
On the monitor (usually two deep), on my lap, under my coffee, on the pile beside my chair, anywhere that isn't currently wet or at least only slightly damp and anywhere else I ...
I am not overly enamoured with it, I just thought a 'FOG Console' was amusing!
My Bad |
| Mon 03 Mar | flamebait sr. | Actually, Office Advantage is what I use, also. ;) |
| Mon 03 Mar | Robin Debreuil | You should take a look at City Desk - it only about $80 and designed by programmers.
http://www.fogcreek.com/CityDesk/index.html |
| Mon 03 Mar | Ian Stallings | RH: I also prefer a table to a desk. I can't say how many times I have banged my knees against a stupid keyboard tray that is 12 inches too low or a drawer that simply holds pens. |
| Mon 03 Mar | Ian Stallings | Oh, one more thing: I will never buy another item from ikea again. I have bought a few items, that were all basically crap that fell apart, but the one that stands out as the big piece o' crap was the attractive coffe table I bought. I bet they thought they were really clever when they used their special 'connectors' instead of using a plain old wood screw. They table simply could not stand up well and swayed from side to side when I put anything on it. I ended up having a friend that builds furniture make it stronger using wood screws and a few braces. |
| Mon 03 Mar | Alberto | Mike Swieton above say...
'This desk isn't ever going to get out of this room'
I had exactly the same problem once with a really good desk that I bought from Ikea about 10 years ago, I ended up taking a buzz saw to it as I was moving out and the landlords wanted it gone. |
| Mon 03 Mar | flamebait sr. | Ikea has no choice with respect to their connectors. Screws and nails don't hold very well in manufactured wood (i.e. laminated particle board and/or strand board). I bet you'd improve structural stability if you put some dabs of glue where needed and most especially inside the dowel holes. Ian's friend who does woodworking uses real wood, which doesn't have that problem.
Other advantage of Office Advantage stuff -- you don't need a drawer (keyboard or otherwise) underneath your work area. I hate keyboard trays and drawers. Given my proportions, the keyboard needs to be at desk-height anyway. |
| Mon 03 Mar | Punter | I was in this position a while ago - and I needed a desk that could handle 21' CRTs...
Try staples - they have some sturdy desks for a few hundred. I also got a very nice leather swivel managers chair for $80 (!) |
| Mon 03 Mar | Bored Bystander | Third vote for Bush Office Advantage (this is starting to sound like an infomercial!)
I have the corner desk, two straight 48' tables, and a hutch on one of the straight tables. The corner desk is nice and BIG. Each table was about $150-$200 from Office Depot which delivers for free. All desk and table modules have a plastic channel along the inside of the back panel for wires.
This stuff looks very good in a home office. I like Bush's quality, pretty good for particle board stuff. The table and desk edges are finished with a nice thick plastic trim piece to protect the edge of the table from delaminating from constant use.
On the other hand, if I had it to do over again, I *might* go the solid core door route. |
| Mon 03 Mar | anonymous | I would recommend taking a look at the Hon 38000 series. You should be able to get a 72' x 36' (surface space) steel and wood desk for under $400 from a local office furniture supplier. I have one with the metal hutch (another couple hundred dollars I believe) and it works very well for me. The only problem with it is size. If you are going to buy one for home like I did, you may have problems fitting it through doorways. |
| Mon 03 Mar | mackinac | The best arrangement that any of my employers have provided is a standard office desk, the 40 year old design, plus a separate computer table. I arrange them in an L. I haven't seen anything that really works better. But it is only good for one monitor.
The antro stuff, especially the Fog Console, looks pretty awful. It makes a nice picture, but I won't want to work at one. The Bush Furniture doesn't look too good either, but it might be possible to put together something useful. Anything that looks modular reminds me of cubicles.
For my next home office desk I am considering something custom built at a place lik |