last updated:06 Aug 2003 14:30 UK time
|
 |
|
(Comments added for week ending Sun 01 Jun 2003) | View Other Weeks
|
|
| hackers and painters | Sun 01 Jun | Nikto |
| This article seems to have a lot of smart things to say about what software development is and isnt. Its maybe a little anti-math for my taste but lots of stuff in it resonated for me.
http://www.paulgraham.com/hp.html
Just like there is a difference between painting a house and painting a landscape, there is a difference between hacking (in the positive sense of the word) and typing in code.
Sorry if this is a dup. I did try searching... |
| Sun 01 Jun | Ran Whittle | His arguments about the 'Day job' were interesting. We had a discussion a few weeks ago about the wrongness of open source developers 'cleaning up code' that was not broken, simply to make it more elegant. His views in favor of pure hacking state the other side of that argument.
To me, the programming field is a lot like architecture, with room for many different levels of idealism, artistry, and pragmatism. The vast majority of architects build houses that are essentially large boxes with doors and windows and work well within the boundaries of established practice, but there is still room for idealism, with some architects even building their reputation solely on sketching buildings that no one would ever consider building. |
| Sun 01 Jun | victim, jr. | I heard this on another thread. Something about should painters 'pair paint'. I thought it was interesting. house painters should probably pair paint. Artists, not so much. |
| Sun 01 Jun | Just some dude | It was actually:
'should ARTISTS pair paint?',
not
'should PAINTERS pair paint?' |
|
| How much a programmer know? | Sun 01 Jun | Artist |
| Well, while the alternative solutions are easily avaialble, the programmer tries to put his week-end hours to fit the missing part of the puzzle in the project.. (Custom control objects). Too much time spent in coding and not looking alternative just beccause programmer has the knowledge for the coding and he want to hack it.
Is it waste of managements and programmers time and efficiency? What is the solution. Should programmers be trained in general to see what the market offers which can aid the management or is this something done by management already before giving job to programmer?
This matters especially for the person with combined duties of analyst , developer,programmer etc.. |
| Sun 01 Jun | Brian R. | My own feeling is this: Give the programmer a credit card to buy those tools with, and shut your pie hole.
Or.
Get out of business, if you can't let the programmer do it him/herself. |
| Sun 01 Jun | Daniel Shchyokin | This is the difference between experienced and inexperienced programmers inexperienced ones always think everything but their code is a cheap hack |
| Sun 01 Jun | John Romab | I manage a team of programmers, and I'm a programmer myself (and also the owner of the company :)).
When I start a project, I first write a specification.
During the research for this specification, I also spend significant time to see what libraries / components / controls exist which can help us cut development time.
Sometimes I test the components I find, sometimes I don't and leave the testing to the programmers.
So, my specifications already contains things like: for this part, use this component.
We always use the components first (trial versions), and only if the component is actually good and works well in our project, we buy it.
I have also used pirated versions of components for testing, but we ALWAYS buy the one we use.
The point is: a component may seem excellent on the web site of it's creators, but when you actually use it, you can discover that it's unusable for the current project. |
|
| Annoying Msn Messenger Spam | Sun 01 Jun | Annoyed Nader |
| As if email was not enough for the spammers, now these wackos have taken up arms against msn instant messenger services. The rate Im getting porn style msn messages is alarming. Not even the days of icq were this bad.
Ive come across this site www.stopmessengerspam.com
where it gives you guidelines to stop it, but its not so effective. Ive downloaded their freeware program, but it wont work if your using trillian (which is a multi-messaging service that incorporates msn, icq, yahoo messenger etc). I havnt actually tried it against msn itself.
This is so annoying, as I know many people who experience the same problem but feel powerless to stop it. And whats worse, one of these freaking messages popped up during a colleagues presentation to a group of clients. Even the timing of them is annoying. Any suggestions from anybody that could block them via change of systems settings without needing third party software?. And shutting off msn is not an option :) |
| Sun 01 Jun | | I have found that enabling a fire wall stops them. |
| Sun 01 Jun | Snacky | But really an efficients firewell has got to be at MSN ends.
Why Microsoft is not doing anything against this spamming on MSN |
| Sun 01 Jun | Duncan Smart | 'I've come across this site www.stopmessengerspam.com
where it gives you guidelines to stop it, but its not so effective.' -- Because this site is talking about messages to the Messenger Service which is the thing that print servers use to tell you that your print job is done (well, they used to under NT4 anyway). The messenger service and MSN Messenger are entirely different things -- which one are you talking about? |
| Sun 01 Jun | Prasenjeet Dutta | (NT's) Messenger Service spam or MSN Messenger spam?
Eliminating MSN Messenger spam is easy enough: Open MSN Messenger, Tools | Options | Privacy tab: block all those not in your contact list.
Blocking NT's messenger service spam: either use a firewall, or stop the messenger service (on most home PCs you don't need it anyway). |
| Sun 01 Jun | Annoyed Nader | hhhmm, maybe i misunderstood the site. Ok, I was refering to ms messenger, and I've now selected 'block all other users',,,just hope this works now |
|
| Memory Management Question | Sun 01 Jun | cocoa developer for mac |
| What are the pros and cons of Garbage Collector kind of mechanism like in java and the explicit memory management by programmer as in C,C++ and in many other languages? Are there any languages other than java which have some type of Garbage Collector kind of mechanism?.
My case is ,
Having worked in java for 1.5 years, Currently, I use a language called Objective-C(which is a super set of C and has its roots in SmallTalk) which uses reference counting mechanism for memory management. For beginners, its memory management is not so simple to understand, especially for those from java experience and never used C or C++ before.
Is memory management really so hard or is it just because of my java background? Just interested to know ur experiences with the memory management in C or C++ or any other language in the beginning. |
| Sun 01 Jun | Evgeny Goldin | Other languages with GC coming to mind: Perl (ref. counting), Lisp, Smalltalk.
In short - advantages of GC is easier and more high-level development. Disadvantages - loss of control and care about memory management.
For example, tuning Java applications I usually find that the reaon #1 to bad performnace is lot's of temporal objects and, therefore, GC sessions. |
| Sun 01 Jun | Mike Swieton | Is it hard? No, not really: you create objects and then you free them.
But, you have to remember to do that for *every single byte of memory you allocate*. That's what's hard.
It's mostly a matter of defining a APIs in your application where it's clear who's responsibility it is to deallocate memory (You should make interfaces that are hard to misuse...). And that is hard to do.
I write some stuff in Java and some in C/C++ and friends. In my C apps I've taken to wrapping malloc() and free() with the following:
- the wrappers optionally write to a file detailing every allocation and deallocation, so that a perl script can go through and match them up and ensure that there are none left over.
- Place a couple bytes before and after the allocated memory, to detect overruns and such. Thanks to D. Richard Hipp for both of these ideas!
- my free() takes a pointer to a pointer to memory, so it can set it to null.
Now much of what the above does can be done by tools, like valgrind, which I also make regular use of. However, valgrind is *slow*, and my code is fast 8-}
And with all these tools and a little paranoia with me, I can manage to avoid memory leaks relatively successfully (You can never be *sure*, but I'm pretty close). So no, it's not hard, but it's tedious: you must be careful and have an attention to detail. |
| Sun 01 Jun | Oren Miller | I find GC to be tougher to use in any system that requires consistent performance. Not FAST, but consistant. Where long bursts of speed followed by occasional slowdowns are not acceptable. There are of course incremental GC's, which can help, but I havn't gotten the same conistency of performance that C++ gives. Many people building real-time systems using java turn to object pools, but then you need to ask the pool for an object, then return it later. This is no different than having to do new/delete.
I do have to say that I believe resource management in C++ is actually easier and more straigtforward. I say this because I find the GC in java to be rather assymetrical. Sure, it will automatically deallocate memory, but what about other resources? Files, for instance, have to be manually closed when you are done with them, (generally by using a finally construct), creating a similar nuisance than deleting memory manually has. With the constructor/destructor paradigm, any resource can be automatically allocated and deallocated in a predicatable manner.
Bjarne calls this Resource Allocation as Initialization, you can read more about it here: http://www.research.att.com/~bs/bs_faq2.html#finally
I also believe allocation using new in C++ (which must at some point be followed by a delete), is often preoptimization. Allocating on the stack and copying objects, if they are small, can actually be faster. The reason is that new requires a system call to allocate memory on the heap, wheras otherwise you can allocate on the stack which is much speedier.
Otherwise you can take advantage of the Resource Allocation is Initialization technique by using autopointers, which gives you automatic cleanup of memory at a predictable time. Some overhead is introduced, but the overhead is consistent.
All this being said, for sitting down and pumping out code quickly, I find that the GC is a very good thing. It does not entirely get rid of memory leaks in actuallity, because a referenced piece of memory that you forget about isn't going anywhere. But it is one less thing (very commonly used thing), to worry about. Memory allocation on the heap in java is one thing where it soundly outperforms C++ (since java preallocates a large chunk of memory). To do this in C++ you would have to write a custom memory allocator, which most people will not want to do. |
| Sun 01 Jun | Mike Swieton | Oren:
On the note that it's hard to preallocate a large chunk of memory in C++:
Under Linux, at least, the man page for the sbrk library call appears to do just that: 'sbrk increments the program's data space by increment bytes.'
I've not used or tested it, but it seems to me that it should do just that, without needing a custom allocator, from the short description. Unless malloc() usually caches things stupidly? |
| Sun 01 Jun | Oren Miller | Mike,
Well I don't think it is a matter of anything being cached stupidly. I'm sure that the process has a certain amount of memory allocated to it, this is not the problem. The problem is that malloc needs to make a system call to the OS granting it usage of a piece of memory, and another system call to give it back. This is where I believe the slowdown is. I wrote a little test to demonstrate this to myself (under linux) with the following structure:
struct integers
{
integers
( int value1, int value2, int value3, int value4, int value5 )
: m_value1(value1), m_value2(value2), m_value3(value3),
m_value4(value4), m_value5(value5) {}
~integers()
{ m_value1 = m_value2 = m_value3 = m_value4 = m_value5 = 0; }
int m_value1, m_value2, m_value3, m_value4, m_value5;
};
So it consists of 5 integers. I put different numbers into the constructor each time (based on the counter with a constant time operation) and turned off all optimizations to ensure no funny compiler magic.
I allocated the object 10,000,000 times on the stack, allowing scope resolution to clear up the object, and 10,000,000 on the heap, followed by a call to delete.
While the stack test took 0.287 seconds to complete, the heap test took 4.016 seconds, some 14 times slower.
In order to even up the score, I modified the stack test, so that it would make copies of the allocated object. I found that I needed to make 65 copies of each static object allocated (that's 65,000,000 copies) before the test took 4 seconds.
Let me know if you see something I don't, but these results are consistent with what I have seen in the past. I believe it because of the number of system calls, but if anyone knows another reasons I'd like to know. In any case, this is why I consider heap allocation to be a preoptimization. As you can see in this case, I'd have to make 65 copies of this object before heap allocation starts to make sense. |
| Sun 01 Jun | Christopher Wells | In theory it's simple... everything you allocate must eventually: be deallocated; not deallocated more than once; and not be referenced after it's been deallocated. C++ artefacts such as destructors and smart pointers make it easier to do this consistently in C++ than in C.
The big problem IMO is that if a deallocation bug DOES get through your QC and into your large program, it's difficult to pintpoint where the bug is: a deallocation problem in one part of program causes random wierdness and crashing in other parts of your program when they reference the corrupted heap. This problem is compounded if the nature of your program makes it impossible to use an instrumentation program such as BoundsChecker to identify deallocation bugs (for example, in our case running BoundsChecker made the program fail because it made it run too slowly to drive its real-time external devices). I ended up writing code to hook and instrument the heap... I can sympathise with the notion that heap management is better built into the framework than left to the programmer. |
| Sun 01 Jun | WildTiger | Note also that initial question was GC with Ref-counting, rather then GC with new/delete/malloc/free thing.
In Windows world GC is also in C#.
I'm not aware of any language that uses ref-counting directly for memory management. Ref-counitng is used in COM(ActiveX) for contolling object's lifetime.
I would say ref-counting is more predictable than GC. Memory could be freed as soon as you don't need it depending on runtime support. Note that any of this methods can be done bad. I.e. you are not caching memory you've just deallocated and releasing it to the system or allocating each piece through system allocator that could work for only fixed size allocations like 4K minimum. |
| Sun 01 Jun | Brad Wilson (dotnetguy.techieswithcats.com) | 'I allocated the object 10,000,000 times on the stack, allowing scope resolution to clear up the object, and 10,000,000 on the heap, followed by a call to delete.'
Please clarify: did you 'allocate then delete' 10mil times, or did you allocate 10mil items, and then delete them?
See, when you stack 'allocate' an object, a traditional memory allocation isn't required. If the object is 20 bytes (like your example, assuming 4-byte ints), then it simply adjusts the stack pointer by 20, and voila, instant object. A 'new', on the other hand, has to go to the heap, find an appropriate block of memory, and remove it from the free-list. That's a LOT more work (yes, 14x as much work would be a good guess, actually). |
| Sun 01 Jun | Brad Wilson (dotnetguy.techieswithcats.com) | 'I would say ref-counting is more predictable than GC. Memory could be freed as soon as you don't need it depending on runtime support.'
Agreed, ref-counting is more predictable ('deterministic', as long as we aren't talking about real-time requirements). It also cannot solve the circular reference issue very easily, which is a source of a lot of frustration and bugs when people use COM. |
|
| What do you tell them? | Sun 01 Jun | Here Th. Ere (e-Very where) |
| Heres a quote of another thread:
> Ive had some very frustrating moments as a manager
> where guys have spent entire weekends coding things
> like custom date-entry controls on projects that already
> had some schedule slip. What do you tell a guy who
> enthusiatically spends heaps of his own free time on
> something you view not only as useless but actually
> detrimental to a project?
Yes, indeed, what do YOU tell them? |
| Sun 01 Jun | Daniel Shchyokin | How about:
thank you for looking past the crushing incompetance of management, and taking your precious time to come in on a weekend |
| Sun 01 Jun | www.marktaw.com | You try to get them on the same page as you as quickly as possible.
If you're the manager, then it's your responsibility to ensure they understand the end goal, and the current state, any obvious obstacles they may encounter, and so on. Once everyone knows where you need to go, when, and what problems you face, I think you'll find that people will tend to start organizing themselves.
Sure you'll get a guy who's overly obsessed with figuring out which minivan to rent from time to time, but most of the time I think you'll find that everyone else chips in and does what needs to be done to get to your destination on time.
And for the guy who is still focusing on the wrong thing, then you just need to communicate even stronger the need to take into account the whole picture when he works rather than focusing in on one thing.
Considerations in Communicating Intent
1. The purpose of the task (the higher level goals).
2. The objective of the task (an image of the desired outcome).
3. The sequence of steps in the plan.
4. The rationale for the plan.
5. The key decisions that may have to be made.
6. Antigoals (unwanted outcomes).
7. Constraints and other considerations.
(Klien 1994)
My own version is that you need to communicate:
1. The desired outcome
2. The current state
3. How you plan on getting there
4. Any considerations
5. The why for any of the above
(Wieczorek 2003)
Commanders Intent Statement
Here's what I think we face.
Here's what I think we should do.
Here's why.
Here's what we should keep our eye on.
Now, talk to me.
(Weick 1983) |
| Sun 01 Jun | Sergio | If it is the programmer's own free time, I don't see why you should care about.
I understand that if the programmer has failed to follow the schedule it's his responsability to do whatever he can to meet the deadline. If he does't finish his work on time, there is no relevance on the fact that he spent the weekend programming useless stuff, he might've spent it at the movies and it would not have been any different. It's up to him to decide how to spend his free time.
The problem is when he really thinks that he worked overtime and that he was getting work done. But I supose that if something like that happens, it is because the developer does not have detailed enough functional specification and project plan, and I would have to admit that it is my fault, as the manager, if my team members are working hard on irrelevant things.
The only difference between spending the weekend doing core functionality or spending the same weekenf doing some nice-to-have cool but useless stuff, is the lack of communication between the manager and his team.
So, I would have a meeting with all team members to assert what the top priorities are.
That is, supposing that the team cares about what the manager thinks. Otherways, you are in the hole. |
| Sun 01 Jun | somebody | Speaking from personal experience, it's quite likely that someone might enthusiastically embrace these side tasks and not the main project because they're genuinely interested in the side tasks and don't particularly care about the main project.
Here are some reasons why they might care more about the side task than the main project:
* They don't like their job.
* They don't respect their manager.
* They don't feel that they've been compensated fairly for hard work on past projects.
* 'Coded custom date-entry controls' looks better on a resume than 'Went down with a sinking ship'.
Something that's not clear is if the custom controls work was done completely on personal time. If so, I don't see what the gripe is, assuming the programmer is pulling their weight during normal work hours. If not, isn't it the job of the manager to direct the work of those they are managing? Hence the term 'manager'? |
| Sun 01 Jun | realist | Stupid situation.
Tell them that they are not getting paid for the useless work they just did.
Give them $50 to buy a calender control that does a 1000 times better job than the hack they put together on the weekend. |
| Sun 01 Jun | Must be a manager | What an extraordinary post!
Management has stuffed up the scheduling so much that the developers need to work in their own time.
Further, the developers seem to understand something the manager doesn't; that dates are tricky, vary in interpretation between countries and systems and are a common source of bugs. Accordingly, the developers are saving the manager's bacon by getting it right.
And, no, third party controls are often not a solution.
To the original manager, what you could say is: 'Thanks.' |
| Sun 01 Jun | Unfocused Focused | The part I don't understand about the original quote was about his work being detrimental. I mean, maybe if it's not tested or not solid code, but then if that's a problem, then you're going to have the same issues with whatever he writes.
Just interesting that extra work on a late project is deemed detrimental - even if it is for something that's not core. From my experience with projects, it's amazing what winds up being core when you finally get all of the users in front of the app (as oppsed to the 'Core group' that management puts together to approve specs/prototypes. These end up being the guys that the users want to get out of their hair so they can get real work done more often than not.) |
| Sun 01 Jun | Philo | If the project is being run correctly, then code outside spec is always detrimental, because there's more to it than just code - now the custom calendar control has to be tested, debugged, and documented. Based on McConnell's recommendations, the developer has spent 16 hours of his own time and cost you 16 hours of project time.
Things to tell him (in private):
1) Thank you for the work you've done. We do not have time to add it to the current project, but we'll keep it in source code control and look at it for a future release.
2) I hope you understand we cannot compensate you for the time you spent working on this, since it does not contribute towards your assigned tasks.
3) In the future, if you would like to work overtime, please talk to me in advance so we can ensure you are working on appropriately prioritized tasking.
I'm sure to some of you this sounds like managementspeak, but when you have a deadline, all development needs to be coordinated and managed; having a bunch of cowboy coders doing what they like doesn't help anyone.
BTW, who said the project was late because it was mismanaged? Maybe it was late because all the coders keep working on what they want to do instead of what they are assigned.
Philo |
| Sun 01 Jun | John McQuilling | I agree with Philo.
Generally if something is important to the project the programmer should let the manager know and if it is needed it will be added to the project or scheduled for a later release.
What a programmer does on his own time is his business but when he presents it to the manager as something to include in the project it can become a distraction to the project.
The manager now needs to decide whether it works, what affect it has on other components, what impact it has on documentation, how implementing it will affect the schedule, what impact not using it will have on the programmer's morale, what impact using it will have on other programmers (why are we changing working code to implement Charlie's silly control). Since the manager may not be able to do all of this himself he will have to pull in other project members to review the component. He will also have to explain to the users why the application has a new look when all they want is the project done.
Lets change the example a bit:
A user who knows the project schedule is behind requests a new date control like the one he just saw in a presentation. There is no business reason for the change but he would like it, but he cannot extend the due date or pay more for it. And he has not talked to the other users about this change. Assume the control is free so the development cost is nill do you want to make this change? |
|
| A new web broswer | Sun 01 Jun | S.C. |
| After reading Joels new article, I am quite interested in this Mozilla browser. Can you share your experience if you have tried it? Do you recommend it to the average users?
I might suggest installing it on my clients machines if your opinions are positive.
And, I know its cool but if the average users wont switch to it, Microsoft wont have to worry updating IE for maybe another 5 years. |
| Sun 01 Jun | Greg | Try it out... You don't need to go through an install procedure; it can be run from an unzipped folder. Remember, get the one called 'Firebird,' which is currently a branch which will become the main official Moz release after the next point version.
The one bug that bit me is with many tabs and instances open, that it refuses to look at sites it hasn't visited in the current session; I do not know if it has been fixed for Moz RC1. Other than that, I think it is a very good product.
When you test it, remember to think about flash, pdf, and other plugins. For accessibility, you can use larger toolbar icons, remove some, etc... |
| Sun 01 Jun | John Rosenberg | Worth the download. Very neat. |
| Sun 01 Jun | Matthew Lock | type-ahead-find is darn cool too |
| Sun 01 Jun | Here Th. Ere (e-Very where) | I just downloaded Firework and I like it. But I have also a question. The shortcut for incremental search is '/' and this looks like the developer had vi in mind, when (s)he built that feature. Now, as a vi addict, I'd like to have more vi shortcuts, especially j and k in order to navigate up and down. Does someone know if this can be made, possibly by means of an exctension. |
| Sun 01 Jun | somebody | The search field in the toolbar is great (though the Google toolbar for IE has the highlighter feature which is close enough). I also like the popup eater and the tabs could be useful in some situations.
It's fast but, in my short time playing with it, not particularly faster or slower than IE.
One major annoyance is that hover scroll (middle mouse click) doesn't work. I use this constantly and consider it a deal breaker.
The non-standard UI controls, in general, are annoying. Thankfully, they at least tried to mimic the real Windows controls but missed the mark on a few points. I realize they probably roll their own for portability but given the very limited amount of work that needs to be done for the browser frame, is it really necessary? Do they gain that much to justify sacrificing usability for the end user who is used to controls working like they do in 99% of other apps?
To summarize, I'm not seeing anything that makes me want to use it over IE. The nifty little additional features (search field, popup eater, tabs) are minor points and can be added to IE with plug-ins. The annoyances (particularly hover scroll not working) will keep me from evaluating it further. |
| Sun 01 Jun | www.marktaw.com | > It's fast but, in my short time playing with it, not
> particularly faster or slower than IE.
That's good enough for me. IE is part and parcel of Windows and if it's as fast as IE that's pretty good. Especially considering some of the earlier Mozilla's that took several minutes to load.
Opera has a Google / Other search engine search from the toolbar and a quick preference for things like popups and cookies. |
| Sun 01 Jun | Walter Rumsby | What Mozilla has that I like:
* Tabbed browsing - I hate having 5 IE windows in my task bar (and I always have about 5 browser windows open).
* The good old JavaScript console (which has always been more informative than IE's script error messages) and extra nice DOM/JavaScript tools in the Script Debugger (better than MS Script Debugger and/or VS.NET's offer) and the DOM inspector.
* Better CSS support. (The FONT tag MUST die!)
* Sometimes it's still a bit more stingey than IE in terms of rendering things which can indicate you need to fix your web page's DOCTYPE or perhaps add a MIME type to a (servlet container) web.xml file.
You can/could get a theme that made Mozilla look like IE (pretty much) too. Although it doesn't have those nice rounded buttons like IE on WinXP (then again, I loaded XP on my home machine for the first time in ages and was reminded of the rounded buttons, so they're certainly no show-stopper must have for me).
I've been using Mozilla pretty much since 1.0 came out and most of the time (both at work and home) it's my browser of choice. Even now, working on a project targetted for IE5+ users I sometimes hop over to Mozilla to check out script errors and because I can have 3 or 4 tabs with stuff like JavaDoc for the SDK, perhaps a copy of Thinking In Java, Google, etc which are useful to have and easy to switch between. |
| Sun 01 Jun | Brad Wilson (dotnetguy.techieswithcats.com) | When you install and use the Luna theme on Mozilla Firebird, it will use the native control widgets (both in the dialogs of the app and in the web pages).
Of course, a page can override and ask for the old widgets with a META tag. The Luna theme even respects this IE-ism and uses the older widgets when requested. |
| Sun 01 Jun | Nat Ersoz | As a bonus, I've been using the Mozilla email client for about 3 weeks now. The spam filtering capabilities are:
. Still in its infancy
. Fully functional
. A thing of beauty
What a marvelous thing to watch mail from 'urgent assistance' get marked as spam and dumped when I check my mail in the morning. Other things, like 'I'm out of office...' (who cares?) get dumped as well.
I used to bemoan 'why are they wasting their time on email when their browser is such a pile...' Now, I'm glad they did. |
| Sun 01 Jun | Dewd | Mozilla has been my browser since its 0.6 or about versions.
And Phoenix (now called MozillaFirebird) has been my Mozilla flavour since I met it on its 0.5 days.
I recommend it to anyone. Just keep IE around for the broken sites that support only it.
This isn't intended as a troll or anything like that.
Respect my opnion, please.
Cheers |
| Sun 01 Jun | Stephen Jones | Is it worth my while uninstalling Netscape? I only use it for browsing. I have Outlook for mail.
Is it worth downloading the latest Linux version? The version I have at the moment came with Mandrake 9.0
I only have a dialup and pay $1 an hour so I'd appreciate your opinions |
| Sun 01 Jun | Dewd | You don't need to uninstall previous browser versions.
MozillaFirebird can be installed in any directory.
It is worth the small downloads:
Less than 7 MBs:
http://ftp.mozilla.org/pub/firebird/releases/0.6/MozillaFirebird-0.6-win32.zip
Less than 10 MBs:
http://ftp.mozilla.org/pub/firebird/releases/0.6/MozillaFirebird-0.6-i686-pc-linux-gnu.tar.gz
Cheers |
| Sun 01 Jun | Prasenjeet Dutta | I've been using Firebird since v0.5 and I've been using Firebird 0.6 of late -- my two bits: yes, the HTML and CSS support is very good, but there are weaknesses in the UI:
1) The history pane has a nasty habit of 'forgetting' what view you were in.
2) Bookmark management is still flaky
3) XSL still sucks, but this is a Mozilla Transformiix problem, Firebird doesn't have much to do with it.
Other than that, Firebird is really good. My personal favorite new feature is that you can now Ctrl-Shift-Left arrow through the URL in the status bar, just like IE.
I'm looking forward to new releases of this baby.
And oh, I do think everyone is reading a bit too much into 'no new standalone' versions of IE. All this would mean is that Win9x users are out in the cold -- users of Windows 2000 and up will continue to get IE updates through Windows Update. |
| Sun 01 Jun | Javier Jarava | Myself, I've been using Mozilla on Windows a my main browser for ... well, since 1.2 or so.
I still keep IE around, but am happy to report that nowadays 99+% of my browsing is done with Mozilla (as a matter of fact, the only site I surf to with IE is my bank, where Mozilla won't let me log in :( ). If ti wasn't for 'Website Watcher', that uses the embedded IE control, I wouldn't be seeing any IE-rendered page most days ;)
Not only that, where I was a 100% OExpress user for mail, since Mozilla 1.3 and their Junk Mail controls (and much improved IMAP handling), I'm using it more and more as my main email sw(at work, I use it for 98% of my email; only use OE to check my hotmail accounts ;). If the trends continues, I'd say I'll be IE-free in a couple of months :)
It's selling points for me?
- Browser: Tabbed browsing, Password Manager, Multizilla add-on (http://multizilla.mozdev.org).
- Mail: Junk Mail Conotrols. For me, the 'Killer feature'.
Am downloading Firebird to have a look at it now ;) |
| Sun 01 Jun | Duncan Smart | 'SomeBody' said:
'One major annoyance is that hover scroll (middle mouse click) doesn't work. I use this constantly and consider it a deal breaker.'
Check out http://autoscroll.mozdev.org/ -- maybe one day it'll be integrated. |
| Sun 01 Jun | Christopher Wells | Here's one negative review: someone said that if you go to http://www.madrid.org/sanidad/home.htm using IE then you see a frame on the left with running text, the first item being 'Tarjeta TIERI'. Mozilla doesn't show that text. The problem is the Web site's using things that only work with MSIE. |
| Sun 01 Jun | Pete Something | I've been using Mozilla for a few months and have found that tabbed browsing is brilliant.
The other really great feature is gesture recognition. This was pilfered from Opera.
Once you get used to gestures and tabs there is no going back.
The one thing I've seen that I want to add is Safari/Kamino's load all links from a bookmark area.
Mozilla shows why monopolies are bad. Once you have one there is no incentive to improve the product. |
| Sun 01 Jun | opera freak | Opera is still the best. |
| Sun 01 Jun | Stephen Jones | The page is a vile example of overdesign. It has a total of 71 (yes, SEVENTY-ONE) image files; all the text is in fact image.
Perhaps they want to drum up customers for the hospitals; if you're not ill before you see the site you will be afterwards.
The whole thing runs on javascript. And badly even in IE, the mouse over effects are caused by changing from one image file to another (Netscape doesn't show the second one) and there is often a five second gap between the mouse going to the 'text' and the second animation showing.
Funnily enough I clicked on one of the link pages and found it was written in Front Page 4.0 but the animation (as neat cool and nstantaneous as it was completely pointless) worked perfectly in Netscape.
Incidentally the main problem with using images for text is that they cannot be resized at all. For a site that is supposed to be the link to public health services this is a real no-no. If the web site was a building the Madrid Community would have to close it down because it would break their bye laws about disabled access.
Still, they've just had the elections a few days ago so there is little that can be done, except to say that the Communidad Autóma de Madrid has lived up to its reputation of being all show and no content. |
| Sun 01 Jun | olsson | I would have used Firebird as my default browser, if it wasn't for MyIE2 that is!
It's the IE engine embedded with all the features you will ever need. Popup killer, ad killer, tabbed browsing, extremely configurable, uses less memory than Firebird, more languages available, plugin support... I could go on, but just try it instead (did I say it was free?)
http://www.myie2.com |
| Sun 01 Jun | Jan Derk | Two more recommendations for add-ons:
1) Checky
This is a great time saver for anyone creating web pages. It allows you to check HTML, CSS, etc of the current web page using online validators like http://validator.w3.org from the right click context menu.
http://checky.mozdev.org/
2) Gestures
Personally, I use the middle mouse button to activate them. Mouse trails are nice too for a bit more feedback.
http://optimoz.mozdev.org/gestures/index.html |
| Sun 01 Jun | Another Opera Freak | Like 'opera freak' wrote, Opera in still the best, it has all the above mentioned features, including but not limited to:
* Easy switch from IE to Opera (auto import of favorites)
* Intergrated email client
* Intergrated news client
* Alt-D/Ctrl-Enter feature built it
* Google (and other engines) search built in (just type g word to search Google for 'word')
* Automatic 'Next' finder (hit space to go to next page!)
* Mouse gestures (beware, they look inocent, but they are addictive!)
* Fast as a jet
* Support for Mouse wheel
* Standard GUI - not XUL (mozilla) mimics
* Popup stopper (with different options)
* Tabbed browsing
* Better CSS support
* Great bookmark managment
* Great cookie managment
* 'Delete Private Data' button
* |
| Sun 01 Jun | www.marktaw.com | So it should really be Opera v. Mozilla which is better...
Which is the most popular browser?
http://www.google.com/press/zeitgeist.html
Looks like *everything* is being beaten out by IE6. |
| Sun 01 Jun | www.marktaw.com | That should read:
So it should really be Opera v. Mozilla: which is better... |
| Sun 01 Jun | Daniel Schwartz-Narbonne | I don't know about other people, but I run opera to identify as IE. I've found that if I don't do this, a lot of sites dont work right, cause they don't know that don't detect browser features, only the browser name. |
| Sun 01 Jun | Darth Bladder | Here are my choices:
Very good tabbed browsers based on IE:
NetCaptor http://www.netcaptor.com/
MyIE2 http://www.myIE2.com/
Very good e-mail client:
The Bat! http://www.ritlabs.com/
Very good program to download whole web sites:
Metaproducts Offline Explorer http://www.metaproducts.com/
Very good download manager:
FlashGet http://www.flashget.com/
Very good file manager (Norton Commander-style):
Total Commander http://www.totalcommander.com/ |
| Sun 01 Jun | somebody | Thanks for the tips on some of the issues I cited. The Luna theme does help it feel more native (even if you don't have XP themes enabled). It's still not perfect -- the menus didn't go fully native (annoying because they have a tendency to not go away) and still no gripper on the scrollbar for resizing the window.
The autoscroll extension is perfect. I really like that it's so straightforward to find and install extensions and themes.
One nice feature I discovered while playing with autoscroll is that middle-clicking opens links in a new tab (I'm assuming this is independent from autoscroll).
Another nice feature is that the context menu for bookmark folders has an item to open every link in a new tab. I wrote my own app to do this for IE years ago. Very useful if you have a daily list of sites that you like to visit and want to go grab a cup of coffee while the main pages load (this was obviously more important in the days before ubiquitous broadband though it still helps to eliminate a few clicks).
How about the equivalent of IESpell? I don’t see anything in the extensions list. Firebird would become my default browser for forums if it had an integrated spellchecker.
Here’s another difference from IE behavior that I don’t like – opening a new window opens to the default page rather than the current page (including the current history). |
| Sun 01 Jun | Brad Wilson (dotnetguy.techieswithcats.com) | 'Here’s another difference from IE behavior that I don’t like – opening a new window opens to the default page rather than the current page.'
From the people I've talked to, it's about a 50/50 split on this one. I HATED that IE would try to open a window to the same URL (along with the associated issue of shared session state, which can really screw up some web apps). |
| Sun 01 Jun | Rhys Keepence | There is an IE Spell equivalent for Mozilla, which can be found somewhere on the MozDev site.
You can change the default page through Preferences. It allows you to set it to the home page, about:blank, or the current page. These can be set independently for new windows, new tabs and on startup. |
| Sun 01 Jun | somebody | Rhys, I know about that. I meant something different. To duplicate the behavior I'm talking about, do the following:
1. Open a new instance of the browser.
2. Navigate to joelonsoftware.com.
3. Click on the Joel on Software forum link.
4. Press Ctrl+N to open a new browser window.
In IE, this will bring up a new window that loads the Joel on Software forum. I can then click Back in the new window and go back to joelonsoftware.com. In Firebird, it brings up the default page (I currently have it set to blank).
The Firebird behavior isn't desirable for me since I primarily use Ctrl+N in order to branch off in my current browsing session and use the Quick Launch shortcut to open new blank instances. |
| Sun 01 Jun | Brad Wilson (dotnetguy.techieswithcats.com) | With tabbed browsing, why would you want to 'branch off' into a new window? I find myself using tabs constantly as a replacement for where I used to use new windows in IE. |
| Sun 01 Jun | www.marktaw.com | Opera has a 'duplicate window' function that does this nicely. |
| Sun 01 Jun | anon moz'er | Reasons keeping me from switching from Moz to Firebird:
- Moz mail starts up faster if I already have Moz open
- Favorite Firebird skin has sucky default XP scrollbars, instead of insanely great mile-wide Moz scrollbars. In other words, you have to move 1 pixel from edge of screen to grab the bar. This is important because I usually use a laptop without scrollwheel.
Still, Firebird is otherwise far better. Can't wait for it to be the official release. |
| Sun 01 Jun | somebody | Good point about using new tabs as a replacement for new windows. However, the same criticism applies. Firebird also opens new tabs as blank (using Ctrl+T).
I tend to use the IE style functionality as the backwards equivalent to opening a link in a new window or tab. I'll reach a point while navigating where I wish to go back but also to keep the current page open. Think of it as if the back button had a 'Open in new window' option on the context menu.
Maybe I'm just weird, but I do this a lot! |
|
| Access Database - Table/Record Locking with ADO | Sat 31 May | TR |
| Hi Everyone,
We have an MS-Access database that is accessed through the Jet 4.0 Engine and VB/ADO. There is a transaction table in the database (it is the only table in the database.. dont ask) It can be hit against from any one of 5 - 10 computer operators at the same time. These operators may add or delete transactions from the table. These transactions then get posted to the appropriate accounts at a time of the computer operators choosing.
At any rate, when two or more operators attempt to access the table at once the whole thing comes to a halt and VB throws an error. (Well the program doesnt stop due to error handling, but only the transaction of the first operator to get to the database is recorded and sometimes even stranger things happen...)
So what we did was, open the database/table adLockReadOnly and then catch the ADO error (which says cannot connect because the file is locked) and then we spin attempting to connect to the database again and again for a certain number of tries, if after this number of tries has expired we display a message to the user that they need to try submitting the transaction again and/or their network connection is down.
This whole process seems to work ok. It gets the job done, but it seems rather sloppy. We have tried numerous combinations of the connection flags and some dont even seem to be implemented.
I know Access is a file-shared database and I have read the MS Document on Jet Engine Record Locking, but that doesnt really help me figure out a better scheme of doing this. We have to use Access for this application as a server database is out of the question, not even MSDE.
So my question is, has anyone successfully implemented a clean table/record locking scheme using ADO or DAO and Access? If so how did you do it and could you point me in the right direction? |
| Sun 01 Jun | Duncan Smart | Jet (at least, the last time I looked) doesn't lock at the record level - it locks at the 2K page level. So adjacent records are likely to 'interfere' with one another in this way. So try padding the record out with a fixed length field so that the record is >1K -- therefore Jet won't store two records on the same page. |
| Sun 01 Jun | Stephen Jones | You set record level locking among the start up options.
To the best of my knowledge this came in with Access 2000. |
|
| Top 10 Indicators your home business is failing | Sat 31 May | Kent Design4Effect |
| #10 - The flies are chipping in to fix the screen door |
| Sat 31 May | www.marktaw.com | #9 you spend way too much time posting to the JOS forum |
| Sat 31 May | i-- | #8 - You don't have any customers? so you do #9 instead of aggressively marketing your services? |
| Sat 31 May | B# | #7 - You split the toilet paper into plys to create the illusion of success. |
| Sat 31 May | B# | #6 - You start referring to your kids as 'Interns' |
| Sat 31 May | www.marktaw.com | #5 - You're thinking of renting your 'office' to college kids for some extra income. |
| Sat 31 May | 54321 | #4 - Your website recieves no hits even though you advertise it. |
| Sat 31 May | Philo | #3 - The three dotcom failures sharing an apartment next door refer to you as 'the loser' |
| Sun 01 Jun | Brad Wilson (dotnetguy.techieswithcats.com) | #2 - your 'angel investment' meeting with the dogs doesn't yield the quarter million you were hoping to net |
| Sun 01 Jun | sedwo | And the #1 indicator that your home business is failing....
Joel calls you asking to cut back on your posting as its eating up his JOS bandwidth. |
| Sun 01 Jun | Nat Ersoz | I like it...
Honorable mention, you file a Google legal suit. |
| Sun 01 Jun | Michael Moser | #0 You bitch in JOS about how bad your boss is, how he is mistreating your... , but your Boss and You are the same person. |
| Sun 01 Jun | www.marktaw.com | #-1 - You're thinking of asking the three dotcom failures next door who refer to you as a loser for job leads. |
| Sun 01 Jun | oh_to_be_a_software_entrepreneur | #-2
Your ex gives up filing for child support.
#-3
You know exactly how long you can wait before paying the phone/tax/social security bill.
#-4
Your book club ceases sending monthly magazines as it's so long since you bought anything.
#-5
Small children laugh at you in the street and throw stones. |
| Sun 01 Jun | realist | You lose your home. |
| Sun 01 Jun | Stephen Jones | You have to get clearance from the antiquities department before you can ship any stock. |
| Sun 01 Jun | Prakash S | #1: You buy a one-way ticket to Bangalore |
| Sun 01 Jun | Daniel Shchyokin | You fire your intern kids hoping to replace them with cheaper ones in India |
| Sun 01 Jun | HeyMacarana | -10 You convert your machines' OSes from Windows to Linux hoping that the license cost savings will outweight the productivity decrease. |
| Sun 01 Jun | Stephen Jones | You keep getting emails from Bangalore enquiring if they can outsource to you to cut down on costs |
| Sun 01 Jun | Hardware Guy | You're no longer sure just how many 10 is. |
| Sun 01 Jun | www.marktaw.com | You've grown so fond of your Indian replacement kids that you're beginning to wish you didn't exile your original kids to Bangalore. |
|
| Paypal = good or bad? | Sat 31 May | To_Paypal_Or_Not_To_Paypal |
| What is everyones view of Paypal?
I was thinking of selling software from a website and Paypal ( http://www.paypal.com ) seemed a good way of accepting payment. Paypal take most credit cards and they validate the recipients address. I live in the UK, the goods would be sent by registered post and the value might be US$50 per transaction. I liked the idea of Paypal as its diifficult for sole traders to become visa merchants etc.
Then I googled to check the consensus on Paypal and found http://www.paypalsucks.com - full of gruesome stories.
Are Paypal basically OK? Has anyone else had good/bad experiences? Any comments welcome. |
| Sat 31 May | Patience | I have not had a problem with PayPal. I use it for buying MMORPG stuff. I think the problem with paypal is that it is a huge target. I have recieved a lot of e-mail scams which use them, but Paypal normally warns you about the scam and You really would have to be stupid to believe some of the stuff people send you.
Another opinion bites the dust. |
| Sat 31 May | To_Paypal_Or_Not_To_Paypal | I agree you would have to be a bit dopey to fall victim to the Paypal email scams (I mean the scams where you have to type your credit card details and password into a fake Paypal website).
I'm more concerned that on the paypalsucks site there were postings from sellers that had a good history, then had their accounts frozen because of a single customer paying with a stolen credit card. Also stories of people being left on hold for 20 minutes when phoning to fix the problem.
By the way what is MMORPG? |
| Sat 31 May | Philo | http://www.somethingawful.com/articles.php?a=216
A 'massively multiplayerly onlinely roleplayingly game'
Philo |
| Sat 31 May | Patience | Yup, I literally buy pixels on the screen. That's ok because then I can advance in level faster and become Uber! |
| Sat 31 May | Chi Lambda | If your customer doesn't have an account with PayPal before attempting to buy from you then this will lead to a temporary dead end. Why? Because it's not enough to simply fill in your name, address and credit card information. Once those are sumbitted, PayPal issues you an automatic Member Number which only becomes available to you in your next credit card statement. This could be almost a month away. (Residents of countries outside the USA may not always be able to check credit card statements online.) And until you come back to PayPal and confirm your Member Number with them you won't be able to make any purchases through PayPal. Which means the website that you wanted to support will have to wait, not minutes, not hours -- not even days but possibly weeks. |
| Sat 31 May | Tim Sullivan | PayPal was bought up by EBay, and a lot of the things people hated about it subsided.
My GF's store uses it for handling credit card transactions as well as payment from other PayPal accounts. She's got no complaints. |
| Sat 31 May | www.marktaw.com | Some people like paypal, others hate it. Like it or not, it's the lowest common denominator - everyone has an account.
If you do a little research you can find out why people don't like paypal... I think it's mostly people conducting business via paypal who've had their accounts closed for no known reason and can't get their money out. |
| Sat 31 May | FullNameRequired | Ive used paypal for about 3 years and never had any major problems.
It _does_ tend to polarise people though so Id suggest you provide more than 1 method of payment...
esselerate is another verra good method :) |
| Sat 31 May | To_Paypal_Or_Not_To_Paypal | Wow, talk about instant gratification from Joel's forum :)
It seems on the minus side we have:
1. Non-paypal registered customers have to go through the procedure of waiting for some magic number to appear on their credit card statement, as Chi Lambda said. I recall having to do this the first time I used paypal, and it was a pain and the only reason I persisted was I wanted the goods. I can well understand this would put people off.
2. Sellers are at risk of being frozen for some time if chargebacks occur. Paypal's chargeback protection does not apply in the UK (thanks guys).
3. Phone support seems pretty slow.
On the plus side we have:
1. It's the easiest (only?) way for self employed businesses to accept credit cards.
And that's about it. What it wants is some kind of online merchant service that charges the seller (say) 1% extra as insurance against chargebacks. I guess Paypal is the closest there is. |
| Sat 31 May | Chris Nahr | So do you still have to pay a monthly fee even when you don't have any transactions? That was the reason why I cancelled my first PayPal account and why I've avoided PayPal ever since. It's been over a year ago, though, so things might have changed. |
| Sat 31 May | mb | the one reccomendation i've seen is to keep no money in your paypal account. that way if they freeze it for no apparent reason, you've only lost a small amount.
some people use it as a deregulated bank, but i'd be quite wary.
similarly, you might want to tie it to a bank account which is just used for paypal/other risky transactions. |
| Sat 31 May | To_Paypal_Or_Not_To_Paypal | Hi Chris
No I don't think there is a monthly fee in the USA or outside the USA even. They make money charging sellers about 3% commission when you transfer paypal money to a real bank account. And it will be about 5% to a non-US bank account because of currency conversion fees, cross-border fees and forex spread. But the fees are charged only when you transfer the money. |
| Sat 31 May | somebody | I'm not sure that PayPal is the easiest way to accept credit cards (it certainly isn't for your customers) and I'm pretty sure it's not the only way.
Do a search for 'payment processing' on Google and you'll get a ton of results. There are services available that vary from hosted order forms to XML/SSL backends. It tends to be very easy to get up and running with your own processing system (particularly if you use a hosted form and let the host do all the work). Some let you piggyback off their merchant account so you don't have to go through any hassle with setting one up and with hosted forms there's no need for you to get your own SSL certificate. |
| Sat 31 May | www.marktaw.com | There are alternatives to paypal. I didn't do much searching, but the one that made itself obvious to me costed $50 to set up. |
| Sat 31 May | Kent Design4Effect | I use paypal every day and although I don't care to go into specific reasons why, I can assure you, I've checked around and they are your best bet. |
| Sat 31 May | Herbert Sitz | I can't figure out why nobody has specifically mentioned some of the alternatives to PayPal, all of which allow you to accept credit card purchases without the cumbersome step of requiring the purchaser to set up a separate account.
I've purchased quite a bit of software from web sites processed through one or another of these systems. I think I've used PayPal once; PayPal is definitely not your only alternative.
I'm not knocking PayPal, other than to suggest that it might be wise to allow payment via a method that doesn't require your purchaser to set up that separate account. Also, look around at various sites that sell software online; many of them set up accounts with both PayPal and one of the sites like those I've listed below, then allow the customer to choose with 3rd party transaction processer to use.
Here are three:
www.shareit.com
www.swreg.com
www.digibuy.com |
| Sat 31 May | Herbert Sitz | See also, http://directory.google.com/Top/Computers/Software/Licensing/Shareware_Registration/Services/ |
| Sat 31 May | somebody | Here's another directory link at Google that lists some good alternatives:
http://directory.google.com/Top/Business/Financial_Services/Merchant_Services/ |
| Sun 01 Jun | www.marktaw.com | He's already been to Paypal Sucks.com so He must know about this list:
http://www.paypalsucks.com/options.shtml |
| Sun 01 Jun | To_paypal_or_not_to_paypal (aka Bill Rayer) | Hi
First time I've been referred to as 'He' with a capital :)
I'm embarrassed to say I didn't see that list on paypalsucks.com. Some of the alternatives charge higher commissions, eg the usual commission for the shareware-type services is 10%, whereas paypal is about 5% even for international transactions.
The biggest problem with Paypal is the delay for a first-time user. Either they have to wait for their monthly credit card statement, or they need on-line access to their details. |
| Sun 01 Jun | Herbert Sitz | I plan to set something like this up soon and the solution I plan to use is PayPal + SWReg. You're right that most of the shareware services charge absurdly high fees. SWReg charges a reasonable $1 + 4%, more than PayPal but not so much that I'd feel bad if a potential customer chose to use them over registering with PayPal. You don't want to lose sales over lack of PayPal registration, and SWReg provides a good way to ensure you don't. |
| Sun 01 Jun | Nader | I was in your situation as well, I usually do intense research before folking out my credit card. I came across these site, that happens to be paypal grievience sites
http://www.paypalwarning.com/
http://www.paypalwarning.com/WallOfShame/Default.asp
http://www.aboutpaypal.org/
http://news.com.com/2100-1017-842240.html
http://www.techimo.com/newsapp/i997.html
There is much more info at
http://www.whatreallyhappened.com/paypal.html |
| Sun 01 Jun | Joel Spolsky | If you really don't want to just become a credit card-accepting merchant, consider being an Amazon merchant. Anybody can sell stuff on Amazon and buyers feel much more confident buying from their site. |
|
| There's too much fear | Sat 31 May | Brad Wilson (dotnetguy.techieswithcats.com) |
| I read over the Pairing thread[1], and the overwhelming opinion is that pairing sucks and everybody would hate their life if they had to do it.
Ive done pair programming since before I knew what it was. Ive also been in the no way I would do that full time! mode. Now that Ive done it a lot, its hard to imagine wanting to completely eliminate it. We dont do it full time, but its rather valuable for knowledge sharing. It does help productivity, believe it or not.
So I think whats going on here is that these people are afraid of things theyve never done. Here are some possibilities Ive thought of. I could be right or wrong. How about the people whove done pair programming jump in and tell me what you think. Im not saying that people with these fears are bad people or bad developers; Im just trying to identify the fears themselves. (Nearly all of these could describe me at one point or another.)
1. Theyre afraid to spend significant time with other people. Coding is a loner activity, and it attracts a lot of people who like to spend significant time by themselves.
2. Theyre afraid not to be in control. They figure if theyre not in front of the keyboard, they wont have enough control over the code.
3. Theyre afraid to justify their code. Most places dont do code reviews, and those that do tend to have an adversarial atmosphere around them instead of a way of educating and sharing.
4. Theyre afraid not to own the code. When you develop it yourself, you feel like its yours. If you pair, you dont own anything.
5. Theyre afraid to justify their design decisions. Coding generally involves some macro design decisions, like when to throw out existing code or when to refactor it; when to write just enough to make it work, and when to design in future compatibility you know youre going to need.
6. Theres too much vested into winning. A lot of developers feel like they have to win arguments, and if youre pairing, that might lead to a lot of discussion and arguments, which you may not win.
Can anybody think of anything Ive missed?
Now, more importantly: how can we as developers overcome these fears to become better?
[1]
http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=47155 |
| Sat 31 May | victim, jr. | It's like sex. If you're with someone good, it's an enjoyable experience. Otherwise you just can't wait for it to be over. If you're with a mature programmer, it can be good. The rest of the time you have to deal with some snot nosed punk that thinks it's a competition. |
| Sat 31 May | Bored Bystander | For once, I can't add anything to what's been posted on the main thread topic. Brad and Victim Jr, you've both hit the nail squarely on the head.
I will add one side note, though.
Programmers are a pathologically skeptical bunch, and the more experienced a programmer is, the more he will tend to disparage overhyped 'new' trends. XP and anything associated with XP, such as pair programming, meet these criteria.
One thing that the experienced tend to get sick and tired of is the 'new is the only one true way' mentality of this industry.
So we're hearing programmers (typically consultants with something to sell) prattle about the joys XP as though anything written without XP techniques is dog sh*t and anyone not doing XP is a cro-magnon. It's as though anything predating today's notion of best practices is crap.
The other thing that the experienced get tired of very quickly is the recycling of very old ideas in new forms that are taken by newbs as the holy grail and a modern epiphan. Mistaking an old idea for revolutionary is stupid. People should read their history.
The idea of working professionally with peers had been pervasive in the sciences and in engineering for decades. The computer field started the vogue for socially dysfunctional 'precious snowflake' rejects holed up with their precious work. So pair programming, in a sense, is a return to the sort of professional interaction that other technical occupations have always employed. |
| Sat 31 May | Daniel Shchyokin | Actually It is not neccessary that people be good just at the same skill level, otherwise your coding with an anchor, or (if youre the anchor) you nod off within 5 minutes |
| Sat 31 May | mackinac | BB, your penultimate paragraph is right on. I have been around long enough to see a lot of ideas get recycled, often with a new name but touted as the newest thing in SW development. Most of XP falls into this category.
I am having a harder time figuring out your last paragraph. Pair programming is the one feature of XP where I don't know of anything comparable preexisting. Can you give examples of something equivalent in other engineering fields? Certainly there is collaboration, but what would be comparable to sitting at the same terminal and making joint decisions about each line of code? |
| Sat 31 May | Philo | Beware the Usenet effect.
In general, human nature will always create overly negative impressions on discussion forums. Why? Because people rarely feel the need to post 'I've done [x] and I like it' out of the blue. Negative emotions are generally stronger and easier to articulate, so they're articulated more.
In fact, think about software management in general - how often do you read stories like 'we brought our enterprise project in on time and under budget'? Unless it's an exceptional success, people don't write about it, and people don't want to read about it.
Personally, I don't have a problem with XP - for those that have followed my 'too much process can kill a project' rants, you'll realize I tend to prefer an XP style anyway. I'm itchy about Pairing - I do believe that in the right circumstances it would work very well; I fear that the average manager won't understand the concept of 'in the right circumstances' and it would become a 24/7 mandate, regardless of compatibility. As I indicated in another thread, I think the potential destructiveness of abuse of XP concepts far outweigh the potential benefits.
As for the list above, #1 is the only one that really applies to me, but I'm flexible. As for code reviews, I welcome them - I would dearly love to have a group of peers go over my code; I'm sure I would learn new things and it would be pretty fun.
Philo |
| Sat 31 May | Philo | mackinac - I don't know about programming; I suspect the single keyboard has been the barrier to entry, but in other fields there's been pairing for centuries. Chemistry, physics, biology, etc - people have been working together.
Another support for the pairing concept - have you ever taken a lab course with a lab partner? Notice how much easier labs are with a peer than by yourself?
Philo |
| Sat 31 May | Programmer in Wisconsin | I like pair programming. I was paired voluntarily with another programmer about a year ago and we shared the same keyboard, monitor, computer etc. We sat next to each other all day and yet we never tired of each other. If I couldn't think of an idea then she thought of it. And if she was stumped then I would normally be able to help her out. So if either of us was on a roll coding then the other would just watch, observe, think and wait and we would normally talk the troublesome spots over. Of course she took smoke breaks a lot and was considerate and would stay away from me while her smoke 'smell' wore off. Anyway we normally solved many times more coding problems than we did by ourselves and we had many good laughs. Now maybe this was a freak accident that two people of relatively the same experience level could get along so well and get so much work done, but I think you have to try it before you can judge it. Then again maybe I'm a strange type of programmer, more open than the average.
Another $0.02 to the coffee fund? (Lotto fund?) I vote Beer and Brats fund!! |
| Sat 31 May | Bored Bystander | Mackinac: I just meant that in other engineering and technical fields, collaboration is common and it's an expected norm. Peers are allowed to know what others are doing and it's expected that it's a team effort in all respects. In software development, it's very often the case that a significant piece of code (significant in terms of its importance to revenue or a larger goal) is 'owned' by just one person most trusted to make it happen. And equally common is that literally nobody around that one person knows even the first thing about what that person has done, only the overall function that the software performs. This can be the case even though there may be a 'group' assembled around the project - only one person really understands what's going on, and everyone else is in a non critical supporting role.
My attitude is that allowing exclusive ownership of a significant piece of code by one person is a 'sin' against good business principles. If one person can hold a business hostage, then it's not much of a business. And this happens all the time, and in companies in which the owners puff their chests in pride at their 'team'. One certain employee leaves and you'd have immediate chaos.
And - sometimes, such projects are even entrusted to a person 'not' really trusted by anyone, but to whom it falls to do the work because nobody around them is allowed to have a clue or is of demonstrably lesser skill. I've been amazed by the number of projects in this industry that are locked up by individuals that I wouldn't allow in my house and around whom the general concensus is that they are not to be trusted.
To get back to the main point of the thread: pair programming is probably a better thing than the practice of solo programmers appointed to go it alone indefinitely. However, everyone's tolerance for working in tandem ought to be respected. |
| Sat 31 May | mackinac | I have never worked on a project using pair programming in the manner promoted by XP. I am also one of those who would not want to be assigned to a project using it.
The notion that we can't know whether or not we would like pair programming without trying it is a statement that is true, but lacking in practical usefulness. Those of us with finite lifetimes can't try every methodology that comes along. We have to extrapolate past experience and make reasonable choices about what new methods to try.
Brad, you left one important 'fear' off your list. The fear that managers will implement XP, it will be an slight improvement over their existing but really bad practices, and then it will be yet another excuse to avoid implementing the kind of best practices that have been known about, at least to developers, for years but too often ignored by management. |
| Sat 31 May | Just some dude | Should artists 'pair paint'? |
| Sat 31 May | mackinac | >>> Mackinac: I just meant that in other engineering and technical fields, collaboration is common and it's an expected norm. Peers are allowed to know what others are doing and it's expected that it's a team effort in all respects. <<<
BB, this is an interesting point, but I just don't see that collaboration in other technical fields is at all comparable to pair programming as advocated by XP.
I can see that collaboration in software development could be a good thing. Practices such as design and code reviews are a sort of partial collaboration. But this sort of collaboration, and the collaboration that goes on in other technical fields that I am aware of, has an interaction period of hours, days or even weeks. Pair programming has an interaction period of minutes, or even seconds. I can see that that could work out for certain types of debugging or maybe developing simple functions, but not for major software development projects.
In these discussions I do try to be careful to use 'pair programming' in the sense advocated by XP. In fact, I usually checkout the http://www.extremeprogramming.org web site to be sure of the details. One of my coworkers really likes the idea of PP, but to him that just means two people working on the same project so one can go ask the other questions if they run into problems. |
| Sat 31 May | The Real PC | [pair programming, in a sense, is a return to the sort of professional interaction that other technical occupations have always employed.]
I don't agree with this, Bored. I think collaborating, interacting and communicating are a good idea, and there isn't nearly enough of it in any of the places I have worked as a programmer. But sitting together at the same keyboard every day is something entirely different.
I have some idea of how scientists work -- yes there is communication and discussion of ideas. But you also spend many hours alone reading your field's publications, analyzing your data, etc. Time alone is absolutely essential for creative and/or intellectual work.
Certain people can tolerate hours of solitary concentration, while others can't. Maybe pair programming is really for those who can't.
On the other hand, I would like it once in a while. Making it a mandatory policy is a very bad idea.
This has nothing to do with fear, since I can explain everything I write. Sometimes the explanation might be 'well I was in a big hurry,' or 'I didn't know any better at the time.' But usually I have a good reason. |
| Sat 31 May | Kent Design4Effect | Okay Philo, lets see this site.. Post the URL
I will give you an honest evaluation of the site, including the code.
- Kent |
| Sat 31 May | ! |
I have done a fair amount of pair programming, but it generally turns out to be more of me mentoring less experienced developers. While this may provide some long term benefits by downloading knowledge to them, it definitely tends to slow me down.
That said, I have had invaluable experiences when paired with the correct person. However, in the situations where it works extraordinarily well, we did ignore some of the more annoying things like the 'one keyboard' rule.
In the strictest sense, you could say that if you aren't doing the one keyboard thing, you aren't pair programming. However, I would argue that if you have two developers sitting next to each other with two separate terminals, you can still achieve or surpass the expected performance of one keyboard. The really vital thing is establishing and maintaining the needed communications between the developers. I have actually managed pair programming sessions with co-workers over 800 km away with real success.
Having said all that, it certainly isn't something new, and it is definitely not going to be advantageous for everyone. In mismatched pairs, it can have its uses if you can affort the time to mentor but should otherwise be avoided. If you get the right match, you will be amazed at how quickly the job is finished. |
| Sat 31 May | Philo | Kent - not my site to post publicly, but I'm emailing you the url...
Philo |
| Sat 31 May | Not bored | I think a lot of this discussion about the alleged merits of pair programming reflects, yet again, the youth and immaturity of programming as a profession.
The type of sharing involved in pair programming is the type of sharing that occurs in factories, where people are sorting tomatoes or spraying cars.
Brad Wilson alleges there's something wrong with good software engineers wanting to do their own work, to take pride in it and also to be reluctant to share the fruits of that work without fair reason.
There's nothing wrong with that. It's normal, and good practice.
If any immature practitioners in law, or writing, or journalism, or any of the other established professions, tried to tell those practitioners to sit side by side and do lots of their work together, they would be told where to go.
From everything I've seen, the most fervent advocates of pair programming are the less able; the people whose builds take eight hours because they can't optimise their architectures; whose products can't be installed without lengthy hand holding sessions; and who never design anything genuinely new, interesting or impressive. |
| Sat 31 May | Bored Bystander | not bored:
It's been said repeatedly that great intellectual achievements don't come from committees. However, most commercial software development *isn't* rocket science.
I don't exactly agree that advocates of pair programming are the lamest programmers. I tend to take the simplest explanation of things. Pair programming will *probably* tend to reduce the quantity of arcane tricks that are played in code and will create redundancy in the organization - IE, more than one person will know how stuff works. If that places a ceiling on the achievement of someone who writes code that can't be understood by others, then I think that most biz owners will say 'so be it'.
My guess is that pair programming is intended to reduce the amount of code that only one person can understand, and is intended to diffuse some of the knowledge - probably most urgently for the sake of maintenance, which is often as large a burden as initial development.
If there are hot buttons I've seen with technical management that happen to intersect the areas that pair programming and XP address, these are it. |
| Sun 01 Jun | Brad Wilson (dotnetguy.techieswithcats.com) | 'Brad Wilson alleges there's something wrong with good software engineers wanting to do their own work, to take pride in it and also to be reluctant to share the fruits of that work without fair reason.'
I never said that.
However, the way some people act -- when they're paid to be part of a team -- is a tad bit pathological. If you want to be a solo inventor, then by all means, go off and do something by yourself.
As an employer, I'm more concerned with what's best for the team and the company than I am about placating someone's need to 'own' something outright. Employees don't get paid to do whatever makes them happy; they get paid to do what they're told. Their choice is not 'get paid while I do what I want, or get paid while I do what you want', it's 'get paid while I do what you want, or leave the company'.
Do you disagree? |
| Sun 01 Jun | Nat Ersoz | 'The type of sharing involved in pair programming is the type of sharing that occurs in factories, where people are sorting tomatoes or spraying cars.'
Where the hell does that come from. Bwoyh, you ever worked in a factory? There's no sharing in a factory. You sit at your station and turn your screw, insert your coils, perform your tests. All by yourself, hoping a machine doesn't come along and replace your job. My first 5 years as an engineer was making machines to replace these peoples' jobs. It aint a pretty sight. What used to take a line of 10 workers, knifing coils, trimming pots (resistors), is now done by 1 machine in about 10 seconds. But that's old news, really old news... so 80's.
Engineering on steroids - that's when a hardware and software engineer get together a pair program. The best of both worlds all rolled up into code genius. Or a test engineer and a design engineer. When that rarity get together, new benchmarks get set and performance soars. This is a recent case in our small company, and while its not within my realm yet, I look on with envy. When a whiteboard session of specialists find their groove and start nailing a problem that appeared unbounded, but by the end is a design - I love it. Gotta get me summa that... |
| Sun 01 Jun | Philo | Brad, I know you're being dramatic, but I agree that that's the general idea.
As a contractor, I never entertained any illusions that I owned the code in the physical or trade secret sense - I was simply happy to have produced it.
I have code right now that's doing some amazing work. Most people using it have never heard of me. That's okay - I'm simply happy to know that I wrote it.
It seems like there are two (among many, of course) psychologies at play - some people have a need to possess their creation, like 'losing control' of it somehow lessens them. Others seem to be happy simply working for a paycheck, and being comfortable in the knowledge that their worth is recognized with the paycheck and by those that know they are the authors.
Regarding pair programming - I believe the benefits:
1) Properly implemented, a pair will definitely be more efficient than a single programmer
2) The code produced will be of higher quality
3) Less likelihood for 'little personal touches'
4) Redundancy. (increases the Bus Number)
vs. the costs:
1) Nobody seems to be sure if a pair is more efficient than two programmers. If not, then pair programming is a cost in manhours
2) Increased management effort in selling the idea, then managing the pairs
3) Some cowboys will fight pairing, which is wasted effort ( = lost $$$)
Philo |
| Sun 01 Jun | realist | 'Employees don't get paid to do whatever makes them happy; they get paid to do what they're told'
It only makes sense if what you are 'told' is sensible.
Some big assumptions there. |
| Sun 01 Jun | Not bored | Brad, it doesn't matter whether I disagree with you. If you want to hire code-monkeys, go right ahead.
If you want to argue pair-programming is better, make it clear you are arguing from the employer's perspective.
Nat, my comaprison of pair programming with sorting tomatoes was meant in the sense that both minimise the contribution of the individual, treating peope as interchangeable workers. |
| Sun 01 Jun | Not bored | Philo, there's no independent evidence that pairing produces better code. I think this especially applies once you start considering high quality, as opposed to junior, programmers.
Second, I like and enjoy what I do and take pride in it. It's regarded as highly valuable. I do claim ownership of that work, in the creative sense ( moral in legal terms) and the financial sense. |
| Sun 01 Jun | The Real PC | [Employees don't get paid to do whatever makes them happy; they get paid to do what they're told.]
Yes, but if what they're told doesn't make them happy, they should leave. If you make your employees unhappy, they will leave (or if they are financially unable to leave they will stay on as prisoners).
Making your employees happy (except, of course, for the ones you want to get rid of) is good for the company, and making them unhappy is bad for the company. If pair programming is going to make the more creative and independent employees unhappy, then of course your company will be a haven for mediocre conformists.
Maybe pair programming is not as evil as I suspect it is. Maybe it will do for software development what the assembly line did for car production. But in that case, it's time for many of us to change careers. |
| Sun 01 Jun | Philo | Not Bored - have you ever done *anything* as a team? Labwork, writing, coding, designing, crossword puzzles, etc?
There's a synergy that just happens when two people work closely together on a task that defintely moves things faster than one person working and produces better results. I suspect it's a result of the fact that everyone thinks differently, so having two pairs of eyes on a problem always seems to do more than 2x the analysis.
As programmers, we always make assumptions while coding. Someone sitting next to you while you're working who understands the code is going to question those assumptions.
Philo |
| Sun 01 Jun | Brad Wilson (dotnetguy.techieswithcats.com) | 'Brad, it doesn't matter whether I disagree with you. If you want to hire code-monkeys, go right ahead.'
That's a LOT of anger, just over someone who said that maybe there's some fear associated with why people don't want to pair program, and that employers should consider what's best for the employer. I feel pity for you. :( |
| Sun 01 Jun | mackinac | BW: >>> Employees don't get paid to do whatever makes them happy; they get paid to do what they're told. Their choice is not 'get paid while I do what I want, or get paid while I do what you want', it's 'get paid while I do what you want, or leave the company'. <<<
It is somewhat embarassing to admit it, but as an employee I have to often operated in the 'do what I am told' mode. At the same time I notice a few employees going off and doing something because it interests them, but no one told them to do it.
At some point I noticed that those employees who kind of did what they wanted ended up inventing improved processes, or were the ones who won the employee of the year award for the new business area they developed.
It is true that these people didn't just spend their time with random web surfing. Although, in some cases even web surfing can be helpful. On one project I spent some time looking at communications analyzers on eBay and ended up buying one. No one told me to do that, but we wouldn't have been able to meet some of the project requirements without it. |
| Sun 01 Jun | victim, jr. | I'd never join a shop that practiced pair programming. I've had one too many sessions with no-social-skills-snotty-nosed-punk-ass geeks... My personal well being/job satisfaction standards wouldn't allow me to risk the chance that I'd be paired with one of these people. |
| Sun 01 Jun | Pigs | I find it funny how so many people judge others without even having the slightest clue in the world as to what they are like. Making generalizations about things like, 'I don't want to be stuck with a know-it-all punk', is absurd and demonstrates your own fears and weaknesses. Why don't you help the 'punk' and point him in the right direction instead of being a jerk geek and just saying, I don't want to work with him/her. In fact you can go back to masturbating now, since that all you probably do outside of work.
I also find it amusing that the people with big heads think someone else is 'below' them. Here let me hand you a pin so you can let the hot air out. Don't strike a match.
The fact is anyone can write code. Anyone. And given that they are of a state of mind which is focused on the problem, they will be able to write code that will solve the problem. How dare any of you think that you are a 'coding god'. How dare any of you forget that when you were starting out someone gave you a chance to code, alone or with someone. The attitude of 'I can code and only I know what I am doing' is sickening and is demonstrated by everyone on this board. Anyone with a little motivation can do what you people do. Anyone. Stuck up snobs. Pigs. |
| Sun 01 Jun | The Real PC | I'm sure you are wrong, Pigs.
I have always been sort of idealistic and believed anyone can learn to do anything, if they want to. But my observations over the years have shown that many, even most, people have a very small supply of motivation or discipline when it comes to things requiring mental effort. Even if all are able, most could never get interested enough to try. That goes for any kind of math, science, or literary/scholarly work. And I no longer believe that all are able.
Coding requires mental effort. If you do it without mental effort, you either have a special kind of intelligence, or you are doing very simple work. It requires as much mental effort as anything I have ever done, and I am very far from being stupid.
I'm sure there are lots of managers who think coding is on the level of clerical work, and that programmers should have little tiny manageable egos. While I believe that no one, however smart, should feel or act superior because of their skills or intelligence, it's stupid to pretend that the person who barely got through high school is on the same intellectual level as the person with college degrees in technical, scientific, or professional fields.
A really good programmer must be the kind of person who can learn a new technology within a couple of days on their own, just by reading and experimenting. Most of the people I know, who are not programmers, could not do this if their life depended on it. They couldn't do it if you gave them years instead of days. They would rather be thrown in jail than learn programming. |
| Sun 01 Jun | victim, jr. | sure, anybody can program... they can learn it in 6 months at the local tech center.
Look, I wasn't saying these people weren't smart, just that they sucked to be around. At this point in my career I can afford to be choosy about what I do, when I do it, & who I do it with.
'In fact you can go back to masturbating now, since that all you probably do outside of work.'
well, I'm constantly working on something, so that leaves me with little time to do other things. Plus it's enjoyable... |
| Sun 01 Jun | The Real PC | [sure, anybody can program... they can learn it in 6 months at the local tech center.]
Is there any proof of this?
The people who learn in 6 months were interested to begin with, and may have had previous experience. But how good are they after the 6 month course? And can you take a person with no interest or ability and teach them in 6 months?
We know that just about everyone can learn to read and write, although previously it was only the highly educated elite who could.
However, most people read and write very badly. The same would probably be true of programming if they started teaching it to everyone in grade school.
I would like to see the work of a person with no interest or experience who learned programming in one 6 month course. Maybe it would be like reading a book written by someone who had one 6 month course in literacy. |
| Sun 01 Jun | victim, jr. | I have no proof of it, in fact, that was meant as sarcasm... |
| Sun 01 Jun | The Real PC | Oh ok, I thought it was you who said:
[The fact is anyone can write code. Anyone.]
That statement is so absolute, and I have to question it. It's like saying anyone can represent themself in court, or anyone can diagnose diseases, repair their own car, or cook. Sure anyone can learn how to cook, but how many are good at it? Anyone can learn to fix their own car, but most would rather pay an expert. Anyone can play the piano -- the question is whether anyone wants to hear it, and then whether anyone wants to pay to hear it.
It's stupid to say anyone can write code. Anyone can do practically anything, given unlmited time.
So I think 'Pig's' statement is kind of ridiculous. Probably just an expression of anger. |
| Sun 01 Jun | Philo | 'Should artists 'pair paint'? '
Ever talk to an artist about how many canvases they go through? As a wild guess, their marketable success rate is probably what, 5-20%?
So if you're saying that programmers should spend 75% of their time writing stuff they throw away, then yeah, pairing isn't for you. ;-)
Philo |
| Sun 01 Jun | Punter | Brilliant logic Philo.
And people wonder why software has bugs..... |
| Sun 01 Jun | Just some dude | [ their marketable success rate is probably what, 5-20%?]
check their ROI, business guiness |
| Sun 01 Jun | just some 3l33t biz'nass dude | or even better, their ROA |
| Sun 01 Jun | Philo | Did anyone else not get that I was trying to make the point that painting is not even analogous to software development, so the question 'should artists pair paint?' is not a valid rebuttal to pair programming?
Philo |
| Sun 01 Jun | Just some dude | check the 'hackers & painters' thread, and try to keep up.
http://www.paulgraham.com/hp.html |
| Sun 01 Jun | Philo | I've read the article, but I don't choose to debate with you - you seem more interested in 'winning' than in reaching any kind of rapport on the subject. Take care, and watch the blood pressure.
Philo |
|
| Usability making products unusable | Sat 31 May | Usability question |
| In several of the recent software, an emphasis on too much usability whatever it is seems to be making the software hopeless to the point that it is unusable.
The most glaring example for this is microsoft menus in word and excel which can be put anywhere in the screen.
Toolbars can be dragged from their original position. to a software developer, it looks cool. But ask my 60 year father who uses MS Word. If he accidentaly does something like this, he would need some others help before he can get started again. Take the toolbar thing for example. The handle to drag it is so small that is guarenteed that anyone with vision problems are going to have a terrible time. Also, if one toolbar accidentaly overlaps another, some buttons go missing. its actually there, but you cant see it.!
I would argue that just from the usability point of view, word 95 is far better than Word XP. Do not think fromt he perspective of a software developer. Put yourself into the shoes of an 60 year old man who wants to type something.
Windows XP is another example. The start menu behaves real weird. It takes time to get adjusted to it. And even after getting adjusted, its still tough to use.
Macromedia Dreamweaver MX is another example. Ultradev 4.0 was so usable. Once a novice opens MS, he is likely to get intimidated by the sheer numbers of windows that popups. But i would reserve judgement on this
Is there a moral in this?. Leave something that WORKS ALONE!!!! |
| Sat 31 May | raindog | Features of a new commercial product are defined by product managers, not by the developers.
Obviously, the end goal of any software company is to sell software. But the new version of any software package competes with it's own previous version. How do you make customers to pay for upgrade? You just have to add something, otherwise you won't sell it. Sometimes adding new features correlates with improved usability. Sometimes it doesn't. |
| Sat 31 May | Ross | I agree: most people out there will find the cool toolbars and other things a pain. Developers sometimes tend to forget people are not so friends to computers as they are.
The problem may be so easy to resolve like making the program would open (first time) in standard (novice) mode. Then, an experienced user would go to to Options->Interface->Coolness and would set the UI all the 'cool' he/she likes.
This way all the people would be happy.
Too easy?
PS. The problem is when OS standard UI controls don't help on setting 2 novice/advanced modes for UI (or other way of generating a good UI experience on all kind of users). That means that you, as a developer, would have to code (and innovate) it all. |
| Sat 31 May | www.marktaw.com | Dreamweaver is a developer's tool, and I like MX a lot. I don't see any reason MX's interface couldn't be cluttered.
MS Word is more of a laymans tool, and there should be an instant 'return to standard interface' button in an obvious spot for the non power user.
MS Office has always been a kitchen sink application and probably always will be. The more cool things they can put in, the more difficult it is for other applications to catch up, the more businesses will adopt it because they think it will meet any need they can throw at it. |
| Sat 31 May | Chris Altmann | Internet Explorer menu/toolbars and the Windows XP taskbar let you lock their position from the right click menu. This also hides the drag handle bars. I believe they both come this way by default.
Hopefully a future version of Office will do this too. I've had a number of users drag their menu and toobars somewhere weird and have no idea how they got there and how to get them back.
Once, the toolbar was in the dead center of the screen (Still can't understand the utter cluelessness of that one, I don't think they ever even asked for help. I had to point it out to them).
Thankfully this sliding 'coolbar' thing that IE has didn't seem to catch on too widely in other software. As for detachable menu bars ... WTF? Tear off menus would have been at least useful to some (though I find those a PITA too), but I've never seen anyone who wanted their menubar anywhere but at the top of the window (or screen). Though there was this one 3D modeling program with an abomination of a UI that had menus at the bottom of the screen...
Bah. |
| Sat 31 May | www.marktaw.com | In Opera and Dreamweaver I put the occasional thing at the bottom of the screen... Well, ok in Opera it's just the status bar, but in Dreamweaver it'st he whole proerpties window.
Maybe in non-western cultures people want things in the lower righthand corner? |
| Sat 31 May | - | It should take a minute of thought, or a of moment testing, to see that the specific features you mention directly and negatively affect usability.
The problem here is not 'Usability making products unusable', rather it is the design/procedure/management that allows this kind of feature to enter products.
---
Office is customisable - that's great - but the implementation is fundamentally flawed. XP 'Lock the Taskbar' (as default) is a solution. |
| Sat 31 May | pb | I don't think it's ever useful to reinforce a point by pointing to Microsoft, good or bad. Unfortuantely, Microsoft is an anomoly. Some of its good products fail and some of its bad products succeed. Many of the successful products are so because MS is everywhere. Some of its failures are due to general dislike of MS. |
| Sat 31 May | UI Designer | The DENIM application
http://guir.berkeley.edu/projects/denim/
has implemented the toolbar as a circular popup pie menu which is accessible with a right click of the mouse or pen. It's nice and big and always right where the cursor is so it complies with Fitts' law very well.
Apparently, Bill Gates once said that to make software easier to use, you just have to stamp 'User Friendly' on the box. |
| Sat 31 May | Frederic Faure | Personaly, usually the first thing I do when I try a new piece of sofware is remove all the toolbars :-)
And I agree that the dockable menu bars and toolbars pretty useless. Cool, but useless, bar some, maybe. |
| Sat 31 May | Edoc | I have to agree with one anonymous poster above. What you're complaining about is not usability, but featuritis.
Usability principles would not dictate a feature like this unless the benefits well surpassed the flaws. |
| Sat 31 May | mb | office has always had configurable menus. was always a pain. that's what modes are for, lock is the right way to go!
i do know people who put menubars on the left of the screen. gives them much more space to read documents, since most screens are wider than they are tall. |
| Sat 31 May | Philo | DENIM looks cool; pity the intelligence in the UI didn't go into the website - videos to show program functionality? What's wrong with screenshots?
Philo |
| Sat 31 May | JWA | I think another good example of this is NN/g's website. I personally find it hard to locate things at a glance there. I suppose that the large fonts with the simple colors makes it easy to read each specific item, but when you're just scanning through the site looking for one thing, it doesn't really pop out at you.
Joel's sites, however, are much better at this. They follow just as many of the usability rules, but are much easier to grasp and work through.
Nielsen's book was much easier to read through, so I'm surprised their web site seems so cluttered to me.
--Josh
P.S. I agree that the ability to move the menu bar is more confusing thatit's worth, but I think that like someone mentioned, if it was locked by default but could be unlocked, that would meet both camp's concerns. |
| Sat 31 May | Jim S. | About a dozen years ago, I read an article in the New York Times about an exhibition of children's artwork. Fingerpaintings from a particular kindergarten class were prominent, which led many to draw the conclusion that the teacher of that class was brilliant. The teacher instantly gained this reputation and when interviewed by the Times about her techniques, she replied rather off-handedly that 'I just take their pictures away before they ruin them.'
Ever since then, this forms one of my fundamental views of software projects. Many projects should just stop and move on to something else. Many beginning and mid-level developers tend to concentrate on and overdo features they find fun, and will often make interfaces too complicated without good reason or spend time on things that have, at best, a marginal impact on project success. I find this particulalry true of the kind of developers who stagnate at mid-level without progressing; they just get too caught up in the 'Gee-Whiz' factor of computing and never focus on utility. It becomes merely programming for programming's sake, and users suffer.
I've had some very frustrating moments as a manager where guys have spent entire weekends coding things like custom date-entry controls on projects that already had some schedule slip. What do you tell a guy who enthusiatically spends heaps of his own free time on something you view not only as useless but actually detrimental to a project? |
| Sat 31 May | Kent Design4Effect | Mark
I use MX Developer Studio too.. Great isn't it? |
| Sat 31 May | www.marktaw.com | Jim.
great quote! |
| Sun 01 Jun | Dan Maas | Who is stupider, the company that 'upgrades' its products by obfuscating their interfaces, or the customers who buy said 'upgrades?'
I like the '...before they ruin them' quote also :) |
| Sun 01 Jun | www.marktaw.com | I tend to go for the tool that works the best for my needs no matter who makes it.
If I want to create a Word document, I use MS Word. If I want to create a spreadsheet, I use Excel. If I want to keep organized notes, I use Treepad ( http://www.treepad.com ).
I tried Star Office and didn't like it. I never tried GoLive, but I've been using Dreamweaver for 4 years now. I use Fireworks cuz I know how it works, and I don't use Photoshop becuase I have no clue how it works.
I wonder if someone in Japan may want their menu bars on the bottom right. |
| Sun 01 Jun | Joel Goodwin | As for Japan wanting menu bars on the right, no they're quite happy with menu bars the way they are.
You have to bear in mind Windows default (even Japanese Windows) is everything at the top - it would be a usability break if the bars suddenly started to relocate to the right.
Also, Japanese computer users will type left-to-right most of the time. The vertical right-to-left form looks more formal and classical, but virtually every Japanese document I have encountered was written in the 'Western' left-to-right top-to-bottom style. |
|
| Code Analyzers/Profilers | Fri 30 May | Dave B. (www.sswltd.com) |
| Does anyone have any recommendations for code analyzers/profilers C++/VB?
Im trying out the demo version of VB Watch/Project Analyzer and have already tried Intels V-Tune for C++. I know Joel reviewed Compuwares DevPartner? in his article in Programmers Paradise. Sounds like a nice tool.
Im thinking these will (and have already) helped me catch some unnoticed quirks in my code. Does anyone use these tools on a regular basis? If so what features/functions do you use and how do you use it efficiently? |
| Fri 30 May | Rob Walker | Different profiles work in different ways, which is worth understanding.
I've been very happy with Numega TrueTime (part of DevPartner) for profiling C++. It integrates directly with the backend of the C++ compiler to instrument the code. On the plus side this seems to be the best technique. On the downside it can add a long time to the compile and often ties the version of the profiler to a specific compiler version (most of my experience with it was under VC7).
Quantify from Rational (I think ..) takes the approach of instrumenting the code based on the symbol file generated by the compiler (PDB). This doesn't add any time to the compile phase, but adds a new instrument phase. I've never been as happy with the results it achieves.
Depending how you use it Intel's VTune doesn't instrument the code at all. Instead it uses sampling techniques: check the program counter every millisecond to see were the program is (worked out from the symbol file). There are a lot of settings to play with, and you can also look at all sorts of obscure chip and memory architecture metrics (cache misses, pipeline stalls, ...)
It seems to work well, and has the advantage of imposing at lot less overhead on the system. Invasive profilers tend to slow the application being profiled down substantially (in our case >10x) which can cause problems of its own.
V-Tune and DevPartner complement each other, but if I could only afford one then I would go with DevPartner. |
| Sat 31 May | Paul | I can't believe that more people don't use these tools more often. (Unless they just aren't saying so.)
Using the code analyzers I have been able to identify and make about 2 - 3 improvements per 1000 lines of code. And using the profilers I am able to keep my code executing at a reasonable pace. I like the call graphs because they help me to identify redundancy and other nuances.
As for using them efficiently, I think it's a matter of writing the code first and manually debugging it, then use the code analyzer to see what you've missed. Simply because you can't rely on the code analyzer to catch everything. And of course you probably know that there is no substitute for good design/documentation/coding. (i.e. Don't code a routine and run it throught analyzer/profiler, code the whole unit and then run it through.)
As for the best one out there I think DevPartner is the best, but then it is the only one I have used.
Anyway, my $0.02, good luck. |
| Sat 31 May | Christopher Wells | > I can't believe that more people don't use these tools more often.
I found that MSVC's sampling profiler was too inaccurate to be useful. For example, running it on an image processing library which runs through 20KLOC in a second, something which samples every millisecond doesn't tell me how to optimize the bottleneck: will barely even tell me where the bottleneck is (two identical 5-minute profiling runs would come up with different results). MSVC's profiler also didn't seem to work on multi-threaded code. It also didn't let me profile all the DLLs in an application simultaneously.
Similarly, an intrusive profiler made my code so slow that the code wouldn't work any more: couldn't use it to profile the code which drives a real-time fax session, because it made the code run so slowly that the fax session aborted with a timeout.
I ended up writing my own profiling code to hook into my application; I tried to not perturb the performance of the code which was being profiled, for example by storing profiler results within in-process RAM and saving them after the profile run was finished; by enabling specific hooks I could control which subset of the application I was profiling. |
| Sat 31 May | somebody | Christopher, the MSVC profiler (I'm familiar with version 6) takes a little work to get right but can be highly effective when used right.
It's not integrated very well into the IDE. For example, to profile multiple DLLs, there's a text box on the profiler dialog that you have to fill with the right switches and DLL names.
You might want to take a look at the .bat files located in '\VC98\Bin' and read the docs on the command line usage. |
| Sun 01 Jun | realist | www.aivosto.com
Project Analyzer is an excellant tools. |
|
| Pairing | Fri 30 May | The Real PC |
| They are going to start pairing where I work. This wont include me, at least for now, because my group is just me and one other guy. There are 6 programmers in the other group, working on a project that has been taking forever, and the managers decided to try extreme programming to see if that would get the project moving.
I know the subject has been discussed here before, but not recently. I can understand how pair programming would help communication, but I cant imagine working that way all or most of the time. I would like to have more communication and code reviews, and to work together with others now and then. But it seems to me that isolation is absolutely necessary, at least part of the time, for getting into a creative and focused state of mind.
As I said, this new policy will not affect me now, but who knows what will happen later. I think of it as two artists trying to paint on the same canvas. Every decision would have to involve a discussion. What would happen to that sense of freedom you get from doing things your own way? And wouldnt the person with the stronger personality get to make most of the decisions, even if his ideas are not necessarily the best?
I would like the chance to work with a really great programmer, for a while, because it probably is a good way to learn. But cant you learn as much from just reading their code?
Working together and communicating can be very helpful, I agree. But I think I would really hate pair programming, if forced to do it all the time. |
| Fri 30 May | greggae | Here's what I think of it. Pairing with someone I feel I can't communicate with is bad. Pairing while disliking my job is fairly bad, but livable. I definitely do not want to pair 40 hrs/wk, I think people do 10 hrs/wk, though I never kept track. The rest of the time, you're thinking of ideas, taking care of emails 'n stuff, maybe exploratory coding...
I've always colored around the lines, sometimes we'd just diverge and the other guy takes care of different things. I don't think you're 'supposed to' check in code not written as a pair, but who's to say what's natural. I'd advise not to treat it as too special, but as an interesting way to do what you do... If you try it for some weeks and it isn't working, at least be able to say specifically why.
Oh, try to get someone who types about as well as you. |
| Fri 30 May | Philo | Read this thread:
http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=45793&ixReplies=31
Which, despite Bill's fairly focused question, was (I think) a pretty nice 'catch-all' on XP.
My $.02: Recipe for failure. XP should be a measured decision agreed to by all involved from the beginning of a project. It takes solid, firm leadership and dedication by the coders. It is not a panacea to be thrown at just any coding problem.
I'll bet you that productivity will go *down* and absenteeism might actually increase if this goes on long enough.
To solve the problem, the first important step is to identify the problem. WHY is the project behind? Was the schedule overly optimistic? Is progress being made, just not fast enough? Are the coders in over their heads? Are they working with tools not suited to the job? Is the work environment detrimental to progress? Are the coders spending all day surfing Monster and sending out resumes?
Just a hint: XP won't help with any of those scenarios. :)
Philo |
| Fri 30 May | the truth | Pair programming is the single most stupid idea in the history of software development. I am frankly astounded that ANYBODY takes this idea seriously at all.
But looking on the bright side, the more idiots that screw up projects with trendy non-methodologies, the less competition there is for competent people. |
| Fri 30 May | raindog | Please keep in mind that:
Pair programming != XP.
It's not even the most important part.
(TDD and planning game are the most important parts of XP, probably) |
| Fri 30 May | Nat Ersoz | Keep an open mind. Unless you get paired with Bob N. |
| Sat 31 May | smkr4 | I've done a good bit of pair programming, and even advocated it to some extent at my work. Like all undertakings, your mileage may (will!) vary. It's not a panacea; nor is it necessarily the next apocalypse.
My feeling is that pair programming works best when people are unevenly matched (eg, one is less experienced than the other). Particularly, it works best when you're trying to close the gap between new hires and experienced developers in learning a codebase. And like with most team endeavors, there really has to be a natural leader and not two strong personalities fighting it out (eg, the 'two artists' scenario).
That's not to say that the strongest personality always wins. It depends, frankly, on whether that person is a jerk who's unwilling to listen or give up control occasionally. But that doesn't constitute a leader in any case, just the typical prima donna who doesn't do terribly well on his own, anyway.
Really, it boils down to what Peopleware refers to as the jelling of teams. Pair programming is nice because it's a mini-team; a team of two, if you will, and is easier to jell. If you have the luck of experiencing the right dynamics, then it will be a wonderful collaborative experience, and your creativity will complement your partner's. This does happen; I've certainly experienced it myself. But it's unfortunately difficult to predict whether it will.
That said, I definitely agree that 'round-the-clock pairing is a nuisance. Programmers need downtime, and that's something continual pair proramming doesn't accomodate very well. When you are in the pair situation, try your best to push for some reprieve--even if it means colluding with your partner against management's wishes. :) |
| Sat 31 May | Philo | smkr4 -
'Pairing works best when the two programmers are different skill levels'?
Doesn't that simply become a master/apprentice situation? I mean, it's viable in its own light, but there the goal is to bring the junior person up to speed quickly (as you said), while pairing is meant to feed off the crosstalk between two people of comparable talent.
I would *hate* to be under a deadline crunch and have someone with little experience working with me - I'd probably make him QA or give him cleanup work or something...
Philo |
| Sat 31 May | raindog | Philo, have you ever tried pair programming? :) |
| Sat 31 May | The Real PC | This project that's taking forever is not my project, and I only have a vague idea what it's about. From what I've heard, the problem is that they did not communicate well with the future users during the design stage. The (former) project manager is completely non-technical, which did not help communication. The process was not iterative -- they did not start with a relatively simple prototype that could be used right away, and which would gradually evolve into a complex system. The concepts of iterative design and communication with users (which should be obvious to everyone) come from Extreme Programming.
I don't know why they're trying pair programming also, except that some consultants came in and recommended all the Extreme stuff, not just what makes sense. The boss is skeptical but willing to try it out.
Maybe it's a technique for weeding out absolutely useless coders. The boss said anyone who is not able to work this way will no longer be involved in Project Dud.
All my projects, since I have worked there (2 years) have been one-person projects. I'm in the R&D group (which now includes only 2 of us). They are cutting back on developing new products, temporarily, to see if Project Dud can ever be finished. They took the most experienced guy from my group, and left just 2 of us. The other remaining guy spends all his time maintaining an important system. So I am the only R&D person left, really. My manager is now also the project manager for Project Dud (because he is a good manager who gets things done). I expect I'll be left alone to do whatever I want for the next 6 months. |
| Sat 31 May | j. | What's the definition of pairing here?
First, if your management jumped on paired programming because they have read alot about it lately then you'll soon switch to a new methodology. Second, if paired programming means sitting next to someone in front of one monitor/keyboard working on the same piece of code then I don't see any benefits. The stronger personality will do everything. |
| Sat 31 May | The Real PC | They decided to try all the Extreme Programming ideas, which includes pair programming.
Iterative design and communication with users is part of Extreme Programming. However, these ideas came long before and were practiced by many developers (including me) before there was anything called Extreme Programming. These ideas make sense; pair programming does not make sense (to me).
Pair programming goes along with the whole Extreme package of ideas, unfortunately.
Fortunately, I will not be included; at least not now. |
| Sat 31 May | Philo | 'Maybe it's a technique for weeding out absolutely useless coders. The boss said anyone who is not able to work this way will no longer be involved in Project Dud.'
OMG. What an awesome recipe for randomly firing people, including some of your best coders. Might as well say 'everyone has to wear happy clown feet to the office. Anyone who doesn't like it is gone'
Philo |
| Sat 31 May | Greg | You should get more than one terminal, since what happens if the driver's crusing and you see a speedbump coming up that requires a small bit of research? You get to look at a map while the other guy drives.
Hasn't anyone ever coded with someone for fun, or more generally worked with someone to accomplish a task that theoretically could have been done alone? Just keep it natural, and see if you can make it work. |
| Sat 31 May | Norrick | Pair Programming is, like everything else in life, what you make of it.
I can't fathom working that way all day every day. But I can't fathom never working that way, either.
Personal experience has revealed Pair Programming to be useful when writing complicated procedures. The mix of close focus and wide focus may not speed up the actual coding process, but it certainly reduces rework, which speeds up the project as a whole.
Of course, this is just my experience, and I'm a determined fellow. A programmer with a bad attitude who lacks the determination to make PP work isn't going to get anything out of it under any circumstances. |
| Sat 31 May | The Real PC | [OMG. What an awesome recipe for randomly firing people]
They don't fire anyone at this place. Useless people are promoted to positions where you don't have to do anything.
If Bob N. doesn't do well with extreme programming, I guess they would take him off Project Dud and promote him to Head Websurfer. |
| Sat 31 May | Not bored | Pair programming is for people who've never done any genuinely good development of their own. This applies both to the managers who introduce it, and the faddists who become enamoured of it. |
| Sun 01 Jun | Nat Ersoz | I never woulda believed it, but there is more than 1 person in the world who's nickname is Bob N.
I knew Bob N. (different instance) b |