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) back in another day. And wouldntcha know it, all the way out in Seattle, I run into another guy who knew the same Bob N. 1/2 a continent away.
Small minds, amused by simple things... |
|
| DNS Propagation - any way to speed up? | Fri 30 May | Bored Bystander |
| Heres what happened to me over the last couple of days.
Ive had a domain with web host A for several years. Recently Ive been moving all of my content to host B. The main thing I use this domain for is email delivery.
To make the process incremental and seamless, I did the following.
- Several days ago, I set up an email redirector at host A to redirect all email from host A to host B (to an alternate domain not affected by this transferral issue.) This was to cover the transitional time when the DNS changeover took place, so that email would wind up at the right place.
- I use Directnic.com for the domains registration. They have an email redirector and host parking feature. I enabled this feature (name servers in DNS record were set to ns1.directnic.com, etc) I pointed the email redirector for the domain to host B and I pointed the parked page thingie to host B (the alternate domain for both, natch.)
- Checking after a couple of days, it seemed that email was being routed to host B even when sent to the domain address. I checked from several different hosts, web email services, and a couple of shell accounts. Most important, traceroute and ping from two different shell accounts listed directnic as the destination for the domain. And I was getting email addressed to the domain, arriving at the new host B.
- I then canceled my hosting account with host A, confident I had seen the DNS propogation settle out. Checking it, I have seen that my account admin screen at host A has dissappeared.
- Now I see that I am getting NO emails at host B. Most unsettling, pings and traceroutes from one shell account point back to... host A!
The point is, I transferred my domain and set up safeguards to catch email while things were in transition, and I kept the old host going until things seemed OK. Only after formally deleting the old account, DNS from some hosts is now saying that the domain is still at the old host, which now wont accept any requests. Its as though canceling the account de-freshened everyones notion of where the domain lives.
Yes, the directnic record still shows directnics server as the DNS of choice.
Is it possible to speed this transition process up somehow? What the *hell* makes a DNS transfer get undone?! I know Im losing emails.
Dammit, dammit. |
| Fri 30 May | Philo | The big problem is that during the bandwidth scares of the late '90's, the philosophy was 'cache everything.' One huge target was DNS - people thought of DNS like street addresses, and figured 'they don't change very often, so we'll cache the heck out of them'
What they forgot was that when DNS *does* change, you want the change apparent immediately, and that's the downside to caching.
I know of a few sysadmins that have set their DNS servers to cache for eight days. There is nothing you can do to fix this.
For future reference - for mission critical systems, run old and new hosts in parallel for a month.
Philo |
| Fri 30 May | Philip Dickerson | I don't have an answer or explanation, but I went through the same process of changing host providers and DNS registration a few months ago, and I kept the old provider account for a month of overlap. I was still seeing occasional emails going through the old provider about 2 weeks (maybe slightly more, may have been closer to 3 weeks) after changing the DNS information at the domain registrar. |
| Fri 30 May | Bored Bystander | Philo: since it sounds like you know more than I do about this stuff, here's a another question: would it assist this process to set up an alternative DNS at a location like granitecanyon.org (free DNS) or another DNS service that points to the right place, and add those servers to the domain's list of DNS servers? |
| Fri 30 May | Philo | No.
Well, couldn't hurt. ;-)
But think about how DNS works and what's going on - DNS is a name->number lookup service. Some DNS servers cache DNS addresses for [x] days.
For example:
Let's say that BigISPCo.com has DNS servers that cache for eight days. They look up the IP address for BoredBystander.com on Monday and find that it's 192.168.1.10. On Tuesday you move your website. When someone types 'BoredBystander.com' into their browser on Thursday, their system is going to go to BigISPCo's DNS server, which is going to return 192.168.1.10 without even checking the root servers.
So - nothing you can do. :-/
Philo |
| Fri 30 May | Nat Ersoz | Sometimes best effort means no effort. |
| Fri 30 May | mb | actually doesn't dns have time-to-live as a value?
so if you know you are about to change, you set the ttl down to a very low number. then after you change you set it back up.
of course you still need at least a week of overlap.
you shouldn't lose too much mail however, as mail to the wrong server should bounce. if you're real lucky you had your own ip address (yeah right) and the sender will automatically try again. |
| Fri 30 May | Brad Wilson (dotnetguy.techieswithcats.com) | TTL is a hit-or-miss thing. Some DNS caches respect it, and some don't. Regardless, it seems silly to set your TTL to, let's say, 1 hour, just because sometime in the next 4 years you plan to move your site to a new host. :-p |
| Sat 31 May | Frederic Faure | On the other hand, nothing silly about lowering the TTL temporarily to eg. 1 hour for a couple of weeks, and putting it back to a more reasonable value once the DNS changes have spread around the Net.
Moral of the story: don't bet on remote DNS server to respect the TTL that you set in your zones, and keep the old servers running for at least a month, using redirection so that eg. people are sent to the new mail or web server.
Yup, been bitten too :-) |
| Sun 01 Jun | Dan Maas | My solution is to use a DNS hosting company that is completely separate from my web and email hosts. (I use EasyDNS.com but I'm sure there are others). This way I can change email and web providers very quickly, without the chance of anyone screwing up the domain transfer. (EasyDNS email routing changes in real-time, but the web server IP will require the normal DNS settling time).
A few months ago I had to take advantage of this when my web host screwed up my account; I had everything set up at a new web hosting company in 12 hours. |
| Sun 01 Jun | Kyle Cordes (www.kylecordes.com) | The well-known way to do this, is to lower your TTL values for a while before making a DNS change. However, there are three big issues with this:
1) sometimes you don't know when you'll be making such a change
2) lots of ISPs set the DNS TTL to several days, and stubbornly refuse to make an exception for you, particularly because you generally ask them when you are leaving as a customer, and they probably don't know how anway
3) various client programs and DNS client modules do their own caching, and do not process DNS TLL anywhere near correctly. This includes, for example, Google's web spider. I moved my web site a while back, and more than a week past the DNS change and TTL expiration, the old server was *still* getting a slow stream of hits from Googlebot trying to spider the site.
I have now concluded that to be completely safe (i.e., no person or search engine will think your site is missing), you should allow a month overlap - the server at the old IP address should continue to work for that duration. |
|
| Rude/Arrogant Managers | Fri 30 May | Ferdinand A |
| I work in India for one of those subsidiaries of US based IT companies. Recently we got a new manager for the team. He is very rude and arrogant. Hes intimidated the team members to the extent that people hardly talk.
The team is demoralized. He makes it a point to pick on the team lead - calls him to his office n times a day and hogs his time. Then in the weekly meetings he criticizes the team lead for lagging behind in work.
The team lead is very protective of us. Yesterday as we were about to leave for home, the manager came over to the team leads cube and started admonishing him for not putting enough pressure on the team. All along, he was wagging his index finger at him. After this was over, the team lead just trugged off.
99% of Indian mangers are unprofessional, incompetent and would like to please their US counterparts all the time, even if they dont understand what is required. Some as extreme as this.
The pain point is, these bosss bosses are also like that. So it only worsens the issue if the matter is escalated. These managers treat the people under them (usually the engineers, developers) like herd and deny them anything unless they suck up to them.
I felt very sorry for our team lead (he is very competitive, smart and gets things done).
I am sure that there must be many people who have interacted or worked for Indian managers. Please share your thoughts and tips on how you have handled such situations. |
| Fri 30 May | Andrew Hurst | I don't have very much experience in cases like this, but I would like to say make sure the team lead knows that you guys notice what he's doing for you. Thank him for his efforts. If he knows that him being the buffer for the bullshit is keeping you guys in a good working environment, and he knows that you appreciate it, I would bet he'd be much more happy in his position. |
| Fri 30 May | | I second what Andrew Hurst wrote.
As for your PM and his bosses, there is nothing you can do about their unprofessional behavior besides sending each and every one of them an anonymous letter.
Btw, the behavior that you have described is not unique to Indian managers. This type of behavior occurs everyday all over the world. |
| Fri 30 May | www.marktaw.com | I've noticed that once you get emotional, once your blood pressure starts to rise, your thinking gets clouded. Some people - salesmen for instance - intentionally or unintentionally cause this reaction in other people - if you're not thinking clearly, you're an easy target.
It's unfortunate that managers and people we have to deal with are also like this. Sure there's deadline stress and pressure to perform, but simply put, there are better ways of dealing with it. Better ways of expressing the need for extra commitment and performance than FUD.
Definately let the lead know that you appreciate what he's doing, and do what you can to make sure he keeps his job. You don't want your manager to think he's the ringleader and that getting rid of him will get him the results he wants. Make sure you perform when he asks you to. See, now that's how you get results. |
| Fri 30 May | Geography lesson | Two points. First, yes, sales-trained people pride themselves on getting people to agree to a course of action, without concern as to the merits of that action for the other party or even the organisation. So, yes, the worst type of background for software management.
Two, I would think the type of behaviour described here IS actually more predominant among Indian companies, or the outsourcers anyway.
The reason is that the business is intensely margin oriented, and many of the people attracted into executive ranks in the Indian firms are selected and promoted for those goals, to a much greater extent than other firms.
In some contact I have had with Indian firms, I have seen a much greater respect for authority among developers, and a rather naive respect for the trappings of wealth. |
| Fri 30 May | Joe AA. |
A friend of mine works at a company with an Indian manager that sounds pretty much like this guy. In addition, his wife also works there... and uses his 'power and prestige' as if it were hers.
Most of the developers, also Indian, are wimps - they bow to this guy in public and cuss him behind his back.
For good reason. Any competent person on his team, anyone that would stand up to him... has either been terminated for that action... or simply moved on to greener pastures. |
| Fri 30 May | Stephen Jones | You think Indian managers are bad just try Saudi Managers! |
| Fri 30 May | RudeAndArrogant | As previous posters said this is not unique to your boss, and you are a low margin business. I see Indian programmers working for American companies treated as day laborers or migrant workers. You are not supporting American companies because you are highly skilled or professional. You are here for lines of Code, as cheap as possible.
If legal they would chain you to the terminal and use whips. Welcome to global resourcing. America appreciates the economics of your service. |
| Fri 30 May | Basil Brush | good rant R'n'A.
They should also remember, whatever they do, they must never form a union because that will erode their rights. Oh, and that stuff running down their backs is not piss, it's rain. |
| Fri 30 May | Stephen Jones | The exploitationnentioned in this thread is nothing compared to that which people complain about in American companies.
Don't you remember the guy who wasn't paid for six months (myownprison is his latest moniker) or all of the comments that programmers should work 70 or 80 hour weeks, and anybody who left at the end of the day to watch little league games with his kids was unprofessional and deserved kicking out of the company?
And how many programmers in the States are unionized? Isn't it the States we are talking about in the thread about keeping people on probation without health care?
And where do you get the idea that Indian software companies or US Indian subisidiaries are working on low margins? As far as I can tell their margins are massive. One of the main reasons US companies outsource is that cost overrun is not disastrous. Fixed costs in Inda are considerably greater than in the US, but programmer salaries certainly aren't.
The behaviour mentiones is typical of highly hierarchial organizations, particularly those where a managers position is more a quesion of prestige and status than what he delivers. This is possibly true of Indian software companies at present, but is certainly not only with them. |
| Fri 30 May | Bored Bystander | Stephen: as a British friend remarked once of an American business partner he once had, 'they wanted their pound of flesh'.
We Americans do accept a ridiculous combination of factors: declining living standards, dramatically increasing demands in terms of breadth of knowledge, no job security, and no social nets to protect us when our employers ditch us on a second's notice in an act of hubris.
And programmers are both right at the center of that mix in two negative ways.
One, we are subject to that lowered expectation dynamic as badly as many industrial workers.
Secondly, like idiots, programmers as a class puff their chests out in pride that they accept such a dismal fate, as a character test of sorts. They tell each other that they're losers if they expect protection or equitable treatment. The attitude seems to be that if you're weak or slip up or are marked for firing, even temporarily, you deserve to die and you're a loser.
It has to be just wonderful from an employer's POV, however. With the right culture, you can make programmers drive each other into a feeding frenzy of self love and self righteousness. |
| Fri 30 May | Brent P. Newhall | There's also the tendency of programmers to believe that they can actually be productive, top-of-the-line programmers in this sort of environment. Sometimes, programmers are under ridiculous deadlines thanks to their own estimates of how easy this project would be.... |
| Fri 30 May | Bill Carlson | At its core, business isn't about treating people with respect, humility and honesty; it's about the bottom line. What these lead-headed managers are missing is that these three virtues are essential to managing highly skilled employees effectively. The 'bottom line' is always a byproduct, not a 'first goal'.
As with most things in life, it comes down to grey areas. On the left, you have dot-com 'un-jobs'. On the right, concentration camp prisoner. How do you manage to get the most out of people in the long run? Somewhere in the middle. And, as a byproduct, you can pay people less if they know they don't have to bend over and take the hurt every single day.
I often wonder what kind of projects people work on where the developers are so expendable. At my company, it's a huge ordeal to turn over even a single person.
Just a hunch, but if you examined projects that were delivered with high quality and low cost, the managers would consistently be a reasonable but firm group of people.
So, if it's any consolation at all, try to remember that this individual is COSTING MONEY with each of his outbursts. Maybe the rules are different in India, but folks in the States will either cocoon, show battle fatigue, or just plain 'check out' when confronted with such a manager.
If possible, try to think of it like a bonehead coding style or the guy that drives too slow on the freeway. It's not about you or your deficiencies; it's about the manager being unskilled at what they do. |
| Fri 30 May | Bill Carlson | Brent, A good manager knows that his employee's estimates are unrealistic and adjusts accordingly. That's what makes him a good manager.
An effective lead is always asking 'have you thought of XYZ?'.
One thing this business has taught me is that expectations need to be managed VERY EARLY. No one wants to be the one who says 'no, you can't have that' to the brass.
So many projects die this way. Everyone knows what's being asked for is impossible, but they go along with the death march.
This is unique to software. No one says 'I'm going to do 5 knee surgeries a day' or 'because I'm special, the soil is going to settle in 3 months instead of 6 months on the building I'm constructing'.
We just need to grow up as an industry... |
| Fri 30 May | Stephen Jones | ---' This is unique to software. No one says 'I'm going to do 5 knee surgeries a day' or 'because I'm special, the soil is going to settle in 3 months instead of 6 months on the building I'm constructing'.-----
You don't know Saudi Arabia! |
| Fri 30 May | Dennis Atkins | OK, so the guy is in India working for an Indian manager who is rude and arrogant.
And so who to blame? Don't blame the boss! Where would that get you? Blame America instead! yes, this is al lGeorg Bush's fault, or maybe Clinton's fault, depending on which one you disfavor.
Never blame the person actually screwing you over! that guy doesn't give a hoot! Blame some third party! Hey, if you can get your Al Qaeda associates in on the action maybe you can go blow up some buildings becasue of your rage over how america is to blame for the fact that managers in india and saudi are rude arrogant powermongering buttheads!
Blaming the presons actually screwing you up the ** would take some cajones, something in short supply around here. |
| Fri 30 May | Dennis Atkins | So I'm not just letting off steam, let me offer you some constructive advice. Justice in india is not like the US. You can get away with more. Track down the SOB who is doing you wrong and give him a pounding he won't forget out in an alley somewhere. That's the solution. Someone screwing you over? You can roll over like a cowardly dog, or you can go kick his ass into the ground. The world's not civilized. People get their heads chopped off just like it was the middle ages. don't let them do you like this. Track them down and put an end to it. |
| Fri 30 May | Plutarck | ---'You don't know Saudi Arabia!'
Or Iraq! ...or, well, America, or...
In short, the cause is, effectively, 'because they can'. Give people the ability to oppress others without retribution, and that is precisely what you will get. The reasons change, and you'll never run out of excuses to hear, but the behavior persists across all temporal and geographic boundaries. |
| Sat 31 May | www.marktaw.com | This thread is ripe for a reference to Noam Chomsky, so I figured I'd make it. |
| Sat 31 May | Christopher Wells | You are sorry and demoralized because the manager is wagging his finger at your team lead?
Ask the team lead what /he/ thinks about it, if you like: perhaps it's bothering you more than it's bothering him. And if you want to help your team lead, you might be better able to help if you too don't feel demoralised about it.
I had a (non-technical) manager once, who expressed his emotions (including, occasionally, anger and frustration). Maybe his anger /is/ counter-productive, but there's little sense in punishing yourselves, your team, and your project by feeling demoralized about it.
You (I) can't be sensible when conflicted, and lose the sense of proportion, the sense of how much or of how little something matters. You (I) want peace of mind to work with software, and won't necessarily find a solution on this board, outside yourself.
> Please share your thoughts and tips on how you have handled such situations.
Open the Bhagavad-Gita and begin reading. |
| Sat 31 May | www.marktaw.com | Christopher... Couple his situation with people being laid off left and right around you and you do begin to get paraniod...
Bhagavad-Gita may be good, but I don't think it'll help him in the next couple of months.
The best thing here would be to reduce your expenses so that your income clearly overshadows them. Eventually you will be able to live for a year or more without income, and you will take your job less seriously because you're less afraid of being laid off to begin with. |
| Sat 31 May | www.marktaw.com | ... but again that will take more than a couple of months. Sorry, did I say best. I didn't mean best, I meant 'another good thing.' |
| Sat 31 May | Stephen Jones | Dear Dennis,
Having seen your solution for teachers - gang rape inside bars
And for managers who get on your nerves - 'Track them down and put an end to it'
I am now waiting for the third instalment. What shall we do to programmers who write buggy code?
a) Cover them in honey and tie them to a post for the red ants to get at?
b) Tie their balls with CAT5 cable and castrate them?
c) Force them to spend the next ten years developing apps for OS/2 using Oracle Developer 2000?
However horrid the solution we come up with, we are sure you can top it? Go for it my boy!
|
| Sat 31 May | Christopher Wells | Mark...Perhaps you do get paranoid, but I don't know that people ARE being laid off. When my ex-company closed my division and sent its product to India, I helped to train the developers (from Bangalore) who were replacing us/me: I received a friendly message from one of them recently, saying that they'd just 'hired another resource'. The labour market may be fluid there, but I haven't seen a hint that the IT job market in India is shrinking.
Re. having savings, of course that contributes to a sense of financial security... some people call that ''fuck you' money' (meaning enough money in the bank that you can say 'fuck you' to your present boss and set off for better pastures).
It's good of you to suggest that.
Money is NOT a panacea though... I have enough personal savings to last me about 10 years now, but STILL a close interpersonal or especially any intrapersonal problem can prevent me from working effectively... model that, if you wish, as my left brain hemisphere not working well if it's getting interference from my right brain hemisphere... I know from your first post ('thinking gets clouded') that you know what I mean.
I DIDN'T get the impression that the poster (Ferdinand A) was especially worried about himself; rather, that he's sorry for his team lead, who is 'protecting' his team but whom his team feels unable to protect in turn... a matter of personal loyalty (like family), not only of finance... and an unhappiness that the management seems to be counter-productive... some (many) people are socialised to be protective and productive.
When I was chief developer (like a team lead), the owner/CEO occasionally used 'management by intimidation'; he himself was afraid, I'm sure, of the whole company going under. His 'intimidation attempts' didn't affect me too much on the few times that he tried it on me (I just 'trudged off when it was all over'); the two times when it bothered me the most was when he bypassed me, and instead picked some other, more junior members of the team. I especially recall one incident of this which bothered me excessively; I had a long kind of psychoanalytic conversation about it with my older online buddies; a few days later, it occured to me that perhaps that little incident was bothering me more, AND bothering me for longer, than it was bothering EITHER of the two principals involved (the CEO/owner and the junior team member to whom he had been 'threatening'); after a conversation of 50 or so messages, it occured to me that I would better serve them both by spending less of my time worrying about their feelings and more of my time concentrating on delivering their software. Whether or not that was the best solution, that was how I handled that situation... and my referencing the Gita was an attempt to get this point across.
Also I still expect to take my job seriously (though with less fear now, I expect), irrespective of money. Look at what Bill Gates is trying to do with his money, now that he's growing up. My owner/CEO was devastated when a downturn in sales caused him to lay some people off, and vowed he'd never do that again... he sold the company for 26 million, some of which went to him... but he isn't merely idle now, however, he's currently busy trying another startup involving some medical equipment, which sounds serious as death to me.
Thanks for the opportunity to rant. |
| Sat 31 May | www.marktaw.com | Christopher - good post.
I think my previous manager used intimidation because he himself was intimidated. He was a new manager (an experienced manager, but new to this division) and given a seriously difficult project and wanted to prove himself. Since he wasn't the development manager, he had no way of knowing whether or not the status reports he was getting were accurate, or if the application would fall apart once he showed it to the world.
So... he was stressed and passed it on in a negative way.
As far as the money thing, it's not a panacea, but it does help ground you. I remember when I was driving, every time I'd almost avoid an accident, hit the brakes hard, get cut off by an asshole, I'd see $$'s. How much the accident might cost me.
If that wasn't a worry, I'd've been a much happier driver. |
| Sat 31 May | Dennis Atkins | Yo Stephen,
Yeah all three of those would probably work.
My point of view on this subject is that we see this all the time, developers treated abusively by a manager. Some kind of epidemic or something.
So - let's unionize! Nope, we're all identically agreeing that we're too individualistic thinkers to form som union.
Let's lobby for credentials then. Nope, we don't need no stinking tests.
Have you tried talking to the boss? Nope, that wouldn't work as he is too much the self-absorbed bully.
What about anti-dperessants for the programmer? Oh, I see, he's already taking them.
Well... since we've seen this question a million times and nothing suggested works, if that's really true, there's just one think left to try... vigelante justice! Rogue chain gangs of disgruntled programmers who just can't take it anymore roaming the streets... looking for some pushy arrogant and incompetant middle managers they have an issue with! Watch out! Here they come! |
| Sat 31 May | Dennis Atkins | Tell you what, I'll say something helpful for a change. Ferdinand, check out this article:
http://story.news.yahoo.com/news?tmpl=story&cid=569&e=18&u=/nm/tech_india_jobs_dc
It's a seller's market for IT folk in India - switch jobs and name your price. You got a boom going on there. Ride it and cash in. |
| Sun 01 Jun | www.marktaw.com | One of my ex-coworkers is from India. It's insane what US Dollar amounts they get paid over there. I surfed some indian job search sites and did the money conversions.
On the other hand, I know that if I don't find a job, I can just move to India and with $100 in my pocket, live like a king. It's my plan B.
(just kidding) |
| Sun 01 Jun | realist | Why should I care?
I hope the whole IT industry in India implodes into a stinking pile of shit. |
| Sun 01 Jun | realist | Which I am sure it will. |
| Sun 01 Jun | Stephen Jones | Don't think you'd live like a king in India for long on $100.
The salaries quoted in the Yahoo article are a bit better, though you'd still have problems buying a house, and a basic desktop computer would cost you a month's salary.
And make sure you get broadband at work, because you wouldn't be able to manage the phone bills.
Welcome back to humanity Dennis! Is it for good, or are you just visiting? |
|
| Surprised this news hasn't shownup on /. already | Wed 28 May | one programmer's opinion |
| UPDATE - Microsoft loses city of Munich deal to Linux
http://biz.yahoo.com/rc/030528/tech_munich_microsoft_2.html
I have zero experience with Linux.
Can organizations and businesses that decide to switch to a Linux OS run Microsoft software products (i.e. Microsoft Office) and existing custom built software applications (i.e. apps written in VB or Visual C++)? |
| Wed 28 May | anonymous | http://slashdot.org/article.pl?sid=03/05/26/1855225
http://slashdot.org/article.pl?sid=03/05/24/2033228
Very old news. ;) |
| Thu 29 May | one programmer's opinion | Thanks for the URL.
I checked slashdot.org ealier today and didn't see squat. |
| Thu 29 May | Duncan Smart | 'Can organizations and businesses that decide to switch to a Linux OS run Microsoft software products (i.e. Microsoft Office)' -- apparently, using http://www.codeweavers.com/products/office/ -- I can't vouch for how effective, nor stable it is though.
'and existing custom built software applications (i.e. apps written in VB or Visual C++)?' -- depends on the app I suppose but you could potentially using WINE http://www.winehq.com/ |
| Thu 29 May | Chris Nahr | There are those emulators but running Windows apps on Linux after switching to that system strikes me as pointless -- you're still dependent on MS, after all; you're still locked into the Word/Excel file formats, and you're still exposed to whatever security holes you fear.
Come to think of it, running Linux instead of Windows on non-developer systems is actually a great idea, not just for the purpose of avoiding Microsoft, as long as you can afford a comprehensive maintenance contract and custom-written software that does all you need.
The employees on these systems literally can't do anything other than what they're supposed to do -- no computer games, no Outlook viruses, no porn downloads, no private work on company systems! In other words, switching to a more restrictive system with less available software might actually increase productivity... |
| Thu 29 May | Paulo Caetano | > The employees on these systems literally can't do
> anything other than what they're supposed to do
You can do the exact same thing with Win2K.
I'm making an experienc with my home PC (Win2K). I've created three users:
1) admin, which I seldom use
2) power user (almost admin), which I use when I'm offline
3) 'don't touch this' user, which I use when I'm online. Can't do much of anything, except access a couple of apps (e.g., Opera, Star Downloader). Can't access much of the HD, can't change any system setting, etc.
So far (1 week of testing), things have been going OK. Granted, I'm not a very sophisticated web user, i.e., the stuff I do is pretty standard - web surf, downloads. No purchases or service usage.
--
'Suravye ninto manshima taishite (Peace favor your sword)' (Shienaran salute)
'Life is a dream from which we all must wake before we can dream again' (Amys, Aiel Wise One) |
| Thu 29 May | Stephen Jones | Chris,
Have you seen the number of free games that come as standard with a normal Linux distro? Most of them let you play one while installing. And guess what? Linux machines can connect to the Internet to download porn. Or perhaps you though all those Linux developers used carrier penguins to waddle along to Linux.org with the latest patches.
A Linux desktop will allow you to do most of what users do on the desktop; that is write letters, surf the net, send email, play movies, do their accounts, and alter their photos.
If you are a company then you will possible have custom apps. These will have to be developed whether you use Windows, the MacOs or Linux. If they are fairly limited in scope and need writing from scratch, then there is no overhead with using Linux. Also there is the possibility that a similar government body has produced more or less what you need and it is available on the GPL. On the other hand if you want to use something that can be developed by extending MS Office or written in VB then the increased speed of development these tools provide wins out.
Whatever it is it is stupid to run things on an emulated OS. Simply get Windows pre-intalled, or use your already existing licenses, and dual boot.
[I do agree with you, however, in that there will be a short term gain in productivity until the users learn how to install solitaire under Linux]
|
| Thu 29 May | John Aitken | Stephen: He's not talking about Linux. He's talking about a canned Linux Win emulator. Really he's talking about giving the plebs a shell, any shell, that in one way is familiar to them (so they don't need retraining), but in another way is utterly featureless unless options have been positively / deliberately enabled by The Powers That Be...
I once worked for a company that freely provided machines to their minions but operated using the more obvious reverse case... that is they used CITRIX to emulate Windows for chosen apps while being intrinsically incapable of doing dangerous Windows-ish things.
Anyhow, for some confused respondents, the point is: not that the emulated OS wouldn't allow them to play games were they running natively, but that the bare bones emulation system didn't allow you to do anything that wasn't specifically enabled. |
| Thu 29 May | Mike | I hope linux catches on more. It will bring server based computing back instead of having mini-computers at everyones feet. |
| Thu 29 May | Philo | Mike - and you think netpc's are a good idea because it's a good thing to have the office sitting around doing nothing when the network is down?
A good 'minicomputer' can be had for about $500 these days. I don't think you're gonna find NetPC's much cheaper.
Philo |
| Thu 29 May | Brad Wilson (dotnetguy.techieswithcats.com) | Not that I agree with the big iron/dumb terminal philosophy, but when was the last time your hard-wired network went down? Seriously, if that happens a lot, maybe you should get some new IT people. :-p |
| Thu 29 May | Stephen Jones | As Paulo said you can limit what people can use on windows just as you can on Linux.
So limiting what people can do is not an OS choice, and nor is it a thin client/fat client choice. You can even tie down win 98 boxes so that people can only use the chosen apps.
The main problem with dumb terminals is that they only allow dumb working. If the user has to do anything outside of using the chosen program he's going to need access to a PC. And once you've excluded all your secretaries, teachers, managers, receptionists, salesmen, and so on, there often aren't that many people left to give the dumb terminals too.
Citrix is generally used for a very different reason, often to do with bandwidth when dealing with remote locations. |
| Thu 29 May | Nat Ersoz | I seriously doubt that Munich has any intention of running *any* MSFT applications - emulated or not. Contrary to the view in the states, Europe does not see office desktop applications as the Holy Grail oc computing.
Additionally, OpenOffice works very nicely on MSFT generated documents. But, if you ask me, ooffice is not their first choice. It seems they are inclined to back the KDE desktop and supported applications.
Culturally, Germans have an NIH (not inviented here) attitude. In the wrong context, it can be like working for zeh Fuhrer hisself. And when given a choice regarding something which they can control, they'll take it. KDE offers them that. KDE already maintains a Euro-ish mindset, which starts with priorities:
1. Design specifications which are fairly rigid.
2. Stability over features.
This is where I think Munich and other Euro-state support is heading with respect to the desktop. Don't expect to see much emphasis with respect to MSFT compatability - certainly not in the long term. |
| Thu 29 May | anonymous | I don't know about NIH. We're perfectly happy letting Google and Adobe kick the crap out of anything here. And just listen to the music; often US pop. Asus motherboards, Samsung monitors... What you may be noticiing though is the German tendency to define oneself by a profession, so you end up depending on others to do their jobs stably. (Like that always works...) Compartmentalizing. It's just scary to think some mad computer can trash your entire week because you were curious enough to see who sent you a love email. That's not how things should work.
Less Slashdot, more c't though. |
| Thu 29 May | Nat Ersoz | I definitely made a broad swipe there, sorry. It has been my experience that German management can be quite rigid in their acceptance of things foreign - especially when not standing alone, but being integrated into something they consider 'theirs'. If you intend to integrate something of yours with something of theirs, then there _will be_ documentation, likely an ISO or ITU standard or equivalent. That's a completely contrary world view as one held by MSFT (embrace and extend - secretly).
I have been on the receiving end of German managers - it can be great or awful. It all depends on whether they see you as a threat or an enabler.
NIH was probably the wrong term. Regardless, more power to 'em. I expect they won't take MSFT compatability into account. Now Linux and company now generating its own gravity. |
| Thu 29 May | Stephen Jones | At one place I worked at in Spain the parent company, Unilever, promoted the Sales manager to a position in Germany. He came back on holiday after three months and we asked him, somewhat concerned, if the German work ethic hadn't left him drained.
'Quite the opposite,' he said, 'I've never worked less in my life. I go in at nine and by four everything's finished; not like here in Spain where you can work through till eight or nine.' We were puzzled so he explained. 'You see, in Germany, if a lorry has to go out at 11.00 at 10,58 it's at the gate with all its papers in order. Here I would wait to see if he turned up before twelve, and if he hadn't then send out word to look for a forty ton articlated lorry parked outside one of the cafes in the area. Then I would go over to the driver, have a couple of drinks with him to keep him in a good mood, and have to decide if he could be sobered up or if I needed to find a replacement. Only problem with Germany is I find my mind atrophying for lack of problems to apply it to'
German Managers 'end up depending on others to do their jobs stably. (Like that always works...) Compartmentalizing. ' because in Germany that normally does not present a problem. It's when the rest of the world doesn't lifve up to this expedation that you see the German manager looking like a drowned rat or a fish out of water. |
| Thu 29 May | . | Answer: government organisations that switch to Linux or countenance doing it generally don't understand that there is a lot of custom software that runs on and requires a Windows environment.
It's an issue that hasn't been thought through and will cause big problems. The idea of running such apps, in a production environment, on various emulators is a joke.
Just watch the news from about mid 2004. |
| Thu 29 May | Stephen Jones | Dear dot anon,
I don't think even governments are as stupid as you make them out to be.
Where they have software that requires Windows they will run it on er, Windows. They may buy new licenses but in most cases can simply use the ones they already have. That way they won't even have headaches with upgrading.
What to do if people require access to both legacy windows apps and the new Linux ones? Dual booting.
Lack of drivers can be a problem, but the main problems occur with winmodems, hardly a problem in a large government office wheire they will connect to the internet through the LAN, and soundcards, which will require those who like to listen to music while they work to invest in a Walkman. Neither of these situations are likely to cause a new storming of the Bastille.
Anyway I must log off now. My Mandrake starter manual has nearly finished printing and I'm going to install Linux on a spare partition. |
| Sun 01 Jun | Thomas Barker ( http://thomasbarker.com ) | I would expect the decision process goes something like this...
ms = users * (win2k + Office + support) + dev_costs
linux = (users * support) + redev_apps + retraining
if ms <= linux:
return ms
else:
return linux
I should imagine that if you're looking to overhaul your IT anyway, then the cost of licences over the long-term would exceed the cost of rewriting your custom apps. |
|
| You can't be an accountant and run a software biz | Wed 28 May | My Own Prison |
| Its a fact. You cant just be an accountant (or any other occupation) and run a software business. You absolutely, positively must have knowledge of the product you are making, the process used to make it and how it is made.
True story. I worked for a small software company out of college. I took the job because it was the only offer I had. Big mistake. (Live and learn) Anyway, The owner was an accountant. This guy didnt know jack about computers. He could barely use his own accounting program and would ask me questions about MS-Word and how to download things off the internet... read porn. At any rate the software was dispicable. It didnt work. Customers would call and complain and this guy wouldnt refund their money. He hired consultants who claimed to be able to write software and had us, the full time employees maintain it. The business was struggling to say the least. He couldnt pay me or my co-workers, our checks would bounce. When I approached him as to refactoring the software so that it would do what the customers wanted he would simply ignore me or become upset and say something like he had payed a consultant 20k to write the program and that it had better work. The fact is these consultants he hired were from the boom era, were self-taught and knew how to write code that worked like a boat with a hole in it. If this guy would have been knowledgeable of the management and construction of software he would never have gotten himself into the mess. I tried everything from giving him articles on JOS about eating your own dog food to going so far as to demonstrate to him that the software didnt work. He still didnt want to do anything about it and to this day sells the same garbage. I could give you the URL, but I wont go that far. (You would really have a good laugh though.) I quit the position and am glad I did.
Now maybe Im crazy, but I know for a fact that any business you get into you have to be knowledgeable in that business. You cant be an executive at a Fortune 500 company and then one day decide youre gonna run a dairy farm. You have to learn the business first and then you have to have the motivation to run it. What keeps Joels business running? Its his and his employees knowledge of the business they are in. That is the software business. The next company I work for (if the chance presents itself), Im gonna make damn sure that the person I report to and/or work for/with knows the software business. |
| Wed 28 May | Canuck | I couldn't disagree more. You have made broad, sweeping generalizations about management ability based on a single personal experience. Sure, you got a bum ride but don't let that taint your perception of what it means to be a good manager.
Every newly minted MBA has read a case study of what Lou Gerstner did at IBM. I believe its really nothing short of a miracle. And he was a bean counter, of sorts. Certainly no background in hardware or software.
I started working for myself sometime ago since I got fed up with incompetent managers, both with and without software backgrounds. They were equally as bad, but for different reasons.
At present, I am under contract on a project in which the product manager, director and the VP have absolutely no IT background. Its the best job I have ever had. They have taken care to hire great people and then got out of thier way. And for this, we make an extra effort to ensure things are done properly. |
| Wed 28 May | Mike | You can't extrapolate your experiences of a bean counter at the helm of a product most likely done in VB by idiots to anything else but another product don in VB by idiots |
| Wed 28 May | Philo | A CEO's job is to lead and trust his people. Your boss did neither. It had nothing to do with his lack of knowledge of computers.
In fact, I'll wager that if he *had* known programming, then he would've been micromanaging you guys about how to do your jobs, and this thread would've been 'You can't be a software developer and run a software biz'
;-)
Philo |
| Wed 28 May | anon | I think the problem isn't the fact that your boss is an accountant. I think it's that he's an asshole. |
| Wed 28 May | | The original poster makes an excellent point. People producing Gertner and others as counterpoints miss the point that, in such large organisations, those people are managing sub-businesses, not software products or development. At the level where software expertise is needed, IBM has it.
As has been mentioned before on JOS, software is the only expertise-intensive professional activity where important directions can and often are taken by people with no expertise in that area. |
| Wed 28 May | A Software Build Guy | Where is Domain knowledge fitting in to this... This individual apparently thought he knew accounting and it is implied that this was an accounting package he was hawking. If a person who only knew software tried to write an accounting package, it would also be a story of ' You can't be a developer and run an accounting software biz'. It more sounds like he knew nothing of management and did not understand his market. This along with a lack of drive to succeed (I don't think a truely driven person would waste there time figuring out how to download items during 'work hours') was his down fall. |
| Wed 28 May | My Own Prison | The no name poster is basically thinking along my lines.
> 'it is implied that this was an accounting package he was hawking'
It's not an accounting package.
> 'If a person who only knew software tried to write an accounting package, it would also be a story of ' You can't be a developer and run an accounting software biz'.'
I can see your point, but I respectfully disagree. You CAN be a developer and run an accounting software biz. A good software engineer would follow the rules of development and research, study and learn the accounting practice as well as interview accountants etc. before diving into making a software product. Developers NEED to know the business their software is being used in - in order to write software for it. As is my original point, the opposite is also true, if you're going to run a software business you need to know the in's and out's of software.
As mentioned earlier, and for those of you who brought up the large companies, and as was mentioned earlier these people really don't manage software products or development. |
| Wed 28 May | My Own Prison | And yea, you're right, 'A software build guy' - he didn't and still doesn't have the drive to succeed, only to just get by. Probably because he doesn't know what the heck is going on and needs to learn a thing or two about software development, but is too lazy too and just want to get by on the income that he steals from his customers while using programmers just out of school to do his dirty work. In fact he claims to 'know the way these things work.' |
| Wed 28 May | Bored Bystander | Domain knowledge (knowledge of a real world area of need) and technical implementation knowledge are strange bedfellows.
My experience with vertical market software companies (companies that specialize in a SW product for a particular industry, trade or occupation) is that they are almost always technically mediocre; they have terrible technology cultures; and such companies are usually run with a ham handed mentality that software just doesn't count. It's quite rare to see a vertical market company that considers technology a necessary component of their value proposition.
In a sense, things 'have' to be that way. Technical skills plus no domain knowledge of a real world application area == no revenue. Domain knowledge + barely passable technology implementation == possibility of making some money from people who need a solution in that domain.
Where this becomes 'bad' is the vertical market company that has developed an internal culture that more or less says that technology just doesn't count. These are the companies that (for instance) nursed DOS real mode applications along well into the 1990s because the owners and management wanted to rationalize that Windows was a passing fad. Or, the many vertical market companies that are run like 'boiler rooms' with harrassed programmers being yelled at to work 'lean and mean' and 'stop wasting time'. IE, hatred of technology process leading to a degree of persecution of technology people themselves.
In a sense, a vertical market SW vendor tends to be an 'end user' of technology. The owners and the management may believe that technology isn't even something that they need to be concerned about.
I suspect that some of this dynamic is at work with the accountant-boss that the original poster described. He just wants to make money, and he is only interested in tech as a means to an end. In addition, as already noted, the problem is more that he's an a$$hole than that he is a accountant. |
| Thu 29 May | Stephen Jones | Bored Bystander gets it right as usual:
---'Technical skills plus no domain knowledge of a real world application area == no revenue. Domain knowledge + barely passable technology implementation == possibility of making some money from people who need a solution in that domain. '----
In fact I would say that the most important factor is the ability to sell the resultant crud. And that means finding an expensive 'must have' feature, that in fact is quite unnecessary and nobody will ever use. In my field, which is English Language Learning, the 'must have' is centralized tracking of every student progress and what they do on the machine. In practice this is never used because the lab supervisor doesn't have the time or inclination, and the results are probably too depressing anyway, but control freakery among trianing managers mean that the two big players in this market Ellis and Dyned, sell their software at $1000 a seat, even though Mindscape sell a program that is just as good (or just as mediocre to be more accurate) at $35 a seat. |
| Thu 29 May | Katie Lucas | I've worked for several vertical market companies. All of them but one bumped along just making a profit out of the customers they didn't upset to the point of leaving.
All of them but one were 'sales led'. The actual product was a poor imitation of the idea the customers were sold.
'Sales led', I have come to understand means the company philosophy is 'Sales promise the customers anything to get them to sign and are heroes when they do. Development are a bunch of tossers who can't live up to the dreams of sales and constantly lose us customers.'
The kind of company where the sales force has a beemer each and the most expensive laptop money can buy and development keeps running out of disk space and isn't allowed to buy more.
Now, it may be coincidence, but the exception in both cases was the same company. The guy running it is from the industry they sell to, but he knows that the product has to sell itself. In fact it does - people see it running and come and buy it. It's THAT good. And it's that good because the company has a record of hiring fantastic people - top notch developers and good domain knowledge people and letting them go to town. When drivers for new kit are added, it's not enough that drive a couple of the functions - they have to drive ALL the functions. Properly. And have a cool interface. And be scriptable. And auto-configure, and be as plug and play as humanly possible. And yes. If it's a choice between 'ship with bugs' or 'ship later', they pick 'ship later' everytime. Scary idea huh?
Frankly I'd much rather work for a company like that than the ones where they customers start out grumpy because the thing they get in the box isn't what they thought it would be... but there's only been that one company that's learnt that lesson. |
| Thu 29 May | Mr Jack | 'You can't be an executive at a Fortune 500 company and then one day decide you're gonna run a dairy farm.'
A story from my ancestors. My grandparents, among a lot of other things, used to run a hotel. One day they thought, sod this, we'll become sheep farmers - neither of them having ever worked on a farm, or with sheep before.
After ONE year they had established a reputation as producing some of the best sheep in wales, and could sell their sheep at a significantly higher price than their competitors.
It IS perfectly possibly to switch into a completely unknown field and excel at it. Your boss was an idiot and an arsehole. You are generalising incorrectly. I think at least a big a problem is programmer-led companies with no management skills or business acumen. |
| Thu 29 May | My Own Prison | >> 'These are the companies that (for instance) nursed DOS real mode applications along well into the 1990s because the owners and management wanted to rationalize that Windows was a passing fad.'
Yea, I still provided support for the DOS versions of their products while they try to sell this shoddy windows version.
>> 'Domain knowledge + barely passable technology implementation == possibility of making some money from people who need a solution in that domain.'
It also = ripping people off. I can't live with that.
To the person who said something about a sheep farm... If you read the next sentence after the one quoted from my original post you would see that I said it is not impossible. I'm sure these people had the motivation and learned how (or learned at least a little bit about it) to run a sheep farm or whatever it is they had.
To the person who said there are businesses run by software people that are the same way... name one? As I mentioned earlier a programmer HAS to know the business he writes software for. Management is only part of the deal, knowing the business you're in is the rest.
I guess I'd rather forget the whole thing. Working on 90MHZ Pentiums, having to clean my own office because no one would clean... anything, having to put up with customers threatening to kill me if I didn't get the software working, going to work every day and feeling guilty about what I couldn't accomplish... bleh...
I wish I could start over, but the way the market looks and that fact that my reputation is probably tarnished from working for this guy that's prolly a long shot.
Maybe I could start my own software business. |
| Thu 29 May | Stephen Jones | -----'Domain knowledge + barely passable technology implementation == possibility of making some money from people who need a solution in that domain.'
It also = ripping people off. I can't live with that.' -----
Is it? After all the customer would buy something else if it was in the market. At least your company is offering him something that does what he's looking for, albeit badly.
And remember that technical excellence is just one part of the equation. One of the leading pieces of English Language software is economically written and fits on a floppy, so I suspect Delphi or C++. I am sure it is technically better than much of the competition written in VB or Javascript, but the stuff written in VB and Javascript allows multii-media questions, pictures as objects and everything else a good language authoring program needs. The best the first program could do was to let you put in a picture as background to liven up the page. Their problem is that features that are trivial to execute in VB require serous effort in programs that directly access the Windows API. |
| Thu 29 May | Simon Lucy | Actually the inverse is more likely to be true, you can't run a business, of any kind, without at least a reasonable knowledge of accountancy.
You don't have to be a chartered accountant, but you do have to be able to read a balance sheet and P&L and understand what they mean. |
| Thu 29 May | Bored Bystander | (Stephen, thx for the kudo.)
It's really interesting to bring up this 'real world knowledge vs. programming skill' topic. Programmers usually jump all over the proposition that a technically retrograde approach that otherwise serves the customer's business needs is deficient.
Stephen also got it right: the customer was free to not buy the crap and to hold out for a better product. The fact that the customer selected a crufty vendor's product indicates that the vendor, no matter how backward technologically, is doing SOMETHING well that the customer values and which can't be found even in a technically superior, or higher quality, package. This kind of sticking power in the face of mediocrity generally comes about by owners who are veterans of the industry being catered to. They know what sells.
Let's also differentiate some things. There is the notion that a product line may not have the latest bells and whistles yet is stable. I described this as an aspect of hackiness. But an alternative explanation may be that the vendor may be judiciously conservative about investing in leading edge technology that they don't feel that they can get right. Much preferable to the companies that 'sunset' working and adequate products and force their users to upgrade to something fragile and buggy and 'new'.
It would be ideal if all vendors placed sufficient value upon technical competency and execution to assure that the resulting programming workplace was a nice place to work and generated top quality results. The fact is, the customer's buying habits will win out every time. If the customer doesn't notice internal badness or can work around it, they will still buy and will therefore support another one of the vertical market hack shops of the world. |
| Thu 29 May | My Own Prison | Thanks for your inputs guys.
The one thing (in my situation) that really irked me was the fact that the software just plain didn't work and this guy didn't want us fixing it. Oh, you want reports, well they don't work. Oh, you want to print the results of the MAIN function of the program, well it works but some of the results are missing. Oh, you want to change the parameters of this or that function, well they're not implemented yet. Oh you thought all this stuff worked? What's that you say? You want your money back? Nope, sorry not gonna give you your money back. Ok, I guess I'll just wait till you guys fix this stuff then.
Isn't that wrong. These guys had a DOS product that was HUGE, I mean literally dominated the whole IBM PC market (for that niche) (Not Macs). When Windows came out they didn't bother to start developing for it. Now the year 2000 comes along and bam! Hey let's hire a cheap consultant to write our Windows Versions. He may or may not write a good program but that doesn't matter to us. We just shove software in peoples faces, hype it up and they buy it. Not to mention that we treat our employees badly by bouncing their paychecks, giving them cheap equipment and working them to death in a trash hole because we can't sell the crap software. I had to use a 90MHZ Pentium with a 1GB hard disk here. You think VB likes that? No it doesn't.
After I quit, (and mind you the only reason I quit was because my paychecks were bouncing) I went back six months later to see if this guy had my money. Nope he didn't but the programmer I worked with had a brand new computer and 2 'college interns' were there 'taking phone calls'. Basically this guy is an asshole and uses people and technology to make money. In my opinion he should be behind bars.
Also, In my opinion you have to place sufficient technical value on your product or you are literally breaking the law by selling something that doesn't do what it advertises. Of course you sell it under a contract that says it's not guaranteed to do anything anyway. But isn't that stupid. I think this guy will ruin his reputation or are customers that ignorant and stupid?
I mean give me a break, is this really the way it works? If so I will not work for a vertical market app company again. Either that or I will look good and hard at them before I do. |
| Thu 29 May | Bored Bystander | My Own Prison:
I've worked for some people who have used personal threats and who have engaged in outright criminal means to conduct their businesses.
I can't believe that the guy you worked for is still in business. He is an industrial strength asshole.
If your paychecks bounced and you're in the US, contact your state's labor relations board ASAP. W2 employment is a legally enforceble *promise* with statutory laws on the books that state that employee's paychecks take precedence over vendor payments and just about anything else except tax payments to the government.
Get cracking on this if you're still owed money. I know some hard core geeks who got screwed out of their pay by a criminalistically-tending business and they bought the standard stupid geek rationale that money isn't important enough to fight for. Screw that to the max, don't be naive, make this guy PAY and get your money, dammit!
Good luck. Sounds like you had been through hell. YES, this is the exception. Most of my clients have merely sucked out loud. |
| Thu 29 May | victim, jr. | My Own Prison:
Start your own biz & show him how it's done. Use his dissatisfied customers as your target. |
| Thu 29 May | Bored Bystander | Steal his customers? Sure! Fight evil with evil. (Ok, the second 'evil' is really 'screwed over disgruntled ex employee setting a grievance...' .. heh heh..)
Unless the SOB made 'My Own Prison' sign a non compete. And guys that have this sort of attitude ('everything is MINE!!!') are usually obsessed with locking their people down. |
| Thu 29 May | Stephen Jones | If he still owes you money, and the statute ot limitations hasn't set in, sue him.
And then leave it all to your lawyer and forget about it. |
| Thu 29 May | | The fallacy in some of the posts above is that development is nothing more than coding.
Development is about creating solutions to problems in an abstract space, using software which has to be designed and created.
Most problems in vertical markets can be understood by others. The developer then is able to design solutions to them, and implement those solutions in software. That's what it's all about.
Most people are not good at such abstract thought, and of those who are, most lack the understanding of the software environment that's necessary to design to closure.
The ones who do are first class developers. |
| Thu 29 May | | Katie's description of vertical market businesses is spot on. They start with sales-oriented people who see a gap in a market for which they have contacts and marketing features.
Those people then hire developers. Because programmers are just a cost to them, they hire the cheapest they can find, and probide abysmal direction and resources.
The software thus produced is 2nd and 3rd class, but performs some vital tasks for that industry. Customers are charged high prices for the products. The directors of the companies become wealthy. Programmers are always treated as dumb cogs.
Eventually industry associations commission someone to develop a competing product that's good and cheaper, or a good developer happens to discover the niche and moves into it. |
| Thu 29 May | | >> 'The fallacy in some of the posts above is that development is nothing more than coding.'
I don't see this in any of the posts. Maybe you can point one out? |
| Fri 30 May | Lauren B. | re: non-compete clauses and the suggestion that My Own Prison should start his own business just like evil boss's, but do it right and beat boss at his own game.
I wonder...if you have a non-compete clause that is in effect for 1 year after leaving the company, can you develop software that does directly compete, but NOT MARKET OR SELL IT until after the 1 year?
loop hole...? |
| Fri 30 May | Bored Bystander | >> if you have a non-compete clause that is in effect for 1 year after leaving the company, can you develop software that does directly compete, but NOT MARKET OR SELL IT until after the 1 year?
Who would know? |
| Fri 30 May | My Own Prison (Starting to taste freedom) | Well that fact of the matter is that I didn't sign any non-compete agreement, or for that matter much of anything. He didn't want me to fill out an appication and made me sign a six months probation period agreement. Along with the standard w-2 forms and stuff. Personally I think he would have just dumped me after the six months anyway and was hoping that I would stick it out that long and be able to somehow sell him more software (I'm a programmer not a salesman or even a support tech (not that I have a problem with support)) during that time. Well I didn't stay to see month 4 and why should I have? I learned that this guy has a lien on his business from the state and that he had multiple law-suits against him from the contractors that wrote the windows software. Which explains why that windows software is incomplete and doesn't function properly. So the state depletes his checking account once a month at a time of their choosing. Nice way to get your money back eh? :)
Anyway, I could probably develop an application that accomplishes the same function and sell it. After seeing what the business is like though, I don't know why I would. Maybe I need more business expertise myself or maybe I just need to dive in and 'just do it' so-to-speak.
The thing is, I don't want to end up being driven towards a 'profit driven mentallity' so that I end becoming like this guy. I mean, you need to make a profit, but you also need to do it honestly and pride usually gets in the way because you don't want to see your business die and you're afraid to take up a new occupation. |
| Fri 30 May | Bored Bystander | I'm not clear if you're still owed W-2 pay or not from this guy. It sounded like you were and are.
If you are, call your state offices and inquire as to what department handles labor law violations like this one.
I would urge you to NOT rely on your own guesses of his ability to pay, or other outsider's observations, or any statements from him that if you press it you will drive him into bankruptcy and then you won't get anything. He is a crook and you won't know until you force it out of him using formal means.
The fact is, if a business can't pay its tax bills, then the business's owners and executives become personally liable. The same thing may or may not apply to payroll but a similar principle applies. I'm not sure that payroll goes back on the owners as personal liability but payroll does precede almost ALL other payments, such as to vendors, etc. They have to pay you before they pay the janitorial service or the SW contractors he used.
And you're not being like him or being legalistic in doing this. You're righting a wrong and you aren't a charity obliged to help a scumbag. |
| Fri 30 May | My Own Prison (Starting to taste freedom) | Yes, I am still owed W-2 money from him.
I have the bounced paychecks and the pay statements, but for the last two week pay period he wouldn't give me a pay statement or a paycheck. He did go into his file cabinet and pull out the cash to give me half of one paycheck. So he still owes me 1.5 paychecks. The thing is he sent me a W-2 form and I filed my taxes, which might have been a mistake as the amount filed included half of the one paycheck that he still hasn't payed me and did not include the one whole paycheck that he didn't even give me.
So really, I'm a fool for not seeing through any of this and pursuing it sooner. The fact is I was scared, angry and hurt and my personality is one where I'm shy, held back and I trust(ed) people too much. Guess I learned a hard lesson.
Anyway, I have went to the department of workforce development and filled out the necessary forms, we will see what happens next. |
| Sun 01 Jun | anonymous | Prisoner: 'The thing is, I don't want to end up being driven towards a 'profit driven mentallity' so that I end becoming like this guy.'
If you can make a working application, that helps the customers and the market is big enough for you to make a profit, I don't see the problem. By making a solution that helps the customers, you are doing a good thing for the society. Everybody is happy - except 'this guy' maybe.
It does take some business sense, and selling effort, though, but its not necessery to be dishonest, like 'this guy'. |
|
| Good task management practices? | Wed 28 May | Graeme Merrall |
| I look after a web programming/product engineering team at a company here in Australia. We as usual under-resourced and over-worked and we deal with work requests coming in from diverse areas of the company. We dont produce software in would I would call the classical way. Rather we have a work request come in, we service that request and then we move onto the next request.
One issue Im having is scheduling my teams time. At any one time well have a bunch of small requests requiring attention that typically take anywhere from 1 hour to 1-2 days. At the same time, well have longer term tasks that may span a period of weeks, so each person will have one long task and a bunch of smaller tasks at any given time.
The problem Im having is how to schedule this type of work. One problem is that content producers etc always want things yesterday and requirements change so it involves some shuffling around. Excel is an option but Im wondering if others have bumped up against this and what is the best way to deal with this. Project Ive looked at briefly but it doesnt seem to deal woth individuals doing ongoing work to well.
Cheers,
Graeme |
| Wed 28 May | na | www.davidco.com and look for the outlook plugin |
| Wed 28 May | Joe AA. |
I don't really like task management - it tends to fragment a team into a bunch of isolated individuals... a team in name only, not in the way they work together.
I would set some kind of objective around the type of work you expect... 'official request/project' vs 'drop-in'. |
| Wed 28 May | Mike Gamerland | I have found this a fairly common setup. Large requests with small 1 to 20 hour requests. Here is how we handle it.
Everything gets an estimate. This is usually done by the person most familiar with the area. Be certain they include the entire estimate, not just coding hours.
Assign a priority, even if it is your own, within each group
1 to 4 hours
4 to 8 hours
9 to 16 hours
16+
Now when someone is working on a large change, but waiting for user or process feedback, they can attack these smaller ones. [i.e. The change owner is out until next week, I can take on a 9 to 16 hour change].
However, they should always select at an hour level 1 less than they can do. This will avoid an issue if they get a faster response than expected or if the estimate was incorrect. If the estimate is really off (16 hours instead of 6), they should put it back into the 16+ hour pile.
Each site takes some fine tuning, but it does work once you get it setup. |
| Wed 28 May | Tim Sullivan | I wrote something that does this, based on the Excel method that Joel talks about.
http://www.uil.net |
| Wed 28 May | Brent P. Newhall | I like http://www.iteamwork.com/ as it's free, web-based, and very straightforward.
However, I'd like to know why you need task management. Is the work not getting done? |
| Wed 28 May | Graeme Merrall | Sure the work is getting done but there's 2.5 developers (I'm the half) attempting to service all requests that come in that have varying urgencies and completion times in hours to weeks.
I have to manage my own team of people as well as develop when I can and juggle these tasks and I'm finding it a bit difficult keeping everything in the air at once. Plus when someone wants to trump someone elses request I've got a clear understanding of what will be affected.
Cheers,
Graeme |
| Wed 28 May | mb | Check out the book _Getting Things Done_ (ISBN 0142000280). Nothing to do with software, but rather a system of managing all the crap that you have to deal with.
I never got to finishing the book though my life is about to hit work overload for the next 2 months. The basic idea is to get everything down on paper so it's not floating around in your mind, and some techinques at doing it. |
| Thu 29 May | Brent P. Newhall | I recommend an extremely low-tech solution: index cards. Write down each task on an index card. Then you can physically post them somewhere and point to them when somebody complains about your schedule.
One of the drawbacks of technological solutions is that they tend to become complicated. I find that it's usually best to start out with a simple, powerful system and grow it only if if proves inadequate.
One of the advantages of index cards is that they're highly visible. They provide a weight to the amount of work to be done. |
| Sun 01 Jun | www.marktaw.com | A lot of these ideas - chunking up tasks, writing them down on index cards sound like XP.... not the pair programming part, the project planning part. [1]
In a nutshell, divide the tasks into 1-3 day fragments, combining smaller tasks and fragmenting larger tasks. Then allow the programmers to choose the tasks they work on.
Every two weeks see how many tasks have been done. that's as many tasks as you can expect to get done in the next two weeks and so on. This numbr will change from time to time, especially when the project changes, but during the project's lifecycle, it's a useful estimate. Or so XP says.
The Joel Excel method is nice, but when I started using it I realized... I wish Excel took things like weekends into account and then realized that MS Project did that.
I've always found MS Project's UI to be clumsy, and it's difficult to unbreak things that are broken, but someone that knows what they're doing (certainly not me) can get it to do some cool things.
[1] http://www.extremeprogramming.org/rules/iterationplanning.html |
|
| Image Processing Books | Tue 27 May | S. Tanna |
| I seem to have had a lot of difficulty locating good books on image processing algorithms (any programming language), things like color balancing images, image transforms (like photoshop style effects) or raster drawing algorithms.
The trouble is a lot of books I have run across are either too basic (here is how to display a bitmap in Windows) or academic-type books that do seem to not address the issues I want at all, or in a practical way (example: they suggest stuff like a recursive flood fill, or recursive polygon fill algorithm - not the best way in a real program)
I did get some ideas from game programming books (things like fast polygon fill algorithms - much better than the academic type books)
Any suggestions for books on this topic |
| Tue 27 May | Mitch & Murray (from downtown) | 'they suggest stuff like a recursive flood fill ...'
If you can point me to a flood fill algorithm that is not recursive I would be most grateful. |
| Tue 27 May | S. Tanna | My original post was unclear. I was meaning to saythat many acadamic books will suggest recursive floodfill or recursive polygon fills as the method to fill a polygon. While they work - they are poor solutions in a typical real program - and better solutions are possible.
To answer your question: well aside from unrolling the recursion, queues, etc. it depends on what you are trying to fill, although I do believe non-recursive algorithms exist
If you are trying to fill a polygon:
A typical academic book may suggest recursive flood fill or variations such as recursively walking along scan lines to look at the pixels above/below. These are less than ideal solutions for many real world problems. |
| Tue 27 May | Heston Holtmann | - The Pocket Handbook of Image Processing Algorithm in C
http://www.amazon.com/exec/obidos/tg/detail/-/0136422403/qid=1054057589/sr=8-1/ref=sr_8_1/102-0194155-1572154?v=glance&s=books&n=507846
- The Graphic Gems I,II,III,IV,V Book Series
http://www.acm.org/pubs/tog/GraphicsGems/
Lookup by category and buy the book you need! |
| Tue 27 May | Nat Ersoz | This is probably not what you want, but...
The book 'Digital Filters' by Hamming is an extremely thorough survey of digital filtering techniques. It threads the needle between academic and practical engineering. For example:
. It contains no proofs.
. It contains no code.
It does present a comprehensive analysis of FIR and IIR filters. And, for image processing, FIR filters are a common method used for enhancing a 2D image.
For example, a common flicker filtering transform for TV is [1,2,1] (FIR coefficients for a y-axis filter).
If you're interested in video edge enhancement, then some sort of high-pass filter would be applied. To blur an image, low-pass. To stretch an image, an interpolating filter - taking the form of a rotating coefficient FIR filter is the best choice.
Anyhow, I'm not aware of a book with pre-worked solutions 'for this use that'. |
| Tue 27 May | Colin Evans | A similiar one to the Hamming book above is Numerical Recipes in C. It focuses mostly on scientific computing including implementations of matrix algorithms, but if you need an efficient algorithm to compute eigenvalues, do a FFT, or normalize a matrix, this is one of the canonical references. The text focuses on applications almost exclusivley. |
| Tue 27 May | Krzysztof Kowalczyk | Assuming that what you want out of such a book is a help in achieving some programming a goal (as opposed to just learning the stuff without the intention of implementing them) you can alternatively try to look into open-source software that already does things you want. Off the top of my head: GIMP, PIL (Python Imaging Library), ImageMagic/GraphicsMagic. It might be much harder to see the forest but on the upside you might just find the code you need. |
| Tue 27 May | Nat Ersoz | Good idea - go for the Gimp source. |
| Wed 28 May | Kent Design4Effect | My 2 best books.. And I have many, are:
'Practical Image Processing in C' by Craig A. Lindley
'Advanced Graphics Programming in C' by Roger T. Stevens and Christopher D. Watkins |
| Wed 28 May | Dan Maas | 2D image processing is a shockingly undocumented field, especially in comparison with 3D graphics. The knowledge exists, it just isn't in print.
e.g. The **ONLY** book I know of that describes practical algorithms for resampling, convolving, or warping images is Wolberg's 'Digital Image Warping.' (it's out of print, but you can buy it from the author - just Google for 'Digital Image Warping').
A generic signal processing text may help, but most of those don't approach the special aspects of 2D image processing. e.g. how to work with signals that must always be positive, how to deal with the pathetically few quantization levels of 8-bit color, how to use integer or fixed-point math (not as simple as it seems), and how to do 2D convolutions efficiently (the naive algorithm is far too slow for most applications).
I've never seen many of the cleverest 2D techniques in print, anywhere. Like the fact that you can approximate a Gaussian blur with repeated box blurs, or fast algorithms for box filtering. I wish stuff like this was actually written down somewhere. (I've got a lot to learn myself - I've been looking at this for a few years, and there are still plenty of things that Photoshop does that I can't figure out how to do :)
Poke around on www.stereopsis.com sometime. It's a pile of stuff by Michael Herf, who is a real 2D graphics whiz. You may find some really good nuggets of information.
P.S. if you learn one thing about image processing, and nothing else - learn how gamma encoding works. (128 + 128 does NOT equal 256 in 8-bit color). This fortunately is quite well documented - Google for 'Charles Poynton' :) |
| Sun 01 Jun | Dan Maas | I just thought of one more reference: Jim Blinn's compilation books. Specifically, 'Jim Blinn's Corner: Dirty Pixels'. Blinn carefully deals with some of the deeper subtleties of image manipulation - like how to get really truly correct results with fixed-point math (getting almost there is easy; getting all the corner cases right is much harder). I suggest reading this after a more basic text.
BTW, I was very serious when I said 'Digital Image Warping' is the only book that describes operations like resampling and rotating images. If anyone knows of another book (or anything other than the original IEEE papers) that describes these algorithms in deal, I'd really, really like to know myself! :) |
|
| Spanish forum about software development | Sat 31 May | José L. Sánchez Navarro |
| Ive a blog about software development in Spanish, and Ive added a discussion forum like this. Ill invite to all who speak Spanish to visit and use it. I know there is a lot of people that visit this forum that speaks Spanish, but we dont post anything because we arent not so fluent in English. At this new forum we have our chance.
The URL are http://www.avemundi.com for the blog and http://www.avemundi.com/debate.php for the discussion forum.
I apologize for my English. Regards,
José Luis
-----------
Tengo un blog sobre desarrollo de software en espańol y acabo de ańadirle un foro de debate como este. Quiero invitar a todos los hispano parlantes a visitarlo y utilizarlo. Se que somos muchos los hispano parlantes que visitamos este foro pero no posteamos por dificultades del idioma. En este nuevo foro tenemos todos oportunidad de hacerlo.
Las URL son http://www.avemundi.com para el blog y http://www.avemundi.com/debate.php para el foro de debate.
Saludos,
José Luis |
| Sat 31 May | Brian R. | That's funny 'cause I can read Spanish, but not speak it, nor write it. So maybe I will be a quiet visitio over there. :) |
| Sat 31 May | Brian R. | What exactly is a blog? |
| Sat 31 May | S.C. | Weblog:
http://www.blogger.com/about.pyra |
| Sat 31 May | Stephen Jones | Cojonudo |
| Sat 31 May | Printer Freindly | Blog = Web Log = Registro Web |
| Sat 31 May | Brian R. | Got it. Thanks for the web logger link. |
|
| Small Business Outlook Email Organization | Fri 30 May | sedwo |
| For anyone involved with a very small (1-2 person) small business, yet are still required to operate as a larger one, and be efficient; how do you automate and organize the email system?
My one man outfit has currently about eight (8) emails that require maintaining. Everything from support@, sales@, webmaster@, to myfullname@, etc. I have chosen to use Outlook 2002 and thus far have managed to kludge together a mediocre system with a combination of Rules and their relative assorted directories under the main account. Replies to the emails are automatically under that specific email name and then once sent, copied to its sent subdirectory. Yet the main Sent directory gets a copy too. (get it?)
Anyway, its the best hack job that Ive been able to accomplish. But there is one exception, that I havent been able to find any info, anywhere on how to mimic.
Setting up a Hotmail account under Outlook 2002 immediately BRANCHES its *own* tree structure with its own Inbox, Deleted Items, Sent Items..., etc. If anyone has any idea how to do that for each of my seperate email business accounts, I would be indebted to you.
So can Outlook 2002 do it? ...or... What other tool might be better suited? |
| Fri 30 May | Philo | As far as rules and folders are concerned, I've found Eudora to be generally better than Outlook. However, the latest versions of Eudora are becoming memory hogs, so now I'm trying Pegasus mail, though I'm not sold yet.
You might also look at Popfile, which is a bayesian/keyword filtering mail proxy, and can create headers in your mail which your mail client can then filter on.
Don't know if this directly answers what you're asking?
Philo |
| Fri 30 May | sedwo | Excuse the poor articulation of my problem.
But put very simply, how do I make myself look and act like a multiperson organization very efficiently through email?
I forgot to mention, that Outlook is also the tool of choice for the reason that it directly 'syncs' with Pocket PC's. And I sort of need that feature. |
| Fri 30 May | Philo | Ahh... sorry
Well, I'll assume that the hotmail is solely for personal use, because no credible business communications should ever, ever be done through hotmail.
As for dealing with the inbound, use Outlook's 'group by' or simply use different folders.
Mind you, if you're communicating with the same person, don't try to do 'talk to my sales dept.' when that's you - it's transparent and silly. There are ways to handle this without giving away the game - 'let me get some sales materials and get back to you' or something similar. This is actually a double-plus because if you can play it right, the client thinks you're doing them a favor by handling everything for them instead of handing them off to a half-dozen people (this is how some large companies handle preferred clients)
Philo |
| Sat 31 May | somebody | >>
Well, I'll assume that the hotmail is solely for personal use, because no credible business communications should ever, ever be done through hotmail.
<<
I believe that sedwo simply named Hotmail as an example of what he wants. He didn't say that he plans to use Hotmail for business, but rather that he'd like his separate business accounts to branch out independently into their own tree structure (as the Hotmail account does).
I don't know how to do this but I'm hoping someone else does and answers! |
| Sat 31 May | www.marktaw.com | I like Pegasus Mail, but don't know that it could do what you want. http://www.pmail.com/
I also like http://www.mailshell.com but I don't know that it could do what you want.
What about that six degrees thing that Joel was promoting a while back? http://www.creo.com |
| Sat 31 May | Chris Altmann | IMAP accounts have separate inboxes etc. in Outlook 2002 IIRC. |
| Sat 31 May | A.T. | Outlook can cope with having its mail store on a remote server, or on the local hard disk in a .pst file (what Outlook 2002 calls an ('Outlook Data File') Since you're a small business, you're probably using a .pst file rather than an Exchange server!
The good news is that you can configure as many .pst files as you like. Each one will look like a seperate mailbox with its own inbox, outbox, calendar etc. You will still have to rely on rules to move emails to the appropriate place. Do send a few test emails to check who they are 'from'.
To create a .pst file, use 'Import/Export' on the 'File' menu. To open it, use 'Open->Outlook Data file' on the File menu. Oh, and 'View->Folder List' if you haven't already. |
| Sat 31 May | Frederic Faure | And if you have an ADSL connection with either a fixed IP or willing to use a dynamic DNS, you could also run your own mail server at home and set up different e-mail aliases (support, contact, etc.) to hide the fact that they end in your mailbox ultimately.
Mercury Mail Transport System for Win32 is pretty good. Free, fast, easy to use.
http://www.pmail.com/ |
| Sat 31 May | Eric W. Sink | ---
put very simply, how do I make myself look and act like a multiperson organization very efficiently through email?
---
I can't help but ask: Why? Is all that deceit really worth the effort?
Customers aren't stupid -- they can figure out who they're dealing with. |
| Sat 31 May | sedwo | It is not meant to deceive but to create the proper infrastructure of an efficient corporation. This also improves the scalability issues; as the company grows, the proper systems will already be in place and simplify transitions. Being organized and automated as much as possible are key concepts to lowering one's overhead (especially in small businesses) and working efficiently; leaving me more time to focus on product development and such. As opposed to wasting my time sorting emails in this case. |
| Sat 31 May | Kent Design4Effect | From the mail server not the client
If you have a domain name, change the mail server to forward it all to the appropriate accounts. |
| Sat 31 May | Kent Design4Effect | What deciept.. that's not deciept, it's business
If you have 2 email addresses bob@site.com and billing@site.com do you care that they go to the same person? Of course not but the person who's sending it to billing@site.com won't be wondering if he's sending his billing question to the right person. |
|
| How should a nondesigner address a portfolio site? | Fri 30 May | Philo |
| Im finishing up a website/portal that I plan to put on my resume. Ive done 100% of the work (database, business layer, presentation layer) *except* that the initial designs were by a graphic artist in photoshop (implemented by me in .Net).
How would you explain this to a potential employer? Would you try to explain it in the resume, or just wait until the interview?
Philo |
| Sat 31 May | www.marktaw.com | I think you'd tell them that these were the sites you worked on & show them - screencaps or links might work. You should keep screencaps for resume's in case the site changes drastically, though a current link can still work if the underlying structure is still the one you worked on.
The fact that you worked on an amazon.com instead of a varsitybooks.com still speaks volumes about who you are, and who thinks you're valuable. |
| Sat 31 May | Guy Incognito | I wouldn't let it out until the interview... and then I'd beat the interviewer with a sack full of rusty doorknobs. |
| Sat 31 May | Kent Design4Effect | Go Gray.
If you are the best, and have experience behind you.. Brag about it.. Say 'This is what I've done, you could be next!'
Otherwise, go gray. diminished; it'll make the work you've done (presumably colour) stand out.
Show snapshots of your work, 12-15 seconds apart and in your sequence put a thought half way between between each shot in a bright colour.
Do you want the music too or what?
Goes something like this:
1>Screen dark.. Sample 1 fades in from background.
2>Just before solid visible, a deep base note, and a pause
3>Text comes on.. It's a question... (ie. 'Would you hire this guy'?)
4>Pictura fades out while viewer is wondering about last question.
5>Picture 2 comes in, a little faster. More vibrant colours, as if to answer the question.
6>Say something solid about yourself (ie. 'He can do it!')
I don't want to go on.. (yea yea your welcome), but the point is with space between each picture.. You still have a 10 minute presentation between each shot.
Unlike flipping through a scrap book.. Consider the viewer's emotion between each shot. Emotion is the #2 inspiration for a purchase.
I once heard 'It is better to remain silent, and be thought a fool, than to speak up and remove all doubts!' |
| Sat 31 May | j. | Just say you are not a designer. |
| Sat 31 May | Clutch Cargo | Websites should be addressed by 'http://' by designers and nondesigners alike.
But really, just put on the resume the work that you did on the site. That's the purpose of the resume. So if you designed the business layer and the database then write that's what you did. |
| Sat 31 May | Philo | Uh, Mark and Kent, I'm not sure you understood the question (since both your suggestions highlight the one part of the website I *didn't* do)
Website/portal contract gets signed.
Graphic artist spends a weekend laying out 3-4 screen mockups for the site in Photoshop.
I then spend three months building the database, business layer, and website, all the functionality, proximity searches, admin and maintenance sections, pricing program browsing and maintenance, scheduling calendar, document storage, full-text searching, etc, etc, etc.
I fully intend to link to both the .com site *and* a fully functional demo on my own website.
My only question, in the interests of truth in advertising - I'm not a graphic artist, and I don't want anyone who hires me to think I did 100% of this site. I only did 97%, but that other 3% is incredibly critical.
Thinking about it, I think I might put get the artist's permission and put something like:
*Sole developer on www.domain.com. (Graphic design by John Doe)
Philo |
| Sat 31 May | www.marktaw.com | Philo - yeah, it kinda sucks.
I guess the alternative would be to list the domain names / parent companies, and describe your duties there without a photo.
But, I still think a picture is worth a thousand words and if have a link or screencap, it can show off the depth & complexity of your work. Sure you didn't do the design work, but did you create an online store with 3 products, or an online store with 5,000 products? They may have questions about your work that you can't anticipate, so having a link allows them to look at it first hand.
You can say that you created an online bookstore that would make recommendations based on what you browsed, but they're not going to quite understand the depth of it until they see amazon.com.
Or, you can treat it like any other development job and say 'I worked on MS Excel. My duties were.....' and it's their problem if they don't have MS Office to look at it. |
| Sat 31 May | Jim S. | Philo,
The experience of working with graphic artists is a plus, not a negative.
On the resume:
'Sole architect and developer of all funtionality: proximity searches, admin and maintenance sections, pricing program browsing and maintenance, scheduling calendar, document storage, full-text searching. Implemented Model-View-Controller architecture in VB.NET. Designed database schema. Worked with graphic artists from initial concept to integration of design artifacts into final product. Initial version went live in 3 months.'
On the portfolio website:
' Here's my last project. It's 100% my own work, except graphic design by [insert name here].' (Provide a link, which will earn big points and maybe some work from the designer) |
| Sat 31 May | Kent Design4Effect | Yes, I agree..
Take credit for a good designer not a good design.. |
| Sat 31 May | Kent Design4Effect | Don't put 'Sole Developer', sounds too self centered. Just put DEVELOPER.. noone will care whether or not you drew it. |
| Sat 31 May | Kent Design4Effect | C'mon Philo, lets see the damn thing!! Don't be bashful
Give us the URL, maybe you'de be better off not mentioning it (hahaha) |
| Sat 31 May | Philo | It's not my site to unveil. We're delivering it to the client next week, and I don't think it's my place to publicly post the URL to the website in development prior to customer acceptance.
Once they go live and it's on their domain.com, I'll happily post the final URL. :-)
Philo |
| Sat 31 May | Must be a manager | Philo, almost every decision maker in this area understands that artwork is an add-on to the main task. If you say you built the site, they should understand what you mean.
It's like house architects saying they designed a building; no-one presumes they did the actual painting of the colours.
To emphasise the points, you could, as you propose, roll out the main functionalities you provided, and just not refer to the artwork. I don't think it's an issue. |
|
| CHMOD and Web Server Question | Fri 30 May | John Topley |
| Is it possible to use CHMOD to protect a directory on a web server that doesnt have an index file, so that it causes a 403 error instead of displaying the default Apache directory listing? The catch is that I still want to be able to link to files contained within the directory from other pages. I dont have access to any of the Apache configuration files.
Thanks in anticipation. |
| Fri 30 May | Brad Wilson (dotnetguy.techieswithcats.com) | What do you mean you don't have access to any of the Apache configuration files? The file would be '.htaccess', in the folder itself, with just a couple lines of text. You can't upload files to your space, but you can run chmod? That would be pretty odd if true... |
| Fri 30 May | John Topley | Sorry Brad, a major misunderstanding on my part! So what do I need to put in .htaccess?
Thanks. |
| Fri 30 May | Andrew Hurst |
Options -Indexes
Off the top of my head, you might want to check once over on http://www.apache.org/docs |
| Fri 30 May | John Topley | fc.
Thanks everyone. |
| Sat 31 May | Chas | Not as fancy as modifying htaccess, but you can put this in an index.html file in the directory in question:
Access Denied
Even better, that works in all webservers. |
|
| To Splash or Not To Splash | Fri 30 May | Kent Design4Effect |
| There are a growing number of voices on the internet saying that a splash screen is a bad idea and it is better to get right to the site rather than prime them with some awsome multimedia.
I looked around at the Best of the Web sites and Id say that only about 30% have splashes.
Any opinions on this matter would be greatly appreciated. |
| Fri 30 May | Geoff Bennett | When it comes to the web, I think splash screens are a stupid idea. One of the worst aspects of the web is waiting to get to content. This is built in, even with broadband. If you throw up a splash screen, no matter how awesome it is, you're just delaying the content even more.
Splash screens for desktop applications give you something nice to look at while the app loads. Of course, there are people who insist on putting a delay behind the splash screen because their application doesn't actually need one, and that pisses me off. Again, being made to wait for no reason other than vanity. |
| Fri 30 May | Kent Design4Effect | Thanks for the reply Geoff, yep that's what I'm hearing. Search engines aren't crazy about them and people go to the web to get information not watch a splash.
You can sort of give an animated rundown on what the site is about and that might keep'em at the site a little longer but the wait!
Maybe I should use a cookie so they only have to see it the first time they come to the site. |
| Fri 30 May | Andrew Hurst | I hate spash screens, and no sites I regularly visit use them.
Though I do think that by asking that question on this forum, you will get a biased answer. Most of us here are developers and (in my experience) browse the web for content, not pretty pictures. Most of the consumer public I think uses the web for entertainment like TV, and thus might not mind the splash screens as much... |
| Fri 30 May | Geoff Bennett | IMNSHO, you'd be better off using the intro animation as a link from the main page, if you're thinking about a tour style clip. Nice big button towards the top of the page.
Allow *me* to decide whether or not I want to sit through it. I might not be a silly as you think and may be able to figure out what's on your site without much hard work, so I don't want to be burdened with the extra download and waiting for the animation to finish - even once.
Newer users may get something out of it as far as a tour is concerned, so they can click the button and get the tour. |
| Fri 30 May | Kent Design4Effect | Helluvan idea Geoff. That's what I'm going to do. Put a 'What we're all about [requires Flash]' button on the main page and skip the flash. Macs don't like Flash 6 anyways.
You know, you just saved me probably 2 days work.
The Ford Motor Company got so much negative feedback about their Flash splash they they not only killed that but took ALL the flash of the home page and at the same time Macromedia is spouting off about how even Ford is using flash.. haha, wonder if they know? |
| Fri 30 May | Here Th. Ere (e-Very where) | I have always feeled that these 'splash screens' (didn't know they were called like in the web as well) had the ego
of the designer in mind.
I always press [skip intro] if available. |
| Fri 30 May | Kent Design4Effect | Excellent feedback I've gotten on this in only about 30 minutes. Actually constructive critisizm.. It's great.
I have to tone it down, that's surely a problem with my web programming, I approach every site like I have to blow all the others away.
So that sort of hits where it hurts but.. I HEAR YOU |
| Fri 30 May | Chi Lambda | Designers have a natural impulse to put in a splash screen as if to say, 'this is the beginning.' But the Web is non-linear and thus a good site design is one that allows a surfer to enter any page on a site and find out immediately where they are in the navigation, where they can go, and possibly where they've been. |
| Fri 30 May | tapiwa | I second what the others have said.
Skip the splash. Like Geoff said, if you have some really cool flash you want to show the world, have an 'intro to the site link'
I too always skip the splash screens. That and all flash sites are a big no no for me. Totally unintuitive most of the time, and you are never quite sure where to click.
Some folk like them though.... Java applets with ripples anyone?? aaarrrggghhh!! |
| Fri 30 May | Chi Lambda | >> 'Java applets with ripples'
The horror. The horror. :) |
| Fri 30 May | Splash Hater 666 - Death to Splash Screens! | Splash screen SUCK on the web.
They SUCK very, very much!
There should be a SPLASH-Screen Killer software, like there is popup killer software! |
| Fri 30 May | Nekto | Splash in web sites could be both good and bad.
It depends on site content.
You could set cookie to show splash only to first-time visitors.
In applications it is very bad if they are 'stay on top'. I could run several apps same time and starting app blocks access to already opened app until it loads :(
Mozilla made it well - it has splash, but i could switch to other app and splash will go to background. |
| Fri 30 May | Philip Dickerson | Since you may be getting a slightly biased developer's opinion here (I also think 'splash screens' are a bad thing on websites, and I immediately look for the 'Skip Intro' link when I encounter one), here is an opinion from a usability authority.
From Jakob Nielsen's Website http://www.useit.com in responses to one of his 'Top Ten Web-Design Mistakes' articles:
Mike Garrison writes:
I think that splash pages may not be one of the top-10 web mistakes, but they are probably the top useless web fashion of the past year or two.
Why?
- No one wants to have to access it every time, so getting to it really annoys anyone who is not a first time user.
- But for the first time user, it adds a useless step between them and whatever brought them to the site in the first place. So it really annoys them too.
- Most new users will come via a search engine anyway, so they'll probably miss the splash page.
- If you make it the default highest page in the server (eg. http://www.useit.com/ ) then when people try to find your home page by chopping off a URL, they get the useless splash page instead.
- They ruin the back button. (Your #1 new mistake.)
Jakob's reply: I agree: splash pages are useless and annoying. In general, every time you see a splash page, the reaction is 'oh no, here comes a site that will be slow and difficult to use and that doesn't respect my time.' Splash pages are a sure sign of bad Web design. |
| Fri 30 May | Philip Dickerson | As an alternative to a 'splash screen' that you need to wait for before getting to the actual content, consider designing the site with a visually 'splashy' primary/home page that has content and links plus visuals. See for example http://www.msnbc.com or http://slate.msn.com (or even http://www.disney.com if that's your style) |
| Fri 30 May | GiorgioG | While you're at it - you may want to keep your web site's navigation elements around your 'What we're all about' intro. The reason I hate intros so much is that I'm only given 2 choices, watch or skip to the site. Give me real choices =) |
| Fri 30 May | Li-fan Chen | If you are one of the believers in content. Then you shouldn't have to worry too much about what your portal or main page is saying (or not saying). Keep it simple. Get a little flashy if you have to. But make sure the gut of it all--the real site behind the portal--amounts to something that will bring back your audience. If google or netizen links are referring lots of people to some of your hidden away pages, who cares about your portal? What really matters is you optimize what people do look at, not what you think they look at. By checking your web logs you'll discover that some pages gets all the attention--and probably aren't getting most of your attention. |
| Fri 30 May | richard | I think splash screens were always considered bad. Chief among their crimes is arrogance. The user came to your site for a variety of reasons. The probability of one of those reasons being to admire some artists 1337 flash sk1lz is pretty low. |
| Fri 30 May | Philo | kent, if you want to 'blow all the others away' then make your homepage a simple, elegant, central point from which you can reach any essential information in one click.
I reference
http://www.marktaw.com/
http://www.nextstepcommerce.com/
http://www.audi.com/ <- flashy sales site, but still quick and easy to navigate
BTW, don't forget that a lot of people are still on dialup, and your splash screen is going to be a *real* time-waster for them...
Philo |
| Fri 30 May | Kent Design4Effect | That's what I'm thinking, tone it down.
Okay, time for a good laugh, and I know you will all tell me everything I've done is wrong but this is what I've learned.
My first attempt at site to blow them away was www.webartcentral.com where I got nothing but positive feedback on the (now I see too long) splash.
I also used my own design for navigation which noone could understand so I put a Flash animation on the first page to teach people.
It uses frames but I found a really neet way to frame up stray pages and it got listed in several engines. I'm killing the frames idea too. Again too complex.
Although the site looks good I don't like it.. Too complex.
I'm disabling it over the weekend. Time for something simpler.
I didn't like the name either because it sounds like a site that's trying to sell something. (Cheeezy name eh?)
I'm designing another one now and plan on implementing the best suggestions I can get to see what it looks like at the end. |
| Fri 30 May | www.marktaw.com | Phil - Thanks!
I will have to point you to a fan page I made for an old video game that does use a splash page:
http://othala.pair.com/~markzill/ar/
The splash page looks like a screen cap from the game, and I think anyone who visits the page would get a kick out of it. The next page also looks like a screen cap from the game, but from inside one of the shops.
But there's no animation to load, you can click through at any time.
I was worried about the click through instructions falling below the fold, and do realize the occasional visitor will just stare at the screen waiting for something to happen, but I really wanted to give it a clean look. I'll probably add a 10 second redirect for those people. |
| Fri 30 May | Kent Design4Effect | Re: MarkTAW.com
Too much text on the page. Lighten up.
The headers don't stand out against the body well enough to quickly scan the page to find areas of interest.
Too text intense.
Sections need distinct gaps..
Use white space effectively to draw attention
A good rule of thumb is that a web page should have at most 60%-80% of the text that a printed page would have. |
| Fri 30 May | Kent Design4Effect | On no Mark.. You can't be serious..
Makes me want to pull out my Commodore 64 or have a game of pong. |
| Fri 30 May | Kent Design4Effect | Does the game require a 3D accellerator Hahaha..
Might want to consider tweaking the resolution on that Commodore 64 of yours. |
| Fri 30 May | Philo | Kent:
Shoe.Foot(Switch)
*The green in your menu links is hard to read.
*I *hate* 'Contact Us' forms. Use an email address.
*You harp on Mark for 'too much text', yet look at your site - I got bored reading after the second sentence. Mark's page has a lot of text, but they're bulleted ideas - bite-size memes that are quickly scanned and assimilated. Your page could just lapse into Lorem ipsum after the second paragraph and I'll bet you'd never get a single email about it.
*Assuming there are people who want to read all that, the animation at the top makes it difficult to do so - it keeps pulling your eyes away from the text.
*I'll assume this is a work in progress, so I won't comment on the empty framework at the bottom.
*Not sure why you have both top and left side nav bars - just put the two links from the left at the top.
*Purely subjective - your graphic says to me 'old money', like a bank or accounting firm, not web design & hosting.
HTH,
Philo :-) |
| Fri 30 May | Stephen Jones | Mark,
I like the game site. Neat.
Philo,
The audi site seems awful to me. I can only get the home page to half load in Netscape presumably because of the trick of having the bottom right jump to the top right when you reach 1024 x 768 resolution. It still doesn't look that good then, and a 1280 x 1024 looks positively awful. |
| Fri 30 May | Stephen Jones | Kent,
The dual approach of splash screen followed by wordy home page doesn't work.
And forget the flash animation. The animation itself takes your attention, and you quite forget what it is talking about. More importantly, if you are worried about people navigating your way change it. Nobody wants to learn something new to navigate your site.
|
| Fri 30 May | Kent Design4Effect | Thanks Steven and Philo, the WebArtCentral's getting scrapped. I'm changing the other one right now. |
| Sat 31 May | www.marktaw.com | Kent - I'm very conscious of the visual ownership of content on the page. On my site, the top section owns the rest of the page. I'm too lazy to re-program the left nav based on each section, but I would like to do that one day.
Since we're critiquing sites, on webartcentral I don't get that sense. I don't know if clicking on something in the top area will change the sidenav, or if clicking the side nav will change the top nav. What are the major categories & what are the sub categories and what is the meta information?
Here's a quickie mockup of what I think a traditional / stereotypical website layout should be:
http://www.marktaw.com/temp/ownership.gif
The dark blue box is top nav. The light blue box is left nav. The gray box is headline. The rust colored box is sidebar. The dark gray box on the bottom is site meta information.
I think the ownership cascade is obvious. The top nav visually owns the left nav, which owns the headline, which owns the sidebar. The bottom section breaks this cascade and is obviousy unrelated to the rest of the site.
If you think this is just because of the color schemes, check this out:
http://www.marktaw.com/temp/ownership2.gif
Granted this is a very western top to bottom, left to right centric site, but hey, that's where I grew up.
Re: my color scheme... I happen to like muted colors. It's not a professional / corporate site, it's a personal site, so I get to choose the colors.
Re: My game tribute site... IMHO that game was way ahead of it's time and no game yet has been it's match. |
| Sat 31 May | Kent Design4Effect | Mark.. it's great !!!
No really,I was wondering about that arcade site but you have it. Even the hierarchy!! |
| Sat 31 May | Kent Design4Effect | On muted colours
It's where the industry is going. Your not wrong, use the same colour balance and decrease the saturation. |
| Sat 31 May | Kent Design4Effect | Mark... Sorry I respond to one paragraph at a time..
Get out much???
Way ahead of it's time... Man.. Don't date yourself!!
Do youplay any online 3D real time games? |
| Sat 31 May | www.marktaw.com | I don't play any online 3d realtime games. I don't play any online games... I mostly play either for 8 hours straight and beat a game, or in bits and pieces. I usually go for weeks without playing anything and then pick up a game in a store and play it until I beat it.
Alternate Reality really was ahead of it's time, and I honestly don't think any game matches it's depth & complexity.
The one feature that puts it over the top for me is that the game kept track of not only your major quest actions, but your minor interactions with others. People would react to you differently based on what you were wearing, how you treated other people in the game, what alliances you had. Just random encounters would go differently because you had treated someone poorly before, or a shopkeeper would haggle with you differently, or you could walk into a bar and expect to be fed because you'd made friends there.
The sunsets in The City have to be seen to be believed. The entire pallete of the the buildings changes slowly, subliminally. It's not like Sim City where they're proud they can represent 2 or 3 times of day, every minute, every hour the color would change until the sun set.
Then there's the Sims-like aspect where you had to balance your goals with things like hunger, and how tired you were.
And there's the plot, which was never fully realized, but involved you realizing that you're actually in a computer simulation, and you have to choose whether or not to continue living inside the simulation, or overthrow our captors. (hmmmmm...)
So now you tell me whether or not these 3d realtime games do that. Maybe those everquest type games with real working economies compete on some level, but we're talking about a game that was released in 1983 on a machine that ran something like 2.33 mhz. |
| Sat 31 May | Kent Design4Effect | Still up eh Mark??
Checked out your site & left some good feedback.
You're on the right track... Long road isn't it?
I've changed my new site based on the feedback from this board.
Sending 25% as much graphics for a site that is a better design thanks to it's members.
TO ALL YOU GUYS ON THIS SITE..
THANKS..
- Kent |
| Sat 31 May | www.marktaw.com | Kent - I've been a night owl my whole life. |
|
| Database Version Control++ | Fri 30 May | Andrew Hurst |
| (Note this general topic has been discussed before:
http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=18896&ixReplies=5
http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=26754&ixReplies=4
but I want to bring a new look to it)
How do you version your database? A project I was on a while back (mod_perl && mysql) used to dump the whole thing to one big .sql file (using mysqldump) with every change and check that into the source repository. A process that I thought was error prone and cumbersome.
Lately the project Im working on (Oracle, Stored Procs, Oracle Forms, Perl, Excel VB) has everything versioned except the database schema. I version the procedures, triggers, and functions by saving all changes to flat files, and checking those into the CVS repository. I keep regular backups of the database, though it has no real versioning.
What I would like, is the ability to use CVS commands on my database schema. Tell me the changes in this table between 10/10/2002 and 10/10/2003. And do it in ALTER TABLE syntax as well, no CREATE TABLE diffs for me. Show me the differences in my version of a script with the CVS version. What roles have been added to the schema in the past week? Tag the current schema as version-3_4. etc. etc.
Does anyone know of any tools that do this already? Im working on my Masters (in Computer Science) and I was thinking of writing a few papers on this subject, and maybe implementing a working prototype using bunches of stored procedures in Oracle, or maybe building it into PgSQL. Who knows how far this could go. Ive already got a few ideas for how I would implement this. Id probably tie it into CVS, somehow.
I saw in one of those other threads that Visual Studio.NET does this a little already. Is it useful? Does it go far enough? |
| Fri 30 May | anonymous | In some projects, the entire database is re-created at each build from SQL that's kept in CVS like ordinary code.
This guarantees that you always have code that will create a working database when the software is installed on the production system. |
| Fri 30 May | Duncan Smart | Andrew,
VS.NET and the database tools that are built into SQL Server Enterprise Manager (basically the same thing) will allow you to save a change script when you make a schema change. In VS.NET they only work with SQL Server and Oracle.
A tool our DBA loves is the SQL Compare bundle from Red Gate: http://www.red-gate.com/sql/ -- allows you to do a compare on db's schema and data if you wish. |
| Fri 30 May | Duncan Smart | ... oh, but they're SQL Server only too. |
| Fri 30 May | Philip Dickerson | This depends on whether you consider the 'master source' of the schema to be the database or the script that creates the database. The approach that we have taken is to have a database script that we keep in SourceSafe that we modify when changes are needed and use the script to re-create (or update) the database - the actual database is the result, not the source of changes. All changes to the script are versioned and checked in to SourceSafe.
I took this approach a little further and developed a database script that can create a new database or update an existing database (preserving the data) from a single script. This is done by deleting all the keys, indexes, etc; creating a new temporary table for each table; transferring the data from the old table if one exists and then deleting the old table; renaming the temporary table; at the end creating all the indexes, foreign keys, etc. Most of this work is done with a collection of stored procedures. This allows for changes to the schema, keys, triggers, SPs, etc, and ensures that all databases are identical if the latest version of the script has been run; there is no dependency on incremental conversion scripts.
We also have a version table in the database schema and the script includes an INSERT statement into this table that is built using SourceSafe keywords so that the revision number and revision date of the script are inserted into the version table. |
| Fri 30 May | Justin | Second vote for the Redgate product, although it basically generates script against the Source and Target DBs and does a 'diff' on them.
The problem with this is that you actually need to know if the table structure is different, not if the script is different.
Eg. If I notice a new column has not been added to my local working DB and add it, unless it is in the exact same place as the master DB, the SQLCompare will flag the tables as being different.
Nit picking, I know but its a pain if you have a hundred tables and 99 of them are 'different'. On the other hand, it does generate 'Alter' scripts and data migration for you.
I can think of a lot worse ways to spend the money.
Slightly off topic: Have a look at Martin Fowler's Evolutionary Database work at http://martinfowler.com/articles/evodb.html |
| Fri 30 May | Justin | PS We have a similar system to Phillip's. |
| Fri 30 May | Chris Winters | I'm pretty sure the Perl module Alzabo [1] can do this for you. It's a big project and does more than data modelling, but it's fairly mature and well-supported. (I think Dave recently mentioned he's been working on it for 3.5 years) It's also on CPAN.
[1] http://www.alzabo.org/ |
| Fri 30 May | Brent P. Newhall | What is error prone and cumbersome about doing a mysqldump and checking that into CVS? Especially if it's completely automated (I can think of no reason why it wouldn't be)?
It seems like a simple, reasonable solution to me. |
| Fri 30 May | Andrew Hurst | The reason why I call mysqldump error prone and cumbersome, was because of my work on the Scoop project (http://scoop.kuro5hin.org/). We had a starter database that was available in CVS. It had the standard schema, but it also had a few default values in it already, and a story there as well so you would at least have a basic working system when you installed it. The problem was our development databases generally had much more data in them then the version we liked to keep in CVS. So we'd need to mysqldump them, to get the latest schema changes, but then also find all of the new insert statements for the default values of the fields we added and add those to a patch file (people needed to be able to upgrade easily between the different versions) and then apply that patch file to the main database sql file, and then check in that file. That process was error prone and cumbersome, not necessarily yours :)
It could have benefitted from some automation, sure.
But pretty much any database versioning system that stores the whole database creation scripts as one big file won't do what I need. How do you reasonably get a diff between just one table and its CVS version?
The approach I would like to have seems to most closely mirror Philip's approach (if it was all in separate files) (I haven't checked out the products mentioned above yet). The final result of database versioning like I would like to have, would be an easy way to get all the changes from the last major revision into a path file, to apply to the production databases.
Lastly the inspiration for this thread this time around is that I've been programming my stored procedures in TOAD lately. I'd like to be able to see the changes I've made from the CVS version easily. Same goes for my views, tables, roles, grants, synonyms, etc etc. With CVS integration into the database. It could even just dump the database schema to separate files and check them into CVS. I just want an integrated way to see their changes.
Rember these are all just programs, they should be able to keep us from doing any of the busy/repetetive work :) |
| Fri 30 May | Andrew Lighten | I'm in the midst of building the database layer for a new application. The way I'm planning to version control my schema is by building an XML file that describes the schema then version control that XML file.
Two of the attributes in my XML schema description are 'birth version' and 'death version'.
A series of trivial little utilities will use this XML to dynmically created the SQL used to (a) create the database schema; and (b) migrate a database from schema version x to schema version y.
One nice side effect of this approach is that support for multiple SQL server flavors is trivial: a command line switch to the utility that builds the SQL DDL from the XML and you can generate schema scripts for Oracle, postgresql, etc. |
| Sat 31 May | coresi | I know there are many solutions out there but this is the solution I devised for our enterprise application. We have a huge number of tables and millions of records and regenerating them every day makes no sense. Also we have many beta testers and custom solution groups who need to apply the updates rather often.
We have a master database where we apply the changes after they have been thoroughly tested by developers. We built a conversion application which generates an XML file after reading the master DB. The XML file is checked in with the code. The XML contains the proper DB schema, static records (i.e. various applications settings that must be stored in the DB) and C# scripts compiled on the fly for various dynamic changes (i.e. checking the machine at run time and doing maintenance work).
Developers run the conversion application and the XML file every morning to get up to date. The conversion application makes a diff between the XML and the target database, generates and runs the proper SQL statements for all backends (Oracle, MSSql, etc) our product supports.
There are many advantages with this approach:
- It generates only the required SQL statements, for instance it won't drop a FK unless an included column has been changed. This saves hours of conversion time on enterprise DBs with millions of records
- It is re-entrant. If for some reason the conversion fails, a new diff is generated and the conversion starts over where it left. This can save days of restoring back-ups on a huge DB.
- We use the same application to update our clients and our internal databases. Each installation of our product comes with this XML and the conversion application.
- The SQL generation layer is backend specific. It knows Oracle supports a 'disable RI' statement and uses it when appropriate, instead to drop the RI. Or that Oracle is case sensitive unlike MSSQL.
The April or May MSDN magazine had an article describing a similar, albeit less powerful technology. MSSQL2000 has the ability to generate the DB schema as XML.
coresi |
|
| What do you think about users groups? | Thu 29 May | shiggins |
| I have been programming (out of school) for about 5 years. Three of those years have been in a small shop (I am the only developer). I would like to network face to face with other developers. I feel like I am behind the curve because of a severe lack of mentoring and/or communication.
What have been your experiences with Ugs? |
| Thu 29 May | Jorgenson | If you can find a good, active one, they're a lot of fun.
They're a lot like IRC or USENET, only you have to be polite. |
| Thu 29 May | Li-fan Chen | Polite? That's a lot work!! :-) |
| Thu 29 May | John Aitken | Where I live users groups for particular tools are always lame & held in low regard. Don't know why this should have to be the case, wish it wasn't, but I'm just reporting reality. OTOH one of the best seminars I've ever attended was under the auspices of a self described 'user group' called CAMUG: http://can.cpsc.ucalgary.ca/camug. Still the audience pretty much kept to themselves afterwards. |
| Thu 29 May | Wayne Venables | www.meetup.com
I heard about them from a posting on this site... been to two meetup's so far (both very good) and I'll probably go to next one as well. |
| Thu 29 May | www.marktaw.com | I was thinking of using Meetup for my little IMAX Matrix get together... but I didn't see the need for a monthly thing. So I just created a post in my forum and told people about it.
2600 has been doing this for ages before Meetup existed, but if you can find an existing Meetup, then it's easy to just hook into it.
PMI (the Project Management Institute) had monthly breakfast meetings, but I always found 8am way too early for me. Is there anything like the PMI for programmers?
You might be interested in the Kuro5hin.org meetup: http://kuro5hin.meetup.com/ |
| Fri 30 May | one programmer's opinion | My experiences have ranged from very good to nothing special.
In the late 1980s early 1990s, I used to attend a local PC related user group which was a lot of fun. I met all kinds of IT people there (from BBS operators to corporate IT managers).
About two years ago, I attended a local Java user group meeting just to see what type of people attended. I don't believe anyone there was older than 27 and nobody smiled or talked very much. While I did win a t-shirt, I never bothered going to another meeting.
Although, the local Microsoft technologies user group holds its meetings very close to my apartment, I have never attended one of their meetings. Why? I suppose its because I am too cheap to pay the membership fee and their guest speakers always seem to cancel on them.
My advice is to check out whatever local UG group interests you and see what it is like. Some UGs have no membership fee and those that do almost always allow you attend 1 or 2 meetings for free.
Some people attend UG meetings to learn something, some attend simply to network, and some try to do both. |
| Fri 30 May | shiggins | Thanks all for your opinions. I am going to attend a meeting tonight and see how it goes. |
| Fri 30 May | Albert D. Kallal | User groups are just great. When I used to have more time, I was the membership director for the Alberta Society of Software Developers.
The main problem with user groups right now is that the internet came along, and it is the ultimate user group.
Albert D. Kallal
Edmonton, Alberta Canada
kallal@msn.com
http://www.attcanada.net/~kallal.msn |
| Fri 30 May | Matt H. |
I founded the grand rapids perl mongers, the grand rapids, Michigan, perl user's group, in 1998:
http://grand-rapids.pm.org
Yeah, are web site's goofy. You get over it.
We just had a meeting today. We get free books from O'Reilly (our lending library is too heavy to carry), plus presentors get free lunch and a book to keep.
Oh, and the company I now work at hosts 90% of the GR.PM meetings. Go figure ...
regards, |
| Sat 31 May | Karl Perry | I've made about 90% of my income over the past fifteen years directly from contacts made at user groups.
As a networking tool they're great. As a way of commiserating with other developers they're great. As a way of learning what's coming, they're great.
As a way of learning new techniques to help your current project, they're only so-so because of the time lag between meetings - however, because of meeting others via the group and e-mail, they're great anyway because now you have a whole stable of mentors whom you've actually met and who care about you.
The biggest problem with user groups, as with most volunteer groups, is that participants don't take the time to become active parts of the group. They come to meetings expecting someone else to have done the work of preparing the presentation, etc. and then complain when the group goes downhill.
My advice: get involved in UG's in your areas of interest, and actively help them to thrive. You'll meet a lot of great friends, you'll gain a reputation in your area for being a 'get it done' kind of person, and you'll make more money. |
|
| Disclosure | Thu 29 May | Lauren B. |
| I would like to see what the general opinion is on the topic of disclosure about your programming work. Here is a situation I encountered a few weeks ago.
Im an independent contractor currently working on a desktop Java application. I am the only person working on it. For the most part, the requirements and design of this app were done well, so I had a really good idea about what the app needed to do. It wasnt designed down to the absolute lowest level (it didnt need to be) before I began implementing it. During implementation, I encountered situations that were not covered explicitly in the design. Happens to everyone.
In many cases, the behavior was obvious. But in some cases, it was not. Id ask around for opinions from the other employees, but sometimes these issues were so obscure, it was hard to get feedback.
So, as an experienced professional, I made a reasonable implementation choice and documented the issue, the solution, and the implications of this solution, if any. Often these issues had to do with memory vs. performance, or deviating from the specs or not.
The project was wrapping up, and I wrote a release notes document that went into excruciating detail about these issues. Then I held a meeting to go over these things to see if anyone wanted changes to the ways Id chosen. They suggested some changes, no big deal.
But, during the meeting, I kept getting a feeling that my clients were judging my work badly because I was pointing out all of the questionable points about what I implemented. Since I was only talking about these areas, it might have seemed like my code was fraught with problems. Well, no, it was only specific parts.
Since Im a contractor and wont be here to maintain or upgrade this code, I thought it was professional of me to do this. Some of the code gets pretty complicated. Yet, I left the meeting wondering if I should have just kept quiet, or just documented it in the code. I wonder if I damaged my reputation and looked incompetant, when in fact, I was attempting to be a responsible contractor. If I was a regular employee, I probably wouldnt have done this because they could always come back to me to fix it later.
What do you think about disclosing the design choices of your code? How much? How do you disclose it (doc? comments in code?)
Is it unethical not to say anything? |
| Thu 29 May | Bruce |
I submit an alternative interpretation...
Is it possible that the perceived negative feedback from your 'peers' was due to the fact that you spent what appears to be a considerable amount of time documenting a problem when instead you could have brought it to someone's attention immediately and possibly had it addressed?
I'll admit my bias up front. The process you described is not the way we work here. If any of the developers that work in my group had done what you have I would have complimented them on their work ethic and then asked them never to do it again.
I'll give you a, possibly heretical, view of software development. Design isn't the most important thing. Good tools isn't the most important thing. Coding 'skillz' isn't the most important thing. Communications is the most important thing.
In all but the rarest organizations, a design is a 'dead' document. It's not alive in that no one is likely spending any time updating it. Hell, many on the team are probably not even referring to it. The collective group 'understanding' of the design is what's important. It is what's alive. You have to keep your ear to this, not to the document.
As I said, some may find this view heretical. :)
At any rate, I applaud your dedication in flushing out a possible issue. Next time, I would suggest escalating the issue as soon as possible. |
| Thu 29 May | Mister Fancypants | Lauren did mention trying to get feedback from other employees in the original message.
Having worked as a contractor in the past, I wouldn't be so quick to lay the communication problems at Lauren's feet... it may have been like trying to talk to a brick wall and you can't just stop work and wait for a couple weeks until the people you're waiting to hear back from answer your requests.
Personally, given a similar situation, I think a good solution would a quick overview (not super detailed) release document and skip the meeting. |
| Thu 29 May | Bruce |
Oops, mea culpa.
Hitting a brick wall when trying to communicate what could be a critical project issue is not something that tends to build a lot of trust in a development team.
Faced with that situation you're choices really are:
Potential showstopping issue: Yell until someone listens. Take hostages. In this case, a document is not going to be enough anyway so don't bother.
Garden variety serious: Inform team leaders immediately. Submit a defect report.
Minor: Refactor the code yourself if time permits. Otherwise, inform team leaders and let them decide.
I stand by my previous assertion that documentation should be looked at as a last resort. If you assume that any document you write is not going to be read you won't go far wrong. :) |
| Thu 29 May | anon. | I think you are talking about sharing nitty gritty details with the decision-making clients on a project... As a developer, one is always looking at 100 different ways a project/application can go awry. e.g. it might not work under Netscape 4.x, what happens if they don't have the right runtime installed, what happens if they are running the Dutch version of Windows 95 on 640 by 480, etc. (as Joel has pointed out in his articles).
Sometimes clients don't need or want to hear about this stuff... especially non-technical ones. They are concerned about their own business issues. So maybe don't shoot yourself in the foot with nitty gritty attention to what might be a future problem.
Metaphorically speaking... when you buy a car and drive away from the lot... does the salesman say 'now when you are driving down the road in rain, you can use intermittent wipers and adjust the variability setting right here... make sure you leave the tank full if you leave the car outside in Winter time... also make sure you get a full oil change periodically', etc. Or does the salesmen say 'we've built an excellent car for you and we hope you enjoy the ride' ?
So maybe if you are wrapping up the meeting leave it at 'we are ready for deployment and it's a highly stable and high quality application... be sure to let us know if there are any issues that have not been identified by the extensive testing that has already been done', etc. |
| Thu 29 May | Beth Linker | It sounds like you did a really thorough job covering the potential issues. It's possible that a less thorough treatment of the issues would have satisfied the client.
As for creating a positive impression of your work without sweeping issues under the rug, what about starting a meeting off with a demo or some other opportunity to show off the success of the app? If you start things off by demonstrating that you've produced what the client wanted, they may be in a better mood when you move on to talking about issues. |
| Thu 29 May | Philo | I would've pointed out where they were, what they were, and given one or two examples, then moved on. I don't think it's worth going through them in excruciating detail unless they affect contractual acceptance criteria.
Philo |
| Thu 29 May | Brent P. Newhall | Lauren, I think you acted professionally. You acquitted yourself with honor.
In my opinion, I think the situation would have fared better if you'd talked to the *client* about these problems as they came up, rather than fellow developers. If I were the client, I would have wanted to know about these issues early. Plus, this would have spread out the reports of problems over time, rather than telling the client all at once at the end of the project.
If the issues were purely technical -- e.g., they didn't affect the business value of the application -- then I think you shouldn't have told the client, at least not in detail. 'Release Notes' would have been fine.
Either way, I think you handled it very responsibly. |
| Thu 29 May | FullNameRequired | My rule of thumb for iffy design decisions is pretty basic.
If the client has a technical/programmer person to liason with then talk everything over with them.
Otherwise...
If it doesn't affect the specs, I dont tell them.
If it affects the specs in small ways that *I* dont judge to be at all important, I dont tell em.
If it affects the specs in bigger ways, I mention the need to alter the specs, and discuss how important the specific feature/requirement is. The basic idea is that we discuss the importance of implementing it relative to the cost of doing so. Mostly I find that changes are fine particularly when compared, for instance, to the cost of rewriting the jvm/web server/whatever so that what they need is possible.
If it has a huge effect on the specs I assume Im being stupid and missing something :) |
| Thu 29 May | . | If you were doing a desktop Java app, then I can see where you would have problems.
If the client personnel were not software developers, you should not have gone into the nitty gritty details with them, because they wouldn't understand the significance. |
| Fri 30 May | Lauren B. | Excellent suggestions, thanks.
Actually, the team I presented this to was all technical (including the people who will be supporting this app when I'm done with the contract). The corporate priorities shifted between when I started the contract and now. Initially, all of these folks were working on this system with me, because it was mission critical. When priorities changed, they all got pulled off to work on the latest 'gotta have it now' system. So I think part of their indifference was the fact that they're focused on something else now.
I really liked FullNameRequired's guidelines. That is very useful. |
| Fri 30 May | Bored Bystander | This is really a consulting and political situation. This situation illustrates the difficulty of providing hard core facts to people who aren't intellectually or emotionally capable of dealing with facts. This category includes many managers (even supposedly born and bred technical managers), marketers, and executives who came up through a business track rather than doing something constructive and creative for a living.
Also, some techies who work full time for the client may sieze any admission of your 'weakness' (AKA lack of omnisience) as evidence of your incompetency. Even though they usually know better.
As a developer, technical pro or engineer, we are paid to resolve problems. But you cannot talk about your work in the terms that competent engineers are used to talking about it when you are in a vendor-client relationship.
The point: YOU CAN'T CALL ANYTHING A 'PROBLEM' OR 'SHORTCOMING' or 'CONSTRAINT' TO CERTAIN PEOPLE. THEY WON'T GET IT. THEY WILL PANIC. THEY WILL THINK THAT YOU ARE COMPLAINING. THEY WILL MISINTERPET CANDOR FOR YOUR LACK OF SKILL. Etc.
Sorry for shouting. Many programmer types NEVER get this.
This is, in my view after working 10 years as a consultant, solely an intellectual failing on the part of just about everyone who is not a smart technical person. :-)
You *must* learn to baby certain people who are in the client's position. And this weakness/end user character deficiency (am I laying it on too thick? :-) ) is universal.
This natural bias in non-technical people to look down on honest statements of real life constraints tends to favor BS artists in our industry. The glad hand smooth talker types that say 'noooo problem' are generally far ahead of the Calvinistic self sacrificing programmer types who voluntarily wear haircloth when their code screws up.
This sort of relationship issue is the domain of the consultant-to-consultant authors like Janet Ruhl, Jerry Weinberg, et al.
Good luck on you. This is how I see it. |
| Sat 31 May | anon | Bored, I'm afraid to seriously consider another IT job for that reason. I'm sorta messed up in the way I relate to other programmers because I basically evolved to talk out my ass, and at some point I lost the some of the ability to know when I'm doing it.
I've met one company in the last 2 mo. that seemed to be smart & hungry (I used one of their products), and they seemed to like me, but sadly they were too far away for me to work there. Not that I want to work anywhere; I'm spending all my time learning algorithms and some esoteric things, because I need to control the terms of my technical relationships more.
Maybe I am wrong about programmer groups; I like meritocracy but business can't fulfill that, opensource communities can. Anyway, enough offtopic rambling, sorry. |
|
| Ronald Mak's compiler book | Thu 29 May | Stephen Martin |
| For the last several years Ive been working mostly with VB with a smattering of C++ used for time critical or specialized operations where VB is inappropriate. In general I have no problem with this since, unlike many, I have no problem with VB as a language despite its limitations and I actually prefer verbose languages.
But I have started becoming annoyed, lately, at how much of my C/C++ and assembly I have forgotten. So I decided to start looking into compilers as a way of refreshing my memory and giving me some interesting projects to do over the next several months.
I know very little about compiler theory so I was looking for a good, practical introduction using C++. The number one recomendation for an introductory compiler book was Ronald Maks book and as a bonus several people strongly recomended it as a source of high quality C++ code.
So I bought the book and Ive been going through it over the last several days. So far Ive found that it is too practical - its too light on theory and context. But that isnt a big problem. Worse is that I find the C++ code is actually quite poor quality - poorly designed, poorly commented and only adequate technically. So much so that I find the compiler information hard to extract because the code gets in the way.
Am I totally out to lunch on this and as I slog through the book more I will grow to appreciate it? Or is it really not that good and if so what are the good compiler books (introductory and then more advanced)? |
| Thu 29 May | Andrew Hurst | If you want to brush up on C/C++, get a C/C++ book, not a compiler book.
But if you want to brush up on a broad range of language topics and theory, then finish the compiler book. Compilers and Programming Languages were two of my favorite classes in college, and it really gives you a new way to look at languages. I find myself thinking 'How did they do that?' and 'Why did they do it that way, its not hard to make it a little more ...' when writing code in different languages (the languages I'm referencing are perl and VB respectively, with those comments ;)
I stay stick with the compiler book, finish it, then get a C/C++ book. They'll both benefit you quite a bit. |
| Thu 29 May | Dave B. | Ronald Mak's book is IMO a perfectly fine book for learning about recursive descent compiler construction. Take the source code for what it's worth. It's meant to show you how a compiler is constructed. Personally, I think it is clean and easily understood. It is standard code for creating a recursive descent compiler. Use it as a starting point for your own code and if you can think of a better way to write a recursive descent compiler then maybe you should write a book. |
| Fri 30 May | Colin Newell | It's a common problem. They all have dodgy source, but then it's supposed to fit on the pages of a book... |
| Sat 31 May | Warren | I think even though there are tools like flex and bison (and equivalents for various other languages) which are fairly easy to use, compiler construction is still a black art. Or at least pretty esoteric. That can't be said about many things in computer programming. |
|
| Probation Periods | Thu 29 May | Better than being unemployed... |
| Theres been quite a bit of talk about hiring the right people in recent threads, and making sure you only accept smart people who get things done.
Most companies also, at the start of employment, give a probation period, usually of a few months, to see whether or not you can actually do the job and fit in. If you fail this probation, youre out.
However, in my experience, Ive never seen anyone actually fail a probation period, even morons who produce code I have to end up rewriting or redesigning. So what are they for? Are they just some feel good factor for new employees? |
| Thu 29 May | Steve Jones (UK) | This lack of geiing rid of them if they're no good might be to do with the amount of effort required by management.
In most medium to large companies (at least in the UK) it takes a huge amount of effort and paperwork to get rid of someone, even if they are useless.
Even though its clearly wrong, I think it happens and the manager just hopes they can 'promote' the person in question out of their team. |
| Thu 29 May | Better than being unemployed... | That's bizarre.
I can see why it's effort to fire somebody who's established in the company - if you're firing them now why did you hire them in the first place?
I can't see how that translates through to probation. It ought to be relatively straightforward to state on a contract that by accepting the offer you indicate that you understand you will be kicked out if you fail probation. Or does the law get in the way of that too? |
| Thu 29 May | Brad Wilson (dotnetguy.techieswithcats.com) | Related to the 'only hiring smart people' thread, we'll be having a probationary period, and we'll definitely be watching very closely to see how someone fits in. You need to be able to correct hiring mistakes.
It costs a lot of money to bring someone on and train them, which is why most companies never get rid of someone after they hire them. Too much inertia. But on a small team, even a single negative impact person can have devastating effects. It has to be watched very, very closely. |
| Thu 29 May | Astarte | In South African labour law (considered to be of the most employee-friendly in the world) companies must give an employee 3 written warnings for the same offence before they may be fired. The only exception is during the 3 month probation period when you first start work with a company - they can fire you at any point (kind of a 'everyone walks away unhurt' clause). As far as I know, this works two ways, in that the employee can leave with like a day's notice during that period, whereas thereafter they are required to work out a calendar month's notice. |
| Thu 29 May | Matt H. |
I've noticed this too - companies with 90 day probation period tends to fire people after the 90 days. I saw one terrible employee who was fired around day 100 or so, never before that.
I've heard anecdotal evidence that other companies work this way. There is probably some psycological reason, but, offhand, I can't think of any ... |
| Thu 29 May | Mike Gamerland | I have to agree with 'better' I have yet to see these work. While IANAL, I believe they give the impression you could be, but legal issues probably keep anyone from really being exposed.
A better option, and one I strongly recommend to clients is 'rent to own.' Bring on the person as a contractor for six months. At the end of the six months roll them or let them go. The important part is to let them go. Too often they bring them on for six months and the person is still a contractor two years later. |
| Thu 29 May | Stephen Jones | The effort involved in firing somebody during probation is not the paperwork for the labor authorities, which in general doesn't exist, but for your own company. You have to persuade your superiors the person is no good and that you need to start the hiring process all over again. You don't make yourself popular if you do this too often, and you are also calling into account your judgement if, as is usually the case, you were involved in hiring the person in the first place.
So its only in small owner-managed companies that probation is an effective tool. And of course your future employees are likely to be aware of the fact, plus the fact that fitting in with a particular cult/culture is more a factor in those companies. So when you get somebody who has a good job somewhere else you are either going to have to waive the probationary period to get him, or increase the salary and benefits to compensate for the risk.
Another factor to be born in mind, is that the probationary period is only accepted by employees because people are so rarely fired. If your company gets the reputation of using it you will find that nobody with a job elsewhere will transfer to your company, and those desperate ones who do will spend part of those three months looking for other jobs as a safety net, and might even decide to jump ship anyway as a precautionary measure. |
| Thu 29 May | RocketJeff | One of the reason people aren't let go during their probation period is that it can make the manager that hired the person look bad.
If you're a manager and you have to fire someone (esp. someone you just hored) for not being able to do their job, what does it say about your ability to find/hire talented people? There are a lot of managers who'd just put up with the person sothey wouldn't have to admit the mistake.
There is also the 'buy in' of the manager. The manager was convinced the person could do the job, it will take a bit to convince him otherwise. Since the first 90 days tends to be relatively unproductive anyways (HR matters, mandatory training, learning the project,...) it isn't enough time to weed out the people that are marginal.
I like the idea of a 6-month contract before hire (I've known firms that did 1 year contracts), but there are people who don't - mainly due to benefit/pay issues. |
| Thu 29 May | Wolf Bogacz | RocketJeff -
>(esp. someone you just hored)
I realize you meant 'hired', but my mind 'enhanced' this to (w)hored, and it left the statement just as true, but funny.
Maybe I'm just too cynical... |
| Thu 29 May | Li-fan Chen | Better Than Being Unemployed...,
I think the probation period could work. I have seen it work too. It might be just chance you never seen anyone part with their company that way. Too bad. |
| Thu 29 May | Joel Goodwin | Considering the amount of work that goes into a typical interview process, I'm surprised that a probationary period is considered necessary (even if staff are rarely let via this route). This also goes for taking on a contractor for X months too, then buying them after that period, which is in essence the same deal from a non-legal perspective.
I'm thinking of Peopleware, this site, and personal experience: Does it say something about a company if they cannot put full faith in their interview process?
Any thoughts on this? |
| Thu 29 May | Better than being unemployed... | From personal experience...
We interviewed somebody, and said 'no-hire'. However, we desparately needed somebody to write the installer, and nobody would do it, so we took him on on a temporary contract for three months (which should have been plenty of time to design, implement and test it), after which we were planning to let him go. (I should emphasise I wasn't involved in the hiring process because I was on another project).
After three months, the installer wasn't anywhere near finished, so they took him on as a permanent employee, as he was now on the critical path.
Six months later, he complained he wasn't getting enough challenging work, and demanded to code some C++. We got a graduate to work on the installer and stuck him on some C++ in my project. He left soon after.
The installer had to be completely rewritten, and the C++ module had some fairly major bugs in as well. (He also used wstring when the rest of the team used LPTSTR and BSTR, but I don't think I can actually fault him for that...)
The moral of this story : He wasn't cutting the mustard after three months, so why would he have changed? |
| Thu 29 May | Edoc | 2 yrs ago, I hired a kid who was recently out of college.
From the very start he often showed up late (11AM) and had a bad attitude. This behavior continued even after I spoke to him.
I decided to let him go rather than put up with the headaches. A month later, I got a call from the unemployment office. Turns out he claimed he was 'laid off' and wanted to collect benefits.
Speed forward 1 year. I'm working at a major US corp, and my group had a job opening for a manager. We needed someone with intimate knowledge of our business, so we decided to hire someone in another group who was recently 'given notice.' Big mistake.
This person decided that she didn't like working for our group (we were 'too technology focused'), and she quit to focus on something that made her happier. 4 months later, we get a call from her lawyer. She sued us for her unemployment benefits, even though she quit!
The case went through arbitration: she claimed that she was a victim of a bad job -- she couldn't sleep, had headaches, etc. In the end, the arbitration panel awarded her the benefits and our company, painted as the giant evil corp, had to pay up. |
| Thu 29 May | Brad Wilson (dotnetguy.techieswithcats.com) | 'If you're a manager and you have to fire someone (esp. someone you just hired) for not being able to do their job, what does it say about your ability to find/hire talented people?'
So, you think it's better to compound one mistake with another one of a much larger magnitude? Nobody is perfect. People are bound to make some mistakes, but owning up to them is a far more mature and valuable asset than trying to cover your own ass and costing the company a lot MORE money.
In my mind, it's almost impossible to know even with a full day interview whether someone is going to fit into your culture. It's only reasonable to get some time into the relationship to see if it's a good fit. I've been there and done that as an employee, and it would surprise me if others hadn't as well (none of those companies are on my resume now).
There are factors that add up to a bad fit that just can't easily be discovered in an interview, in my experience. |
| Thu 29 May | richard | Probationary periods are there precisely to get away from the fact that it is difficult to fire someone. I know people who have failed probationary periods (unfairly in some cases) I know people who have had their probationary period extended (i.e. still under probation).
Essentially it is the responsibility of the employee to prove they are capable of the job during this period. The problem is that for our line of work it is difficult to ascertain that, even after 6 months - new employees are typically only warming up at that stage. Often they don't have the institutional knowledge even by then or networked effectively with other team members. |
| Thu 29 May | Nick | Even if the hiring process is robust, you can still wind up with a dud. Several years ago the company I was with acquired another company, whose engineers didn't want to transfer across the country. Plus we were experiencing a small boom in sales in our other core areas, so we had to hire a bunch of engineers in a short period an undesirable but unavoidable situation.
Our candidate screening and interviewing processes were pretty good, but we still ended up with some that didn't cut it. A precondition of the employment was that they be able to come up to speed fast. Some didn't so we let them go before the end of the probation period.
The key thing is that the manager must be diligent about monitoring performance. |
| Thu 29 May | Philo | IMHO, 'bring them on as a contractor for six months' is a very, very bad move, provided you do it properly.
Someone who's brought on as a contractor needs to be incorporated and carry liability insurance. They also need to provide for their healthcare and dental insurance. Generally, you pay them more per hour in recognition of these expenses and because they cost less (the 'cost' of an employee is generally 1.2 - 1.5 times their pay)
The thing is that the cost of insurance to the contractor is going to be much less than that .2-.5 of their pay. So at the end of that six months, you're going to have to convince that contractor why they have to take a 20-30% pay cut to keep working for you doing the same work.
Oops.
Mind you, there *can* be benefits that make it worthwhile. In addition to the health care coverage, you've got life insurance, stock options, laptop purchase plans, etc, etc, etc. Only problem there is that companies have been shedding a lot of employee perqs as 'unnecessary expenses'
Double Oops.
Philo |
| Thu 29 May | RocketJeff | 'Someone who's brought on as a contractor needs to be incorporated and carry liability insurance.'
The places that do a contract-as-probation usually does this through a prefered consulting firm (i.e. a body shop), not as an independent 1099 contractor.
The consulting firm treats the person just like any other contractor - they hire them as a W-2 employee for the length of the contract. Once the contract is over, the person is treated just like any other consulting rolling off a contract - they're let go.
Yes, there is the issue of health insurance, etc. There are a lot of firms that have waiting periods for these benefits for regular employees (i.e. no health insurance for a month), this is just a bit longer...
Also, if the person knows up front what is going on, there shouldn't be an 'oops' after the probation is done. If the person decides that they really do like being a contractor, they walk away; if the company decides the person doesn't fit, it walks away; if they both agree on being an employee the terms should already have been set. No 'oops' involved. |
| Thu 29 May | Philo | RocketJeff-
Good points.
I don't understand the waiting period on health insurance, never have. I think it's abusive to ask an employee (esp. one with a family) to go without healthcare coverage for *any* length of time. Every employer I've worked for has offered coverage from day one, so it's doable. Mind you, I don't have a problem with preexisting condition clauses (don't like them, but understand them) - that's different.
Out of curiosity, what do you do if after six months you find the guy is amazing, you make the offer, and he decides to continue contracting? Do you refuse to continue his contract? Assuming you've priced the contract appropriately it shouldn't be a cost issue.
Philo |
| Thu 29 May | Mike Gamerland | Philo describes the biggest problem with rent to own. The good ones may want more. If you really cannot reach a resolution, where they are hired, and your objective is to put a full-time employee into the position, they have to go. If not, you are going to fail the IRS 20 factor, and they are going to be making contractor wages AND be considered employees.
As for incorporated and insured, that is not required in the US. While many companies will require it, the law does not. Instead, I can add a rider to my current business policy to assume the risk. It does not add significant expense because I incur the same risk with both employee and contractor. YMMV.
OTOH-- I agree with you and RocketJeff on the insurance thing. I insure my company through the local Chamber of Commerce. I ordered my insurance and it began the same week. Seems like a Fortune 500 company should have less of a problem than I did. |
| Fri 30 May | Better than being unemployed... | Just a quick and slightly off topic bitch ... somebody new at work and still on probation has been docked a few days' pay this month because he took three days off sick recently.
What? Is that legal?
I've told him to find out who decided to cut his paypacket and talk to them, but he can't be bothered. |
| Fri 30 May | Brent P. Newhall | Better: I'd assume a company policy that a person on probation doesn't accrue sick leave. So, if they take time off for sick leave, their pay must be docked.
Is this not the case? |
| Fri 30 May | Better than being unemployed... | Don't know. I guess it must be. It's just something I hadn't heard of before. |
| Fri 30 May | IANAL | IANAL-- but a guy at work just went to one on a similar case.
Tell him to check with one. For $150 he can a yes/no. My understanding is that if you are salaried and you pay gets 'adjusted' for any reason,, by hour, day, week or month, then you are now an 'hourly' employee.
This entitles you to overtime and a whole lot of other good things. [the guy at work is looking at 5 years of overtime doubled + legal fees.]
Again IANAL |
| Fri 30 May | Brad Wilson (dotnetguy.techieswithcats.com) | Laws vary from area to area.
Where I live, failing to show up for work can get you docked, even as a salaried employee. The salary is based on reasonable expectation of performance (e.g., 40 hours per week). If you have no accrued time off, but need it off, then you didn't work and shouldn't be paid. In fact, there's no reason that the company couldn't fire you for failing to show up, so I think it's a benefit to the employee that the company was willing to let them take an unpaid day off instead of forcing them to come in or be fired. |
| Fri 30 May | Noname | Laws vary from state to state, but Federal law still trumps the state laws. An employer who insists on X number of hours per day, and docks pay runs the risk of having the employee classified as non-exempt and being required to pay 150% for overtime, including back pay for all overtime worked since beginning employment. Exempt workers are supposed to be evaluated on work done, not hours spent.
The issue is not whether they have the right to dock salaries for absences; the question is whether they can do so and still maintain the employees in Exempt status (i.e. no overtime pay).
Having said that, sufficiently large periods of absence can justify salary deductions. Less than a day is not enough, but I believe docking for complete days of absence may be allowable without jeopardizing exempt status. And I am more confident about a full week's absence. Of course, IANAL, so check your local laws and lawyers. |
| Fri 30 May | Philo | Just a quick reminder (I know, preaching to the choir):
The origin of 'exempt' employees were executives that were expected to mind their own hours. Their employment was performance-driven, so how they chose to work their tasking was up to them.
When the Federal Gov't was working on the FLSA, which says in effect 'employees shall be paid for every hour worked' (who would ever think that needed to be a federal law?), business lobbied for an exemption for executives and professionals, saying in effect 'neither we nor they want to have to keep timecards.' Since most men who were execs or professionals worked 2500 hours/year anyway, nobody really cared when they took an early Friday afternoon to play golf.
As with anything else, the system has been corrupted. Now 'exempt' is used to keep from paying as many employees as possible overtime, yet these employees are expected to use a finite bank of 'personal time' when they take an hour to go to the bank.
IMHO, the Dept. of Labor should get off their backsides and start enforcing the FLSA as it was intended - anyone who has to take 'vacation' for less than a full days' absence should be automatically nonexempt and eligible for overtime.
(One nice piece of fallout from the dotcom era - many companies now *do* pay overtime)
Philo |
| Fri 30 May | Not Telling | I've seen people fail probation periods. A good case was one where the guy just wasnt up to scratch but was given the chance to improve. He didnt, and thus was shown the door.
Another was a pathetic case of politics gone mad. The new guy was fired cos schedules werent being met and it was a small team. |
| Sat 31 May | T. Norman | Where the FLSA is concerned, corporate bigwigs have taken advantage of programmers' refusal to join together for any common cause. They got the FLSA to specifically mention computer professionals as exempt employees. |
|
| E-bay pays $35million in patent case | Wed 28 May | November Rain |
| http://story.news.yahoo.com/news?tmpl=story&u=/ap/20030528/ap_on_hi_te/ebay_lawsuit_12
Hmmm... I dont what say. Patents are ridiculous. Especially software patents.
Hey! Maybe an online auction service would be cool? I think Ill write one. Hey! Maybe a website content management system would be cool, I think Ill write one.
Honestly how can you patent these things. They are sofware. Anyone can write them. Even the ideas are generic in nature. Hey! I wrote another messenger program! Oh yea! Who cares? Know what Im saying? |
| Wed 28 May | Mark Hoffman | printf('Hello World!');
Patent Pending |
| Wed 28 May | S. Tanna | I tried to read one of the patents. Could make sense of much of it. But it sounded like it could be almost anything as it talks about barcode scanners, and all kinds of stuff, most of which I'm not aware of having anything to do with eBay.
The word auction and web does crop up so I guess, this is why eBay was judged to have infringed.
Some problems I have with the patenting system, aside from the general issue
- Connecting existing components together seems to be patentable in the US (database, web server, bar code scanner, printer). Of course there is 'glue' software req'd, but is it really novel or even an invention in the commonly used sense?
- Is there enough information in the patents for somebody to create another one of this invention once the patent expires without having to whip up lots of their own stuff? I think any patent which does not include sufficient info for this should be automatically denied, as the purpose of the patent system is supposed to allow a monopoly for limited time in returning for making the underlying knowledge public domain.
- Are patents specific to a particular invention or a whole class of possible inventions? I think you should be able to patent a new design for a paperclip, not the ideal of using a metal fastener to hold papers together. So class type patents should be denied IMHO.
- Is it really novel, as opposed to simply moving people did offline (auctions) or even online in other forms (auctions on usenet, BBSs?). Again, I think any patent not sufficiently novel should be automatically denied. |
| Wed 28 May | S. Tanna | > Could make sense of much of
should be
Could NOT make sense of much of |
| Wed 28 May | Nat Ersoz | 1. Our patent system seems to be completely out of control. The office has taken the position that its not their responsibility to examine prior art - that prior art comflicts are to be worked out in the court system. The litmus test for obviousness at one time was 'would it be obvious to one skilled in the art'. It appears that nothing is obvious any longer.
2. The jury box is filled with working men and women who've been oppressed by the system. If not for their guilds and unions, they'd be slave labor for the _the man_. Its the violence inherent in the system.
No, I haven't read the claims - and I don't intend to. I already know how they'll read: the guy invented apple pie, electric mixers, sliced bread and all virtual forms thereof. He'll be suing you next because _his_ dog crapped on your lawn. |
| Wed 28 May | David Clayworth | It seems to me that one possible solution to this (apart from the US patent system dropping into line with the rest of the world and excluding algorithms from what is patentable) would be to have a variable length of time that a patent applies for. Currently an anti-cancer drug, which may have taken ten years and tens of millions of dollars to develop, has a length of patent exactly the same as an idea for a web button which could have been developed in an afternoon. Wouldn't it be more sensible to give the web button a patent of a year or two (after all, these ideas are worth something) and the cancer drug twenty or thirty years? |
| Wed 28 May | Operator | I did a project for a guy that held about 80 patents. All you have to do to get a patent is fill out paper work. You do not even have to have a finished product, system, application, ... etc. Just the idea is necessary, then you draw a picture or explain what the product will do. |
| Wed 28 May | Bill | I hope Ebay spends some money on PR about this, so the general public is aware of the issue. If it becomes news, then other legal scholars might weigh in and provide some influence on the appeal decision. This is something that could affect lots of people directly, many small bussinesses can only exist because of Ebay. If Ebay can get their users to take up this cause, they could change the story, right now you have the poor tiny bussinessman lawyer against a big powerful company. If you show lots of grandma's who won't be able to sell their dollies on the internet anymore, that could get lots of news coverage, and hopefully more attention by lawmakers. |
| Wed 28 May | S. Tanna | This particular 'poor tiny bussinessman lawyer' also I think has or had patents claims against Priceline, Overture and others. |
| Wed 28 May | Mike McNertney | The problem is not software patents in general. The problem, as Nat said, is that the patent office is not upholding their part of the burden. 'Obviousness' and prior art are supposed to invalidate a patent. Unfortunately, the patent office doesn't seem to care about this anymore. |
| Wed 28 May | Shakespeare was right. Kill 'em all. |
And yet another case of people using the legal system to extort and steal from those who have money.
Wanna get rich? Follow these simple steps:
1. Find a scumbag lawyer. Shouldn't be hard. 99% of lawyers qualify.
2. Find a rich person or company.
3. Sue them for anything. It doesn't really matter what. Make up something. Your lawyer will be glad to help you fabricate stories, damages, etc.
4. Be patient. Since this is the latest Get Rich Quick scheme, it will take some time for your case to clog up the court systems and the victim to get tired of you. Eventually they will settle after your litigation costs enough money.
Act now! Potential targets are quickly going bankrupt or moving out of the United States! Sue fast while there are still a handful of targets left that are stupid enough to do business in the US. |
| Wed 28 May | Erik Lickerman | I think some of you are acting on irrational hatred of lawyers here. Yes a lot of ridiculous software patents were issued in recent years. As a result, the patent office is being far more careful and it is much harder to get one now. The European union will no longer accept software patents.
There is a need to protect intellectual property of some kinds. There are certain projects which would never get out of development stage if the inventor assumed that as soon as the public saw how useful it was, a large company would steal it. This situation in fact greatly contributed to the death (or at least coma) of the desktop software industry back in the 1990s.
For the person who thinks you can patent an idea, I am fairly certain you are wrong. When you submit a patent you must submit the best execution of your idea in such a form that someone skilled in the art could produce a working version.
As for the concept of obviousness, I think this is the biggest problem. Recently (and it is only recently) the bar was just set too low. My thinking, the spreadsheet was not obvious (but of course software wasn't patentable back then), one click ordering certainly is.
It used to be that to patent software it had to be attached to a physical process, like an embedded program which optimizes a fuel injector. Not so any longer.
I'm not really sure what the solution is. Some software needs patents and with others it is just a drag on innovation |
| Wed 28 May | S. Tanna | While I think there is sufficient intellectual property protection in copyright and trade secrets for most secret
Build an app to do X, your source is copyrighted, and for closed source apps would also be covered by trade secrets
If somebody else does a similar app to X, they have to independently create their own source to do X-like stuff.
There is no reason I can see why independent implementations of an idea in software need to be patented, as
(a) usually most of the effort is coming up with the source, bug fixing it etc (copyrighted source)
(b) usually little of the effort is involved in coming up with the idea of doing X in the first place.
Software patents typically cover 'doing X'. It doesn't matter if somebody else's implementation is internally completely different (as would automatically be the case for non trivial apps independently produced), they are still judged to have infringed. Thus the software patent although intended to cover an invention, ends up covering the idea of doing X.
Here are two example comparisons of why I think this is a case
1. If a patent was for a new type of paperclip it would say designed like this, made from that etc, purpose holding papers together. A different design for paperclip would not infringe as it merely has a similar purpose but different technologies.
However in software, the patent usually describes the purpose and very vague elements of the design
Thus an independently produced software, which shares a similar purpose and broadly similar design elements (e.g. both use industry standard products like barcode wands and databases), it is judged to infringe, no matter how internally different it really is.
2. If a patent was for a cancer drug. It would specify the formula of the drug, what the disease is for etc. When the patent expires any chemist can make the drug.
If software could cure cancer, the patent would say 'it cures cancer', 'uses a network and database', all vague except the purpose.
Another piece of software to cure cancer, even though totally internal different, infringes because of the vague claims in the patent.
Furthermore, unlike the cancer drug, for the cancer software - after the patent expires - there is not enough info in the patent to create a new version without effectively making an independent implementation - as the patent probably doesn't include the source code, just the vague concepts of curing cancer, using a network, etc. |
| Wed 28 May | Nat Ersoz | 'It used to be that to patent software it had to be attached to a physical process, like an embedded program which optimizes a fuel injector. Not so any longer.'
This is correct. I've patented hardware designs for my prior employers, and this was always requisite. We always avoided the term algorithm (even though algorithms were put into hardware) and instead described the physical implementation.
So my question is: when did the office change to rules, and why? Again, used to be, we were scrutinized against prior art - so much so that only 1/2 of our applications made it through the process. |
| Wed 28 May | Nat Ersoz | S. Tanna - I agree with you, precisely.
Here is one example (real life) for discussion: There was a patent, back in the 80's, for displaying the menuing system of a VCR on the consumer's TV set. Prior to On Screen menues, the functionality was implemented as buttons and LED's on the front of the VCR.
So the question: should that idea have been granted a patent? The application was granted, and was one of the hugest money making patents in a billion dollar/year portfolio for some time.
I think this and perhaps RSA public/private key are 2 patents which help divide the waters on what is/is not a patentable idea.
Also, side note: biotech & agriculture have gone completely off the deep edge, when they can patent characteristics which occur in nature without human intervention. Perhaps leave that out of the topic - too bizarre. |
| Wed 28 May | Mike McNertney | One thing I wanted to point out that it seemed some people may not realize. A patent doesn't just protect a particular process. It protects the product itself. If someone else, completely independantly, comes up with the same idea and implements it (in a totally different way), that still violates any patents on the idea.
For example, if I patent a particular drug, and someone else develops the same drug on their own using a completely different process (and without knowledge of my patent), they are still in patent violation.
I say this because someone was mentioning that the actual code is what should be patented, not the idea or the product as a whole. This is actually not how patents work at all. Yes, the implementation must be included in the patent so that others can reproduce it later, but the patent is on the idea/product itself, not the implementation.
I think the problem is not with software patents. I see no reason why software should not be afforded the same protections as any other creation. The problem is that patents are not appropriately applied, due to the failure in enforcing the 'obviousness' and 'prior art' clauses of patent law.
I think part of the problem also is that with software, there is a problematic distincton between an idea and a particular implementation of that idea. What I mean is this. You can't, for example, patent 'a drug that cures cancer.' You can patent a *specific* drug that you have created. With software, patenting a specific implementation (say, 'ebay' or 'yahoo') is pointless, because exact duplication of that implementation is all but impossible without violated copyright. So, people instead patent 'online auction' or whatnot. I agree this is a problem and this may be the core distinction between software patents and other patents. We need a way for people to protect their inventions that falls between the too generic ('online auction') and the too specific ('ebay'). |
| Wed 28 May | Devil's Advocate | Mike -
Processes can also be patented, and this is actually the basis for algorithm (e.g. RSA, LZW) patents. Software is quite unique in that it may be covered by both copyright and patent protection. |
| Wed 28 May | Mike McNertney | Sorry, I didn't mean to imply that a process can't be patented. I just meant that normal patents dont *just* protect the process, but the final product as well (regardless of how the product was produced). |
| Wed 28 May | T. Norman | Normal patents protect the process and the final product, but unlike software they don't protect the purpose of the product. If somebody patents a drug to cure AIDS, you can't produce that particular chemical compound without their permission, but you could still create a different compound that cures AIDS.
But for some insane reason, an independent program that does the same thing as a patented program could be found to infringe, even it was written in a different language using different algorithms. |
| Wed 28 May | T. Norman | And of course, we can bet that there was not one single technically savvy person on that jury. |
| Wed 28 May | John McQuilling | I believe E-Bay was ordered to pay by the jury but they will appeal. It is quite possible that the decision will be thrown out by the appeals process.
I think there should be some requirement that the person applying for the patent actually do something with it. The purpose of patents was to encourage an inventions by protecting them for a while. As far as I know the patent holder in this case did not start a business using this patent. If you are not using the patent, how are you damaged? |
| Thu 29 May | Stephen Jones | Patent laws differ from country to country. In Spain for example they only used to protect process so Spanish drug companies used to produce the same drugs by slightly different means. It is to prevent that presumably that US law protects the product to some extent.
In general I wonder if we would not be better off without any copyright or patent laws at all, certainly with regard to software. Neither seem to be fulfilling their original purpose of encouraging the arts and sciences. They seem more akin to some kind of feudal levy by the parasites on the productive classes, providing employment only to a vast army of lawyers who act as medieval tax collectors.
I have no doubt that if humans ever reproduce by cloning the future Bill Gates will be claiming droit du siegneur on your daughters. |
| Thu 29 May | John Aitken | Relevant problems in order of 'bigness':
Specific problems w/ patent office not properly considering 'prior art' or 'obviousness' clauses in own mandate. Sub problem of 'use' is analogous to other similiar property rights issues ala eg. sitting on unsubstantiated mineral rights etc. Answer: proper funding & management of patent office on fee for use basis.
Vexatious litigation w/o much downside for lawyers. Impact is collosal but remedies are available if somewhat fraught.
Archaic property rights legislation out of step with science, technology, economics. Esp. historical notions of copyright for works of art & patents for 'invention' both being inappropriate for works of 'discovery' - esp. biology. Perhaps solvable with enlightened legislation. Tough politically.
Juries not of one's peers. What should the standard of competence to weigh in be? Tricky.
Whole market economy ill suited to recognizing / rewarding / compensating / motivating / exploiting effort in Intellectual Property or anything but widgets w/o economic 'externialities'. I don't want to dispense w/ markets, just consider the public purpose & game theory notions in deciding how 'fair' auctions might work better for the common good.
Distribution of power on earth ill-suited for disinterested discussion of any of the above.
''''''''''''
So, I think it's unlikely that we're going to resolve any of this for good and all on Joel's forum, but I am pleased to hear others are irked by the EBay lawsuit. |
| Thu 29 May | tapiwa | I still say shoot the lawyers. They are the only ones to profit from this.
http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=38469
Ebay has to fight it all the way, otherwise it sets a very dangerous precidence, and could leave them exposed to even more damages and litigation.
While I think they will eventually triumph, the legal fees are not going to be insignificant. |
| Sat 31 May | Guy Incognito | I'd sure like to give Thomas G. Woolston a beating with a sack of rusty doorknobs. Is this the same dumbf#ck who's attempting to sue every online ecommerce site because he claims he holds patents for ecommerce? Man this kind of sorry a$$ loser bullsh*t really pisses me off. I'd really like to sodomize this clown with a jagged pool cue. |
|
| Encryptian of Emails | Mon 26 May | Linda |
| I suspect the server admin is viewing my emails via the server side. The problem is a serious invasion of privacy. There is no hard evidence to prove to the manager that his doing it, but the fact that comments slip out of his mouth during lunchtime conversations and he was even fired from his former workplace for the same reason suggests alot.
My point is not seeking to find out if he is or not reading my emails. I want to be able to encrypt my emails so he definately cannot view it. Does encryptian actually hide my emails from being viewed via the smtp server?.
Any recommendations anybody?
We are using Microsoft technologies,
Ms Networks and Outlook.
Thanks for reading my ordeal.. |
| Mon 26 May | Simon Lucy | Get PGP it will plugin to Outlook, those you correspond with will also have to be able to decode them but its pretty much a transparent operation. |
| Mon 26 May | Sebastian Wagner | Your target person needs to have a PGP key and tools. Then you can download or buy PGP (I use the free gnuPG + a windows frontend) and use his/her public key to encrypt the mail. After that it's just rubbish for anyone (even you) but the person you send the mail. No admin power will help the intruder ;) |
| Mon 26 May | apw | of course if this is at work on your employer's email/computer system, they have every right to monitor your email. |
| Mon 26 May | | apw - do you know Linda, and from what country she is posting? |
| Mon 26 May | Li-fan Chen | The only way to do this (and I don't even know what's the point) is to use web-based mail account. It means the tunnel you use to view your incoming email (or to send outgoing) is secured (I use the word cautiously here) from snooping from your administrator. This is assuming you can ensure your company PC is free if spyware or keystroke recorders and you know better than to put y4jw0c1 on a post-it(TM).
The reason it's point-less is because all communication sent between A and B using normal email technology is normally sent in plain text. Free for all to see. Anyone from the IRS to some geek with an ethernet tap can pretty much read anyone's email who's unfortunate enough to share their bandwidth.
But if your end goal is lessen chance people you know know what you are up to in your email... web mail will do it.
You'll have to do more than this to get a completely secure thing going. (I.E. Ensure you clear Internet Explorer cache, but most webmail know better than to cache anyway)
-- David |
| Mon 26 May | Linda | To apw.
I'm in australia, and as far i know, its not legal to monitor an emplyees email without their awareness.
And another thing, the server admin is not my employer, his an employee like anyone else in the department, unfortuantely, he abuses his skills. |
| Mon 26 May | Linda | David, I thought of that too...but the problem is, internet access is blocked. I can Only access email via outlook.
But on the positive side, I can install any program on the machine, even if it be an encryptian program, I wont require the server admins authorisation |
| Mon 26 May | Li-fan Chen | Only way for you to communicate with the rest of the world is Outlook pointing to a corporate mail transfer agent like MS Exchange? In that case you gotta encrypt your outlook email then, or learn telepathy... |
| Mon 26 May | Linda | Ok, David, I'll learn telepathy :)
I'm currently on the download.com site browsing the different encryptian programs, i know pgp is a good one, but come on, there must be something new and refreshing on the market. |
| Mon 26 May | Li-fan Chen | It's easy to learn the ins and outs of an encryption standard for email or a new secured email reader. But it's hard to get thousands of other users to learn the same. This is one of many reasons we are stuck with PGP and other name brands.
The cipher used in the latest PGP is no different from other newer readers on the market.
People tend to stick with one security standard even if it's old because it takes upwards of decades for cryptographers and programmers to get all the insecure bugs out. |
| Mon 26 May | Eric Lippert | Unfortunately, if you really have a 'rogue admin' then there is very little you can do to be certain that they are not spying on you.
Encryption is not a panacea. If the roguean read your mail, odds are good that he can also learn your password, install monitoring software on your workstation, etc. |
| Mon 26 May | Big B | The solution is to not discuss anything via email that you don't want others to know. If there are no juicy stories in your email, your sysadmin should get bored with it pretty soon. |
| Mon 26 May | Pest Exterminator | Why not do a sting? Put some super-juicy stuff in there that he just will not be able to resist acting on or talking about.
Better yet, talk quietly to a senior manager with the power to fire him, suggest the sting, and then feed the target some nice, juicy bait he'll go for. Examples: spreadsheet with fake salary numbers, or perhaps something to a friend like 'Boy, you should have seen the letter I found on the printer today - if everyone saw it, all hell would break loose! Lucky I found it and put it safely in my files before anyone saw it. Wonder what I should do with it?'.
Pest extermination: It's every bit as fun as it looks.
PS: Linda, you are correct - under Australian law, you do have a reasonable expectation to privacy. I'm given to understand it's exactly the same as phone calls - i.e. an employer cannot tap your private phone calls. If an employee was found to be tapping someone's phone, that would be a serious offence (if I recall correctly, the relevant legislation is covered under the Commonwealth Crimes Act). |
| Mon 26 May | www.marktaw.com | I've seen some programs that will encrypt your message/binary package in one of the following ways:
It encrypts it into a .exe and the other person must know the password to extract it - this is similar to winzip. You could just winzip your messages (as .doc for example) and password protect them. Sure your boss could crack winzip (there are numerous tools to do so) but would it be worth his/her time to do so?
The second encrypts an html page using javascript, and the recipient must know the passord to decrypt it. IN addition, to ensure that they get the whole package and their e-mail program doesn't disable the javascript components, you probably have to it as an attachment, but that may be worth it.
Have you considered setting up a message board somewhere? One where you have to approve everyone who enters the board. Alternately, if you prefer secrecy, there must be some sort of private messaging software that allows members to send private messages to other members on the server. Sort of like a friendster, but for just your friends.
trillian, the instant messaging client, allows you to set up encrypted IM sessions.
You could rot13 it, but your boss might be able to see through rot13:
http://www.marktaw.com/technology/Rot13EncoderDecoder.html
V zrna, fbzrbar zvtug erpbtavmr gung lbhe zrffntr rapbqrq hfvat ebgngvba guvegrra. N ybg bs crbcyr xabj jung vg vf, vg'f orra nebhaq sberire. Naq bs pbhefr lbh pbhyq arire fnl 'ebg13' orpnhfr gung'f n qrnq tvirnjnl.
It would also help if everyone involved had a rot13 encoder/decoder on their desktop so there weren't suddenly a lot of hits to a rot13 page that your boss could notice in the server logs. There are other simple cyphers out there... Keyword cyphers take some work to decrypt.
As far as bosses monitoring your transmissions... I had one that was working on a program to monitor his employees browsing. The system existed in the company, but he wanted to be able to print out reports. |
| Mon 26 May | Darren Collins | What kind of company hires a server admin that was sacked from his last job for abusing his position as admin? |
| Mon 26 May | Rasmus | PGP is the standard when it comes to Email encryption. It's secure and it's easy. No reason not to use it. And you don't even have to pay for it.
http://www.pgpi.org/ |
| Mon 26 May | cdavies | I suppose if you wanted hard evidence, you could try the spammers techniques to see who is reading your e-mail. If your admin is using outlook to read you mail, you just need to send a few HTML formatted mails with links to, say, a transparent image from a webserver you own.
Of course this rather depends on your admin using outlook to view your mail, or some other mail client that supports HTML. |
| Tue 27 May | Li-fan Chen | cdavies that's a great idea :) |
| Tue 27 May | Li-fan Chen | To implement cdavies' idea try this:
Create an asp script on your desktop.
Start Menu > Run ... > CMD > IPConfig (WinIpCfg) To find out your ip address...
To generate a one pixel transparent pixel.. use the Hex of
'47494638396101000100800000FFFFFF00000021F90401000000002C00000000010001000002024401003B'
And push it out using the content type of 'image/gif'.
While you are doing all this.. write a cookie, capture the accessor's ip address. Actually, if you want to build a case against your admin--make it convincing, grab as much information as you can in this transaction. Write down the browser type (maybe your Admin has the tendency to use Opera 4.0.2.3.5 Patched with v.2 AntiMicrosoft Cipher)
Ask the guy who manages your admin to buy something like KeyGhost. But that's like fighting privacy invasion with privacy invasion.
-- David
-- David |
| Tue 27 May | tapiwa | keep your mails off the server as much as possible.
Store them in PST's on your local machine. |
| Tue 27 May | Simon Lucy | Ways to discover whether he is reading mails are interesting in themselves, but Linda said she wasn't interested in that, just in preventing him reading them. |
| Tue 27 May | echidna | Pest Exterminator, you don't know what you're talking about. Employers in Australia DO have the right to read employees' email, and many do so.
They are required to notify employees that this might occur, and usually do this in some vague way.
Reading of employee communications is much more common that people think, at both a corporate level, and at a casual level by sys admins. I wouldn't bother complaining. |
| Tue 27 May | Linda | lol, Thanks for the creative ideas, currently i type up my email in a word doc, and zip it and password protect it.,,then i email it off.
Echidna, I'm not usually a defender of the Federal governments practices, but I highly doubt there is a law that allows for snooping. In any case, it is not the manager that is spying, but another colleague. |
| Tue 27 May | Pest Exterminator | On the legality of monitoring work email:
Acutally, yes I do know what I'm talking about - I looked into this a few years ago and recall finding legislation to cover this. Although, I'll quite willingly admit that I can't remember the specific legislation that covers monitoring of personal communications in the workplace (that would involve wading through the telecommunications act, commonwealth crimes act, and relevant state legislation). The problem is that few businesses actually know, let alone follow, the relevant legislation -- but that doesn't make the monitoring right or legal.
In any case, I think it is reasonable to assume that the actions of the sys admin are not being ordered nor sactioned by the company. Given proof, almost any employer would immediately dissmiss a sys admin caught doing this -- at least, I hope so. |
| Tue 27 May | Pest Exterminator | Linda: By the way, don't rely on password-protected ZIPs to protect your messages - they are vulnerable to brute-force cracking. You might deter casual browsing, but that's all. If anything it might just make for a juicier target for your resident spy.
(Fun tip: Are the feds intercepting your email? Worried that they'll try to cryptanalyze your encrypted email? Just send messages containing nothing but pure random noise. They will waste MONTHS trying to cryptanalyze your mail!) |
| Tue 27 May | www.marktaw.com | Pest Exterminator - You're absolutely correct, zip is vulnerable to brute force attacking. Making the passwords non-words will help prevent a dictionary attack. Also mixing in letters & numbers might help. Caps and lowercase, etc. Most brute force attacks start with the dictionary. Also the longer the password the better. Try not to get two characters in a row that are identical, etc.
I realize there are programs to 'recover' passwords from .zip files, and the sysadmin may have a spare computer lying around to do this to night and day, but after a while it's just not worth his time.
It's all a matter of their time v. their desire to see your message. Unless you're trading gov't secrets, or are really afraid of the latest TIA/DARPA efforts, zip protection should be fine for your boss/office gossip.
I believe that with PGP you can create a file that's encrypted and the receiver will need a password to decrypt it. Am I correct here? If so, this might be worth your effort as well... I haven't seen any tools for brute forcing a PGP file, though I'm sure they exist.
There was a thread a while back on creating secure passwords... It might be of interest to anyone who need to keep a lot of passwords. |
| Tue 27 May | Linda | Mark, I dont think he would even bother trying to crack the zip file, afterall, he does have work to attend to.
If he does, then his a real sad case.
But also, the reason i didnt want to use pgpfreeware 8.0 because on the download.com website,,,,many users in ratings section have strongly advised against installing it on an XP machine because it creates many problems.
So unless anyone here uses pgp on xp, and its not the case with them, then please inform me otherwise. |
| Tue 27 May | echidna | Pest Exterminator, I'm sorry but you're wrong. Employers in Australia do have that right. All they have to do is notify the employees that they're doing it.
http://bulletin.ninemsn.com.au/bulletin/eddesk.nsf/All/49ACCD9FF9CFB325CA256CCC00007480
'While it is against the law for companies to intercept email, they can read it once it sits on a server or a hard drive. But the union movement says the internet is a public asset, not something an employer owns. As such, employees should expect some right to privacy in its use.
Workplace authorities were shocked when a February 2000 survey of employers by law firm Freehill Hollingdale & Page revealed that 76% of Australian companies monitored employee emails. Of this, 65% did so secretly.' |
| Wed 28 May | www.marktaw.com | echidna - Wow. I remember that. |
| Wed 28 May | Linda | echidna, oh my god, that is disturbing. :(
Well, I'm going to have to modify the content of my emails. Once again, I stress that the server admin is not an employer and his not in any managerial position, his no different from me, and he has no right to do what his doing. |
| Wed 28 May | Pest Exterminator | Echidna: Yes, but if you read the article, you'll notice this is actually quite a grey area - my interpretation was based on the fact that intercepts of communications are illegal without a warrant (as they point out in the article). I'm not a lawyer, so I quite readily concede that I could be wrong.
In any case, my own view is that unless the organization is an intelligence agency, monitoring employee email is not only unethical, but a waste of resources. |
| Wed 28 May | www.marktaw.com | >In any case, my own view is that unless the organization
>is an intelligence agency, monitoring employee email is
>not only unethical, but a waste of resources.
The company I worked for made it clear that e-mail was to be used for business purposes only, and they reserved the right to snoop through it. It's amazing the things empoyees will put up with... I also had to sign something that said they could fire me at any time for no reason. |
| Wed 28 May | echidna | PE, no, it's not a gray area at all. Employers can and do read employees' email. They cover themselves with the usual paragraph on page 4 of your employment contract or some memo sent around at Easter time.
FWIW, I have been involved in IT management and seen how this goes on. You have no idea.
Some advice: while you're working for a company, just presume anything you send might be put up on a noticeboard or appear in a court one day. For sensitive things, wait till after work or use PGP. |
| Thu 29 May | Philo | [This is not legal advice]
Just to clarify for everyone here:
Your employer may be allowed to intercept emails. Employees are NOT allowed to do so. If the sysadmin is reading email without authorization from the company, then that is illegal. What makes it really cool is that in the US it would technically break federal computer security laws.
He is exceeding his authority as a sysadmin, and has as much right to do so as a cop would have to randomly search people while he's on vacation in Hawaii.
Philo |
| Sat 31 May | Linda | Ok, this is all interesting.
But my question is, has anyone used pgp on windows xp without any problems at all? |
|
| The Matrix | Sat 24 May | The Real PC |
| The idea behind the Matrix movies is compatible with various mystical beliefs and also with the contemporary science of digital physics.
When I listened to the Donald Knuth religion lectures I got the impression that he agrees with this kind of mystical/scientific philosophy, even though he practices a traditional Western religion (Christianity).
If you havent heard of digitial physics, the idea was started by Ed Fredkin, who created the cellular automata Life game in the 60s.
Of course in the Matrix movies reality is created by evil machines who are using humans for energy, etc. However, at the end of Matrix Reloaded you get the impression that the reality outside the matrix is another matrix on a higher level (because Neo winds up having special powers there also).
I definitely believe our multiverse is made of information. I think there are many alternate universes/realities on many levels. |
| Mon 26 May | Daniel S | I think the important question is: which programming language did the Architect guy use to create the Matrix? |
| Mon 26 May | www.marktaw.com | > I think the important question is: which programming
> language did the Architect guy use to create the Matrix?
You must've missed the part where the Archiect is a program himself. Obviously he used machine language.
Speaking of programs writing programs... JOS mirrors The Matrix. |
| Mon 26 May | Daniel S | Well then it must have been LISP |
| Mon 26 May | www.marktaw.com | Ah... that explains why he's proud of the elegance, but impractical nature of the orginal Matrix.
'The original Matrix was a work of art. Written in Lisp. But people rejected. I was forced to re-write it in Visual Basic, and it gained widespread acceptance.' |
| Mon 26 May | anon | HAHAHA! That's terrific :) |
| Wed 28 May | Brent P. Newhall | For us XP weenies who dislike Big Design Up-Front, it's fun that the evil man in the white coat turns around and pronounces, 'I am...the ARCHITECT.' |
| Wed 28 May | www.marktaw.com | Would it have been better if he pronounced 'I am the Middle Manager who keeps all the Rational Rose Use Cases for posterity.' |
| Wed 28 May | www.marktaw.com | And then went on 'According to Use Case #27 _In the event of the One Becoming Self Aware_ you are supposed to have the following reactions: Anger, Fear, Pity, and then Love for the humanity of The Matrix. I see I must update it to take into account romantic love..'
In Revolutions we get the same speech except now it's
'According to Use Case #27a _In the event of the One Becoming Self Aware Appended for Neo Anderson_ you are supposed to have the following reactions: Anger, Fear, Pity, and then either Love for Humanity, or Romantic love for an individual.' |
| Wed 28 May | Ray | That 'I am the ARCHITECT' line made me laugh out loud in the theater. My wife wondered what was so funny... |
| Sat 31 May | www.marktaw.com | Tixx are on sale now.
http://www.fandango.com/my_box_office.asp?page=&remotefilter=&theaternamefilter=&distance=30&from=&refresh_date=6/7/2003
I've got tickets for the June 7, 7:15pm show of you want to join us.
Dinner will be at the Houlihans (?) a couple of blocks south of the theater immediately following the show.
RSVP here so I can make reservations.
http://www.marktaw.com/forum/read.php?f=1&i=24&t=24 |
|
| Database to object mapper | Fri 30 May | eclectic_echidna |
| So I am reading Fowlers Patterns of Enterprise Application Architecture. and he states:
Remember that you dont have to build a full-featured database-mapping layer. Its a complicated beast to build, and there are products available that do this for you.
With this in mind, I spent a fruitless hour or so searching for this software, but I just cant find the buzzwords to get google to spit out some.
Can any of you kind people throw me in the right direction?
Thanks.
--
ee
P.S. And to all of you angry ones who hate my “inane” posts, just hit back and find another article. Better yet, go to www.slashdot.org and take a chill pill! |
| Fri 30 May | Philo | VS.Net
Look into 'Typed Datasets'
For non-MSian solutions, try searching database+class+generator
However, I'd say before investing any $$$, look at how maintainable the produced code is. There are two viable routes, IMHO:
1) Easy to modify code
2) Easy to generate code
With (1), when you add a column or change a table def, you just 'fix' the class with a bit of typing. With (2), the tool is so robust and easy to use, you simply regenerate the class.
Philo |
| Fri 30 May | Will | In Java, I recommend
Torque
http://db.apache.org/torque
Hibernate
http://hibernate.bluemars.net/
In Perl, take a look at SPOPS
http://www.openinteract.org/SPOPS/
(all open source) |
| Fri 30 May | Spam | This is something I've been curious about as well. Does anybody have anything in the C++ vein? Preferably non-MS.
Thanks. |
| Fri 30 May | Brad Wilson (dotnetguy.techieswithcats.com) | The type of product you're looking for is an 'object/relational mapper', sometimes called 'O/R mapper'. |
| Fri 30 May | Herbert Sitz | In the Delphi world I'm sure the Bold Framework that comes with Delphi 7 Architect includes an integral O/R mapper. That binds you to working with the entire Bold framework, though, I would guess.
There's also an open source Delphi object persistence framework called tiOPF:
http://www.techinsite.com.au/
And an inexpensive framework, kind of a Bold-lite, called 'InstantObjects Object Persistence Framework':
http://www.seleqt.com/ |
| Fri 30 May | Chris Winters | Will: thanks for the SPOPS props!
The OP might also be interested in a collection of other O/R mapping tools in Perl [1]. This is one of the areas where no matter what language you're using there're more than one way to do it...
[1] http://poop.sourceforge.net/ |
| Fri 30 May | Herbert Sitz | Not an available framework itself, but here's a link to Scott Ambler's white paper 'The Design of a Robust Persistence Layer for Relational Databases':
http://www.ambysoft.com/persistenceLayer.html |
| Fri 30 May | Philippe Back | Good products understandable for mere mortals and which work well:
www.pragmatier.com for .NET (I sell it, there is a sample PetMarché app in 800 lines of code, compare this to Java where you have an increase of an order of magnitude) -DataBinding is supported. This product is based on the paper from Scott Ambler. It does VB6, VB.NET and C# going to SQLServer or Access. The Access version is free.
www.ibatis.com for a Java mapper w/ XML configuration. (free)
www.simpleorm.org for a Java mapper to a database (no XML, no funky generator, the defs are in the code) (free and I use it). |
| Fri 30 May | somebody | A few weeks ago, I wanted to wrap a bunch of SQL Server stored procedures with ADO and VBScript.
It literally took me a matter of minutes to throw together the code to query the system tables and generate the wrappers -- much less time than what I spent before that trying to find one that has already been written.
The following query (tested in SQL Server 2000) will return a recordset listing information for all the columns in user tables in the current database (it'll probably turn out messy from the formating, but you'll get the idea):
SELECT obj.name AS 'Table',
col.name AS 'Column',
type.name AS 'Type',
col.length AS 'Length'
FROM sysobjects obj
JOIN syscolumns col ON col.id=obj.id
JOIN systypes type ON col.xtype = type.xtype
WHERE obj.type='U'
ORDER BY obj.name, col.colorder
It's trivial to iterate through this recordset to generate wrapper code. I imagine non-MS systems offer similar access to metadata. |
| Fri 30 May | Walter Rumsby | TOPLink - I believe there is a C++ version as well as Java versions.
In the Java world you've got TOPLink (and similar products), the Java Data Objects spec (inspiried by TOPLink) and CMP entity beans all providing persistence mechanisms that free developers from thinking in terms of SQL.
TOPLink - looks like TOPLink was sold to Oracle (their J2EE suite comes with TOPLink; http://www.webgain.com/), unsure about the status of the C++ version given this (change the 'is' above to 'was').
JDO - http://www.jdocentral.com/ (possibly some of the providers have C++ products too) |
|
| Webserver logfile analysis | Thu 29 May | Jeff |
| Hi! I want to write a program that parses and analyzes webserver logfiles. Something like Analog or Webtrends. How would you do this? And how is it done?
Would you parse the file with grep? Would you consider it possible (not too time consuming) to parse the file into a database and get the analysis from simple SQL queries?
Speed is not so important, I just want to know how it is done. |
| Thu 29 May | John Krane | If you write it, make sure it's a good one, not 'yet another cryptic command-line tool that only works after 10 hours of configuration and reading cryptic references'.
Being technically good is not enough. You have to have an excellent user interface! |
| Thu 29 May | RM | Depending on your log format, you could easily come up with a simple grammar, like this
AllLog => { Log }* //Zero or more Log
Log => TimeToken SrcNameToken DestToken FileNameToken ‘\n’
Then, create a parser and scanner with Flex and Bison. Once the tree is generated, you can now do whatever you want with it. With enough Bison and Flex experiences, it could be done in less than a day. The hard part is coming up with an unambiguous grammar to avoid trouble with Bison. Other tool, such as Accent can handle even ambiguous grammar.
The problem here is, it is specific to one format. So as usual, there are always other solution, perhaps better, using different tools.
Good Luck |
| Thu 29 May | Krzysztof Kowalczyk | Just read the source to Analog or, if you don't quite like C, something simpler like PySiteStats (http://www.diveintomark.org/projects/pysitestats/).
That'll tell you exactly 'how it is being done'. Which, on the other hand, isn't terribly interesting question. Log file format is very simple to parse. It's logical structure is also simple. The interesting question is 'how to get useful information from a web server log'. |
| Thu 29 May | Chas | If you're in the java world, do check out javacc for an excellent parser compiler: http://www.experimentalstuff.com/Technologies/JavaCC/ |
| Thu 29 May | Joel Spolsky | Seems like there's VERY little lexing and parsing required for a log file. Most are simple, delimited file formats. No need to bring in the heavy duty yaccs 'n' bisons for web logs.
I'm using Webtrends because all the alternatives required too much painful configuration. Webtrends autodetects logfile formats from the major servers, which is a relief. |
| Thu 29 May | www.marktaw.com | The complex thing with log files is getting things like path through site and how long someone's been on. Combining with cookies for more detailed reports is even more complex & requires a server side component.
I like Analog but use Weblog Expert Lite because it does what I need and requires zero configuraiton. I could get more detailed stats, but easier is easier. |
| Thu 29 May | ko | i've not used the following tool from MS, but if you're looking at IIS (or windows) server logs, then i suggest taking a look at the Log Parser from MS. This tool lets you run SQL statements over a number of different log file formats including the windows event logs and as mentioned above, the iis log files.
http://www.microsoft.com/windows2000/downloads/tools/logparser/default.asp |
| Fri 30 May | Michael Moser | i have done something like this - as a perl cgi script.
(there are tons like this if you search for perl cgi)
http://www.michaelmoser.org/auxloga/auxloganalyser.htm |
| Fri 30 May | Kent Design4Effect | AWStats is free. The source is freely available, and it would be very difficult to write a better one. |
| Fri 30 May | www.marktaw.com | AWstat looks nice. http://awstats.sourceforge.net/ |
| Fri 30 May | Michael Moser | There is always something that you would like on top of AWStat - but it would be easier to do that as a stand alone script (if you mind to look at AWStat)
For example my stuff is like a bunch of directories and i would like to have seperate access reports per directory. |
| Fri 30 May | Brent P. Newhall | I've done this before.
It's quite easy, actually; you just read in each line of the log file, and zip along the string looking for delimeters. Once you find the fields you're looking for (IP address, page viewed, etc.), add them to an array or hash or map or whatever makes sense. Personally, I kept a hash of hit counts for each page, where the keys were the names of the pages. So, %page_hits{'/'} would store the number of hits for the root page.
Once you've read through the log file, print out the contents of the arrays/hashes/maps/whatever. |
| Fri 30 May | Mike | 'Being technically good is not enough. You have to have an excellent user interface!'
Why, so lackey ass windows admins can run web analyzer software like their knowledgable unix admin cousins?
|
| Fri 30 May | Mike | Google 'webalizer'
Somebody already wrote it so you wouldn't have to. |
| Fri 30 May | Jeff | Hi again and thanks so far for all the information. I know it has been done before but I want to do it myself, more as an exercise and because I sometimes look for very special information in my logfiles.
As I see it, most tools work like Brent already wrote: 'Just read in each line of the log file, and zip along the string looking for delimeters. Once you find the fields you're looking for (IP address, page viewed, etc.), add them to an array or hash or map or whatever makes sense.'
In case I need some additional information, would it make sense to parse the whole file again? Or is it better to transfer the whole file into a database and make SQL-queries? I want to be as flexible as possible but I also want to be able to work with huge logfiles.
Again, thank you very much! |
| Fri 30 May | shiggins | I haven't tried this yet, but saw it yesterday. This article describes parsing logs into an OLAP cube for analyzing. Hope it helps.
http://www.sqlservercentral.com/columnists/gciubuc/importingandanalyzingeventlogs.asp |
| Fri 30 May | Kent Design4Effect | I like the database idea because of the flexibility in querying. I thought that was the bigest problem with AWStats.
It's the way to go and if you are considering a database, consider MySQL. It's free, the source is free and benchmark tests reveal it is faster than all except Oracle with which it ties. |
| Fri 30 May | www.marktaw.com | Most log analyzers, I believe Webtrends also, doesn't actually store the log files in the database, it parses them and extrapolates information from them. It then stores THAT in the database.
If your site gets a ton of hits, the log files could add up very quickly.
You don't need every line & every request, once you've parsed the files, you can decide what you need - page hits, ip addresses, paths through site, and just store that.
You may lose the ability to run new queries, but you can keep your old log files around on your shiny new 360gig HD if you want to spend a couple hundred dollars...
Or, if like me your site doesn't get that many hits, you can keep your log files on your local hard drive & server. |
| Fri 30 May | Brent P. Newhall | Jeff asked what to do in case he needs additional information. IMHO, in that case, you just edit the source code to add the appropriate functionality and re-run the program. What sort of extra functionality will you need?
I find that I learned much more by manually coding these things than by letting SQL do it for me. It wasn't particularly difficult, and made for a good mental exercise. |
|
| When would you use HasRows()? | Thu 29 May | Philo |
|
Our favorite Angry Coder made this comment in the July/August aspnetPRO Magazine:
The IDataReader interface in ADO.NET now supports the HasRows property, making it easier to use the lightweight DataReader classes
?
When I use a datareader, I always do this:
while(dr.Read())
{
//do stuff
}
if Im only pulling one row of data, then:
if(dr.Read())
{
//do stuff
}
When would you use HasRows?
Philo |
| Thu 29 May | Dave B. | The Read method returns true if there are more rows in a forward only recordset AND advances the row pointer by one each time it is called, whereas HasRows() would tell you if there are any rows in the recordset without advancing the row pointer. The difference is that HasRows() will tell you if there are any rows without advancing to the next record in the set. Read also starts at BOF not the first record.
Another $0.00002 from me. |
| Thu 29 May | Dave B. | I guess I didn't answer your question directly, but you would use HasRows() if for some some reason you didn't want to advance to the next record. Why would you want to do this?
Well if:
if dr.Read()
{
// recordset is on first row
}
else
{
// recordset is on first row (is this what we want?)
}
fails your recordset will now be on row 1 instead of BOF. This may or may not be what you want, so you could HasRows() instead.
if dr.HasRows()
{
// ok our recordset has at least one row
while (dr.Read())
{
}
}
else
{
// no rows in recordset
} |
| Thu 29 May | Philo | Okay, understood, but when would you want to know if a returnset has data, but not read that data?
I'm guessing you might do this in a middle tier layer, where you either return the reader itself or set a return value flag? Or maybe some kind of error checker?
Seems to add complexity without really adding anything to me?
Philo |
| Thu 29 May | Ed | '...Okay, understood, but when would you want to know if a returnset has data, but not read that data? ...'
How about when you want to display one of those groovy 'This query has returned no results' screens....... Makes that process a whole lot simpler |
| Thu 29 May | Dave B. | It might add structure to your code.
>> 'but when would you want to know if a returnset has data, but not read that data?'
You wouldn't. I don't think that's the purpose of HasRows(). It is there to facilitate a means by which you can test the recordset WITHOUT advancing the row pointer thus producing more structured, predictable (trying to think of another term here) easy to read? code.
Of course this is just my opinion. |
| Thu 29 May | Dave B. | >> 'How about when you want to display one of those groovy 'This query has returned no results' screens....... Makes that process a whole lot simpler'
Not really. You can do that just as easily with:
if dr.Read()
{
// process first record <- eliminated with HasRows()
// loop through rest of recordset
}
else
{
// display error message
}
but with HasRows() it becomes:
if dr.HasRows()
{
while dr.Read()
{
}
}
else
{
// display error message
}
It eliminates the 'process the first record that the read() method read THEN loop through the REST of the results'.
I think it's cleaner. |
| Thu 29 May | Philo | Ah - Dave B., I think you have it!
I was thinking in terms of 'spool through the records' *or* 'test if data returned or act on a single record' - didn't think about the cross between the two...
Thanks all!
Philo |
| Thu 29 May | And the horse you rode in on | Even without HasRows() you can still do this:
if (ds.Read())
{
do
{
// process data
} while (ds.Read())
}
else
{
// display error
}
which is no less clean than the HasRows version really. I think it's a question of personal preference. |
| Fri 30 May | Just some dude | I think it's more a matter of when and how you need to process the records and how you are thinking it should be done. Everyone thinks about it differently.
Example 1:
if (dr.Read())
{
// proccess the first record because we are using a 'test at the top' looping construct and the first record may have to be processed differently than the rest and besides that it is already read because we have called dr.Read()
while (dr.Read())
{
// process the rest of the records
}
}
else
{
// handle the 'no records case'
}
Example 2:
if (dr.Read())
{
// process all records the same or use 'if' statements in the 'test at the bottom' loop to process records differently
do {
} while (dr.Read())
}
else
{
// handle the 'no records case'
}
Example 3:
if (dr.HasRows())
{
// you probably have to use a 'test at the top' looping construct here (different people will use different looping constructs depending on how they are thinking about the problem) because you know that there are records returned and you have to read at least one before processing it
}
else
{
// handle the 'no records case'
}
And so ends my doctoral thesis on computer science. The final conclusion being that loops are loops whether they are test at top or bottom. Congrats I'm now a Ph.D. in computer science. (If that's possible, I don't know, I don't own a degree!) |
|
| Any theories on this whole SCO vs Linux thing? | Thu 29 May | Crimson |
| If youve kept up with this thing over the past week and a half, you know how surreal this whole thing has gotten.
First SCO sends out 1500 threatening letters to companies using Linux claiming they might be held liable for IP infringement and then sues IB-freakin-M for $1 billion! THAT was a huge suprise in and of itself, but the story continues get wierder.
So earlier this weak, the president of SCO speculated on record that they might even sue Linus Torvalds himself! Uuuuhh...
But wait! In a news story yesterday, it turns out SCO doesnt really own the Unix patents! Oops Apparently, Novell still owns them, though SCO has tried hard to get them away for about the past decade. SCO just licenses Unix from Novell (and how Novell ended up with the Unix patents is its own trip down the rabbit hole).
Oh and behind the scenes, MS decides out of the blue to buy a Unix license for SCO.
Any theories on just what the hell is going on here? Its like a real life nerd-opera. |
| Thu 29 May | Chris Tavares | SCO is going under. Upper management is floundering for any way to get money. Extorting it via invalid intellectual property claims is one way. They sued IBM to get IBM to buy them. That's another way to get money.
It's just more stupid lawyer tricks. |
| Thu 29 May | Nat Ersoz | What is so weird, is that if SCO doesn't own copyright on the Unix code, then the only thing they have, best case, is a suit against IBM. And even that looks pretty convoluted without owning the copyright, even in the best case scenario where SCO reveals a smoking gun.
SCO is going to face a shareholder suit based on previous statements which claimed they had a copyright/patent case.
Kinda makes you wonder if the dot-com bust is truly over. Maybe this is the fat lady singing? |
| Thu 29 May | FullNameRequired | Im always surprised when the subject of a slashdot article turns up here.
The chances of anyone here coming up with anything new that hasn't already been said by the infinite number of monkeys on slashdot is pretty remote... |
| Thu 29 May | Brad Wilson (dotnetguy.techieswithcats.com) | Yeah, well, the average IQ here is about 90 points higher than at slashdot (something we're quite pleased about). :-p |
| Thu 29 May | FullNameRequired | 'Yeah, well, the average IQ here is about 90 points higher than at slashdot (something we're quite pleased about). :-p '
true...but thats *average* ...by sheer numbers slashdot will have an equal number of equally bright people, it just also happens to have a much higher number of the 'other kind' of person.
Certainly in all the other subjects raised here after being covered in slashdot JoS was unable to add anything new... |
| Thu 29 May | Wayne Venables | One thing that the SCO vs Linux thing has pointed out is how insanely interesting computing news is! Think back a bit:
a) The browsers wars
b) The instant messaging wars
c) Antitrust trials
d) Napster and the RIAA
...
And there are hundreds of tech news dedicated sites like news.com, zdnet, slashdot, etc.
You'd think computing would be more boring... |
| Thu 29 May | Rational | When you only have a hammer, everything looks like a nail.
Perhaps if you see everything MS do as automatically evil and to be opposed, you might start assuming their hidden hand is behind everything you disagree with. I personally think too many Linux advocates are falling into this trap.
I have no idea whether SCO's IP has been infringed or not, but I think it would be a good idea to discuss this on the basis of known facts, rather than the usual method on certain other sites which seems to begin from 'we have MS' and work forward from there.
I am not a lawyer. I believe (but am ready to be corrected if any are wrong) the known facts include:-
1. SCO is suing IBM for issues relating to trade secrets. Not copyrights, not patents. The _allegation_ seems to be IBM used trade secrets obtained from SCO (legally for some joint project) and then put them into Linux (which SCO argue is a breach of contract). Whether this allegation is true, and if true whether SCO is entitled to damages, remains to be established.
2. SCO sent letters to many companies saying Linux usage may make them liable for infringing SCO's IP.
3. SCO's officers have made statements about possibly suing various parties, end-users, other distributions, Linus, etc. at various times, relating to IP issues
4. MS paid SCO for some kind of UNIX license.
5. SCO says they own the UNIX source (copyright and patents). Novell says they own it. SCO's 10-K says they pay Novell royalties when they sub license UNIX.
6. Novell's recent press release saying they own UNIX source, came out, embarrassingly for SCO, just before SCO's earnings conference call. A key part here is Novell says SCO recently asked them to transfer the copyrights/patents, although SCO seems to deny it.
I am not a lawyer. Opinions on the above:-
From 1+2+3 - unless SCO have a copyright or patent claim, I do not see they can go after anybody except IBM or people with whom SCO has contracts.
2+3+4 - MS have a UNIX connectivity product for some time. They also use BSD stuff. They have done this for many years. They are cash rich and therefore would probably consider themselves a target for embarrassing and risky law suits of this type. Paying for a license to make the issue go away would be an understable course of action regardless of the merits of the claim or any other issues. This makes much more sense than setting out to boost SCO. I would not be surprised if some marketing person saw an opportunity to increase the Linux FUD, but I just doubt it was a prime motive. SCO's Q2 revenue thing says $21m, and $8.2m from SCOsource, so I do not think they paid much in any case.
5. Dispute about whether SCO even owns the copyrights/patents would be an obstacle to 2+3
6a. Another reason why Novell would want to assert their claims to copyright/patents, is maybe SCO wants to stop paying royalties to them.
6b. If Novell have a document (although there is nothing yet I have seen to suggest such a document exists) from SCO asking them to transfer copyright/patents, this would seem to be an acknowledgement from SCO that they do not infact own these copyright/patents - which could undermine 2+3+6a + possibly 4. In the case of 4, if such a document were to emerge, I would not at all be surprised if MS were to ask SCO for their money back. |
| Thu 29 May | Stephen Jones | --' how insanely interesting computing news is! '
Wayne, I wish you were being sarcastic. While the events you mention were happening, the US engaged in three wars, got itself bombed, the Supreme Court had to decide on the closest election in US history, the human genome was mapped, the Challenger burnt out on re-entry in a peculiar kind of symmetry to when it burnt out on exit, Sri Lanka managed to go through having its airport destroyed by a guerrilla group, having a peace settlement, and now veering back to war again, some collection of French nuts claimed to have cloned a human being and got an even nuttier Western press to pay attention to them, and a rather large etc.
Sure computer news is excting, But I bet it's nothing compared to the really wild tnings that go on in the fertilizer or ball bearing industries! |
| Thu 29 May | FullNameRequired | ' Paying for a license to make the issue go away would be an understable course of action regardless of the merits of the claim or any other issues. '
what utter bollocks. If theres one thing MS has been good at its _not_ throwing money away quite so pointlessly.
'This makes much more sense than setting out to boost SCO.'
??? no it doesn't.
In one scenario MS are throwing the $ away for no good reason, in the other they are spending money for a _very_ good reason.....to help trash a competitor.
MS has certainly shown in the past that they are fully capable and willing to do this. why is it so unlikely that they are doing it here? |
| Thu 29 May | Rational | The maximum MS paid is $8.2m, which is peanuts to them. SCO have said there are only 2 licensees for UNIX, one of which is MS. So they paid less than $8.2m
Choice 1: Settle. Pay less than $8.2m. No problem with SCO ever again.
Choice 2: Fight it out. Risk Bill Gates, the world's least sympathetic witness, being put on the stand. Risk lots of embarrassing documents come out (basically anything they have said about Linux or UNIX since the 70s - which must include at least somet stuff). Risk being sued for $1bn SCO vs IBM style. Risk being protrayed in the press as beating up on an 'innocent' little company (SCO). Risk a multimillion dollar future settle (MS vs AOL style). Risk running up more than $8.2m in legal costs. Risk not being able to recover their legal costs (probably more than $8.2m) even if they win.
Which would you choose if you were Bill Gates, or for that matter any other business. Companies, including MS, settle lawsuits all the time, even if they believe they are in the right -- because the risk and cost of not doing so can be worse.
I'm sure Bill would rather pay $0 or $1. But < $8.2m is nada.
In any case, MS do not need to finance SCO's attack on IBM - as Boies is on 100% contigency. |
| Thu 29 May | Barry Sperling | One of the characteristics of people with an inferiority complex is that they often try to tear down others, thinking that by bringing these others down below them they will somehow rise in the heirarchy.
Folks, your constant bashing of Slashdot, repeated in this thread, is a jarring reminder of this. One writer even claimed that the average IQ was higher here! What scientific source is that from? Slashdot doesn't regularly bash JoS, and the only time I remember it mentioned was when Joel wrote a long article defending his arrangement on this site, being a different model than that of Slashdot, and Slashdot carried a discussion on the topic.
If all of us, and this site, were truly superior it wouldn't be so important to try to drag down others. |
| Thu 29 May | Stephen Jones | Dear Barry,
There is only one mildly critical posting in this thread about slashdot, and that was tongue in cheek.
And believe it or not there are people who post to this forum who never read slashdot, which is why FullNameRequires's comment was rather a stupid one.
The only person 'bringing these others down below them they will somehow rise in the heirarchy' appears to be yourself, since the constant bashing you mention is largely imaginary. |
| Thu 29 May | FullNameRequired | Hi Richard,
'Choice 1: Settle. Pay less than $8.2m. No problem with SCO ever again.'
but also gain nothing. SCO do not own the copyright to UNIX, which means that MS will *still* have licensing problems if they had them before......I agree, if the payment actually resolved something it would be cheap. But it doesn't...any existing issues are still issues.
'Choice 2: etc etc'
Come on..they've risked more than that by a long way in countless other areas......you must have a short memory :)
'Risk a multimillion dollar future settle (MS vs AOL style)'
:) actually I judge that settlement to be a net gain for MS in lots of ways...
'In any case, MS do not need to finance SCO's attack on IBM - as Boies is on 100% contigency. '
I dont understand what you mean here...
Overall it it seems pretty clear & straightforward to me though. Linux is genuinely one of the (only) biggest potential threats Microsoft faces in the server (and gradually desktop) markets.
They cannot compete, its that simple.
In the same way that american developers are totally unable to compete with $7/hour indian developers, Microsoft is totally unable to compete with Linux. (over the long term of course, the one advantage that MS has is that OSS tends to take longer to get to where its going)
This gives microsoft only two ways of 'winning', change the playing field or find someway to destroy Linux.
Microsoft is in the process of changing the playing field, Palladium/Longhorn etc with its builtin DRM will manage this for the simple reason that OSS and DRM are a pretty hard combination to bring together. (although of course this will only work if the world at large accepts the MS way with DRM...I will be watching with interest)
They are verra likely indeed to be able to slow the rate of adoption of Linux by the world at large by spreading the usual FUD, and this will give them more time to change the playing field. (IIRC the spread of the BSD variant of Unix was slowed to a crawl by a very similar process)
And up steps SCO :)
(I cannot think of any way to destroy linux :) |
| Thu 29 May | somebody | There's no need for us to bash Slashdot given that they do a good enough job of demonstrating their intellect (or lack thereof) themselves. Here's a good recent example of this:
http://books.slashdot.org/article.pl?sid=03/05/20/1640225&mode=thread
Honestly, I visit Slashdot regularly and find loads of interesting links that I wouldn't have found otherwise but the general cluelessness that's demonstrated there sometimes (such as the thread I linked to above) is hilarious. |
| Thu 29 May | Rational | Who is Richard? I just picked a random name (Rational), if it conflicts with somebody else's I'll choose a different one.
> but also gain nothing. SCO do not own the copyright to UNIX, which means that MS will *still* have licensing problems if they had them before......I agree, if the payment actually resolved something it would be cheap. But it doesn't...any existing issues are still issues.
WRONG: It does resolve the issue completely
1. If SCO has the copyrights/patents, as they claim to, it resolves the SCO issue completely.
2. If SCO does not have the copyrights/patents - then yes this would be a possible MS line of defense in a SCO vs MS law suit, but they would still have to fight it
1+2 In any case, MS may prefer to avoid fighting a potential SCO lawsuit at all. Especially when it is not yet established where the copyrights/patents lie.
3. Both Novell and SCO agree that SCO have the right to sublicense UNIX code. So if MS pays SCO for a license, then Novell can not accuse MS of infringing.
> Come on..they've risked more than that by a long way in countless other areas......you must have a short memory :)
You seem to forget Bill Gates studied Game theory.
Bill's choices are Fight or Pay
- If he fights and wins, he might end up $0 if he wins costs and SCO is still around to collect from (probably unlikely, if he wins, SCO is probably bankrupt anyway). Or more likely he might end up -$10m to -$50m because of the legal costs
- If he fights and loses, he might end up down hundreds of millions
- If he simply pays SCO, at worst -$8.2m (and probably less as the max he paid is $8.2m - but we know it's less)
He may think it's extortion and unfair, but simply paying for a license is likely to be the least costly for MS. I would not be surprised SCO decided the license's price on that basis.
> 'In any case, MS do not need to finance SCO's attack on IBM - as Boies is on 100% contigency. '
> I dont understand what you mean here...
I am pretty sure that SCO is not paying Boies (their hotshot lawyer) a dime
If Boies wins or settles, he gets a percentage of the winnings
So as long as people keeping settling or Boies sees a chance of winning, this is going to go on, regardless of what MS or anybody else do.
SCO are doing this to generate money. If their claims have a basis, it's not at all illegitimate.
All MS are to them, are one of (many) potential the targets.
Given MS reputation, track record in recent law suits, and the fact they have a stack cash, they were poissibly the easiest target for SCO. |
| Thu 29 May | FullNameRequired | Hi Rational,
'Who is Richard? I just picked a random name (Rational)'
oops, sorry...meant Rational... my bosses name is Richard, must have been a freudian slip...
'WRONG: It does resolve the issue completely'
agreed :) some nicely made points.
'Bill's choices are Fight or Pay'
no, Bills choices are Fight, Pay or Wait.
Its important to remember here that there was *no* pending lawsuit (at least as far as your or I know) from SCO.
It sounds as though MS has been working on Unix interoperability for a few years, and presumably during that time has taken advantage of either code or algorithms.
Im willing to believe that.
*But* assuming they have done so, why wouldn't they take advantage of the code from one of the freebie Unix variants that are lying around? how would they get their hands on the IP of a copyrighted unix variant? ...and, assuming they did so, why pay up now?
'He may think it's extortion and unfair, but simply paying for a license is likely to be the least costly for MS. I would not be surprised SCO decided the license's price on that basis.'
I would.....if the only question was how much MS would pay without stressing, I personally suspect they would have gone somewhat higher....
'> I dont understand what you mean here...
I am pretty sure that SCO is not paying Boies (their hotshot lawyer) a dime'
ah :) Boies is their lawyer... I was wondering what Boies was....
definitely doesn't mean that the suit is a freebie though, expensive though lawyers are, they are not necessarily the only (or even the largest) expense in a lawsuit.
'Given MS reputation, track record in recent law suits, and the fact they have a stack cash, they were poissibly the easiest target for SCO'
Again, SCO never targeted them :) (at least as far as we know, and I suspect it would have made it to the media if they had)
also, given MS track record and reputation they are possibly the most likely source of the attempt to poison the reputation of Linux. |
| Thu 29 May | FullNameRequired | Hi there,
something else of vague interest just occured to my slow functioning brain.
What exactly were they licensing from SCO?
If MS _had_ included copyrighted code or IP belonging to SCO/Novell in Windows or some of their products, then thats _intensely_ illegal and would actually incur a suit on the same scale as the IBM one.
So it cannot be that.
So are they using unix servers at Redmond? maybe unix clients for testing the interoperability....thats more likely.
So why license those from SCO when there are so many other alternatives available? |
| Thu 29 May | Rational | You seem to be arguing my point here, by saying MS could have paid more.
I guess from a business perspective if you simply want the money, and want it now, you'd ask for as much as you think you can away with, while still leaving it as a no brainer for the other guy to say yes.
We simply don't know what discussions SCO had with MS, before MS paid up. It is quite possible, they got a 'friendly' call, suggesting they come into compliance with SCO claims or face possible action. We do know however that SCO and IBM had discussions prior to SCO suing IBM.
Futhermore, I doubt MS publish every cease and desist letter they get - even if they got one. Boies is also the same guy who represented the government in the antitrust action against MS, so he probably has some contacts at MS's legal anyway if any friendly chats were necessary.
As for using the 'free UNIXes'. I am sure that is what MS do do. They have acknowledged using BSD and I think GNU stuff (fully GPLed) in some of their products.
The point is SCO is claiming these free UNIXes are tainted, so there is nothing to stop them pointing out to MS, 'Hey guys, you use some free UNIX stuff. We believe some of this stuff is tainted with our IP. Don't worry though, buy a license for our stuff, and we won't worry about it or any past infringements that you accidentally did via this route.' |
| Thu 29 May | Rational | > If MS _had_ included copyrighted code or IP belonging to SCO/Novell in Windows or some of their products, then thats _intensely_ illegal and would actually incur a suit on the same scale as the IBM one.
They use some BSD stuff in Windows, or at least used to.
This is not illegal in itself, as they comply with the BSD license.
However if SCO claims this stuff MIGHT be tainted with their IP, then MS might feel they are at risk.
Also there is BSD and I think some GNU GPL stuff (again in compliance with their licenses) in their UNIX interoperability tools.
> So are they using unix servers at Redmond? maybe unix clients for testing the interoperability....thats more likely.
So why license those from SCO when there are so many other alternatives available?
I am sure they have some UNIX and LINUX servers for testing, interoperability, comparing to their own products etc.
Why license from SCO? Because SCO is the one who might sue them for one or more of the above. Paying off say Sun or IBM is not going to make SCO go away. To make SCO go away, you got to pay SCO. |
| Thu 29 May | FullNameRequired | Hi Rational,
'As for using the 'free UNIXes'. I am sure that is what MS do do. '
right, makes sense.
'The point is SCO is claiming these free UNIXes are tainted, so there is nothing to stop them pointing out to MS,'
no, the free variants are _not_ tainted.
As I understand it, there are 2(ish) UNIX variants. One which has passed through the fire of various lawsuits and has been declared open, thats the ancestor of FreeBSD etc (macosx is based on that).
The other which has remained under copyright and passed down to Novell from various other companies, and which SCO now has the right to license.
The case SCO has against IBM is that IBM has supposedly taken code from the 'righted version and pasted it into Linux.
There is absolutely nothing anywhere about SCO believing that the copyright of the BSD variant is tainted.
SCO has specifically responded to Novells claim of ownership over their UNIX variant by stating that they are not suing IBM because of copyright issues, but because of contract issues...the inference being that its the contract between IBM and SCO that allows SCO to sue IBM (because IBM has allegedly misused code they acquired because of their contract with SCO)
Now, there is no matching contract between MS and SCO, which means that there is no risk whatsoever of SCO suing MS.
So, I ask again, what exactly is MS licensing? |
| Thu 29 May | Rational | There is nothing to stop SCO claiming BSD has become tainted with new additions since the previous settlement.
In any case, they do claim GNU/Linux stuff is tainted. And there is no doubt that MS does use some of this stuff, for testing if nothing else, and I believe in their UNIX interoperability toolkit.
What they are suing IBM for - is presumably the strongest case they have
What they might sue others for - would be presumably the strongest case they have against these others. They need not sue them for the same things as they sue IBM for.
Perhaps they sue IBM for contract violations as the waters are less muddy in their opinion, than copyright or patents where there is a dispute over ownership with Novell.
Perhaps they will sue or threaten to sue other companies for different things, like copyrights or patents,even if they face some obstacles in the way - like copyright or patents. If they simply mail shotted 1500 large companies, then MS as a large company would be on the list.
What are MS licensing? One way of looking at it: The right not to be sued |
| Fri 30 May | Walt | I used to build machines for the Caldera testing department, when they were in a small little building on the side of train tracks.
I have to say I'm not impressed with their business tactics. The company purchased DR DOS for the sole reason of their lawsuit with Microsoft over the same issue. And they actually won it.
When they got sued for basically the same thing, they split the company off that had the liability and buried it under the name of Lineo and made it an LLC, so the same people could own it, but not face any monetary liability. I'm not sure where that company is now.
Now they purchased SCO and are using the same tactics again: using lawsuits to cover unprofitable business practices. The sad thing is they will probably win. |
| Fri 30 May | Katie Lucas | 'the Challenger burnt out on re-entry in a peculiar kind of symmetry to when it burnt out on exit'
That would be 'Columbia' burnt up on re-entry.
I know NASA committed the mistake of calling several shuttles things with the same initial letter, but I thought people here would read at least the second letter if not subsequent ones.
-- offtopic --
They're all named after exploration ships. Atlantis belonged to the Woods Hole Institute and was the first ship to use electronic soundings to map ocean floors. It's been replaced once (in 1966) and is due to be replaced again soon. Columbia explored British Columbia, Washington and Oregon by sailing through the inland waterways. Endeavour was one of Cook's ships, the first long sea voyage in which no-one died of scurvy. Enterprise is named for the NC1701. (And once flew over my school, on the back of its 747)
Discovery was named for a number of ships: Cook discovered Hawaii on one, Hudson explored his bay on one and the British Royal Geographical Society had two Discoverys - one explored the north pole, one the south.
They may have issues with building them and running them, but NASA can definitely name spacecraft well. |
| Fri 30 May | Rational | I ran across an article on eweek.com saying that SCO did approach MS with an IP claim. |
| Fri 30 May | Rational | To add to one of my earlier comments
> SCO's 10-K says they pay Novell royalties when they sub license UNIX.
Also on eweek.com, Novell says these royalties are only for some pre-existing Novell customers. Not for all SCO UNIX licenses. |
| Fri 30 May | mb | in general, microsoft doesn't pay out on anything.
it always fights.
why? because that increases the costs of trying to attack them. even if it costs them $100 + $200 in legal costs when someone demands $100, the demander got $100 - $200 in legal costs.
so the next person (who quite possibly is owed money) is damned unlikely to go after it.
microsoft only has what, 50 billion in the bank right now?
so any sudden licensing agreement is some sort of tactic. either funding sco. or more likely trying to convince all linux users that they will be sued next. |
| Fri 30 May | trollbooth | Katie,
it might have been off topic but it's the best thread I've read here ;-) Interesting stuff about the shuttle naming scheme. |
| Fri 30 May | Albert D. Kallal | For sure I think that SCO does think they have something of value to protect.
On the other hand, I do also think that this is a grab and last gasp by SCO.
Why use SCO Unix when you have Linux? What is left of SCO now?
If anyone has knowledge of Pick systems multi-valued database, then you will realize that for a good number of years THE platform of choice for running Pick was of course SCO Unix. Pick simply need a good quality Unix, and for sure SCO was the right choice (or shall I say Pick!).
So, from the late 80’s to the early 90’s, SCO Unix was a very good business platform to run Unix on, and for small business before Linux came along, the only small Unix vendor in your town was likely to be a SCO Unix var. (any larger company would run sun, HP etc). And, yes even Microsoft did also vend Unix systems through Radio Shack stores at one time into this market also!. So , Microsoft has in the past been a vendor of Unix! They were thinking multi-user SMALL business. The EXACT same market of SCO Unix was what MS was grabbing at. However, MS quickly figured out that networking pc’s was better for their bottom line.
Anyway, about 4, or 5 years ago Pick systems had started selling a system called Advanced-Pick Pro. Basically, pick systems did not really care about Unix, but they desperately needed a OS (any os!) to run Pick on. Prior to SCO Unix they ran the Pick system NATIVE to the x86 boxes. So, they took Linux, and stripped all they could out of the system to JUST run pick on top. The result was Pick-Pro. Unix was great, since all new hardware was handled by Unix, and Pick was sick and tired of writing drivers for things like tape drives etc (it just took precious resources out of the small company). Further, a lot of hardware venders were NOT interested in writing device drivers for the native pick system. So, Pick grabbed Linux and ran with it. All of a sudden, they could get their hands on a Unix, but not have to pay for it!
In a few years, it became obvious that who wants to run a clipped version of Linux. Now, Pick hardly bothers with the Pick-pro version, as most of us want a full version of Linux, and that is what we all run now. The real win here is that most hardware venders do write device drivers for Linux. This move no doubt saved the pick system.
Like any of us, if you can get royally free tools for a major part of your application, that is the direction you are going to run. . In fact, Pick systems was the first commercial database vendor to adopt Linux, and were the first commercial database vendor at LinuxWord by a number of years before the likes of oracle etc.
Of course, with Linux…who needs SCO? This begs the question, and was the question I ask the SCO dealer a few years ago? Why use SCO? I could see that the company was finished even 5 years ago!
Ok, now lets go back to this SCO dealer conference meeting that I was at a few years ago. Pick is simply a platform to run business software on. So, while us pick developers people were NOT Unix gears, or SCO Unix people, we usually got invited to most of the typical dealer demos and seminars put on by the SCO Unix people in each city. (since we DID have software running, and were a source of new customers).
So, I raised my had, and ask that question: Why use SCO when we now have Linux.? This was the question that everyone wanted to ask, but of course would NOT! The room went dead quiet! In the back of our minds, was why pay for SCO unix?
Remember this is about 5 years ago when major vendors like IBM or Oracle had NOT EVEN noticed the Linux thing yet.
The answer by the dealer was stunning:
You as a company should not use Linux because there are legal implications. There is no company with a brain would use Linux, since it exposes you and your company to lawsuits due to intellectual property rights that are in Linux. There is code in Linux that is proprietary, and open to lawsuits. Therefore, you should not use Linux. Until some of the source code is removed, you are taking a risk by betting on Linux.
Pure and simple FUD!!!
Pure and simple scare tactics, and that was 5 years ago!
What else could the dealer say to me?
In other words, SCO has been dealing his threat card FOR A LARGE number of years. It is not new, but now somehow they seem to actually found a real legal possible case here!
Unfortunately, at the end of the day, my question of why use SCO Unix still remains? Linux and Unix are not like Apple and Windows. Linux and Unix are like a different brand of butter! They really taste the same!
The problem is that the SCO dealer network now can’t make money from selling Unix. There are no upgrades and licensing fees to be had for Unix when Linux is free.
Fact is, Linux is here to stay…and I don’t need SCO Unix.
Not much else really needs to said…
Albert D. Kallal
Edmonton, Alberta Canada
kallal@msn.com |
| Fri 30 May | Albert D. Kallal | And, of, by the way. With the news of the E-bay lawsuit win, I am sure that SCO is now more motivated then ever with some possbile somthing down the road! |
| Fri 30 May | Ian Stallings | I can understand SCO's beef but they have yet to produce the actual evidence. They stated that when they do produce the evidence it will be under NDA. I find this quite baffling. Linux is open source so couldn't they simply point to line # then produce their own code? If it's already in the public domain then I don't understand the reasoning of releasing the evidence under NDA.
Not much of a business model
1. Hire lawyers
2. ????
3. Profit!!! |
| Fri 30 May | anonymous | The theory that MS is funding SCO becomes more clear when you consider the following. SCO has been losing money for a long time now. This quarter they reported a $4.5 million profit. Licensing fees brought in $8.2 million in revenue. From what I can tell SCO had less than $5 million in cash. Do the math. |
| Fri 30 May | Simon Lucy | SCO's marketing was similar even in the early 80's.
There may not have been a 'free' Unix to bitch about, but they positioned Xenix as 'not being Unix' and SCO System V as the only righteous release. |
| Fri 30 May | RocketJeff | Simon, remember this SCO *isn't* the SCO of the early 1980's. That SCO sold off it's Unix assets and renamed itself 'Tarantella'.
The current 'SCO Group' was known as Caldera before they renamed themselves earlier this year. There is no one in upper management at the new SCO that was at the original SCO. |
| Fri 30 May | Stephen Jones | Wasn't Caldera bought by the ex MD of Novell? The main reason he bought DRDOS was to get revenge on MS, whom he considered had cheated him in some previous negotiations.
I also seem to remember that he had been negotiiating with Lotus, which miight explain a certain animosity towards IBM.
I must admit, paying off SCO, and incidentally making people think that maybe there is something in their case, is a pretty good investment in FUD. I doubt the conspiracy theories though. |
|
| C++ reference book recommendations | Thu 29 May | Nick |
| Im looking for a good C++ reference book that also includes code samples of standard library functions. The two Ive heard cited most often are Stroustrups Annotated Reference Manual and The C++ Programming Language. If you have both, which do you reach for more often? Or is there a 3rd you like better? |
| Thu 29 May | flamebait sr. | The ARM has not been updated to correspond with the C++ standard, so it's rather obselete. Strounstrup would like to be able to write a new ARM, but there's some issues that are putting that on hold. More details are available at http://www.research.att.com/~bs/bs_faq.html
You can buy the exact standard from various standards bodies, or you can just use 'The C++ Programming Language', which works reasonably well as a reference text. |
| Thu 29 May | Michael Kale | I once heard this from someone smarter than me: there are three types of books: 'Legailty' books, 'Morality' books, and 'cookbooks'. Decide which type(s) of book you're looking for, and it will help you to find the right book.
Legailty books are something like Stroustrup. Very good for answering questions, learning about features, etc.
Morailty books are something like Scott Meyers' Effective C++ series. Very good for learning good practices and techniques.
Cookbooks are filled with example code that help get a feel for the language, etc. (Someone else can recommend good C++ cookbooks.) |
| Thu 29 May | Michael Kale | There are many ways to spell 'Legality' and 'Morality' too. hehe ;-) |
| Thu 29 May | Chris Nahr | For the C++ language: the latest edition of Stroustrup's 'The C++ Programming Language'. Barely readable, but hey, it's the standard reference...
For the C++ standard library: the latest edition of Nicolai M. Josuttis, 'The C++ Standard Library'. Very thorough, lots of examples, and easier to read than Stroustrup, too.
How to use the C++ language: Cline/Lomow/Girou: 'C++ FAQs', and anything by Scott Meyers. This includes 'Effective C++', 'More Effective C++', and 'Effective STL'.
By the way, the bets introduction to the C++ language is Koenig/Moo: 'Accelerated C++'. |
| Fri 30 May | treefrog | Round here, 'The C++ Programming Language' by Stroustrop is nicknamed 'The Bible'
regards, treefrog |
| Fri 30 May | Colin Newell | Advanced C++ Programming Styles and Idioms by James O. Coplien is worth a read. |
| Fri 30 May | Andrew Burton | I'm making a recommendation by proxy of another book, so I highly suggest you read the reviews at Amazon before wholly listening. I have recently (as of last night) fallen in love with my 'Learn C Programming for Linux in 21 Days' book -- don't let the title fool you, I'm 8 or 10 'days' into it, and it's standard C that will work on any platform I know of. I'm not using it in the 21 day timeframe, just as a reference book. Reading it last night, it explained pointers in a way that I finally got it, and the exaples of structs were very nicely written. They make a C++ book of the same title, which I have, but I haven't had a chance to get to it. I'm just saying... If the C++ is anywhere near as good as the C book, it's be worth investing in. |
| Fri 30 May | Ben Combee | While the Coplien book is good, it is also very out-of-date, and it doesn't mesh with a lot of the modern strategies for writing C++ code using the standard library, including the STL classes and popular add-ons like Boost.
I personally agree with the Scott Meyers recommendations, and I also like 'Modern C++ Design', although it is a very dense book, even for compiler writers like myself :) |
|
| Document clustering | Thu 29 May | anon |
| Anybody working here on document clustering software? |
| Thu 29 May | GiorgioG | Can you be a little bit more specific? |
| Thu 29 May | anon | I mean clustering results of search engine outputs, something like vivisimo.com
Using clustering algorithms |
| Thu 29 May | David Clayworth | Good grief, do people still do this? I worked on these algorithms for a while in the eighties. I thought they went away with batch mode searches. |
| Fri 30 May | Super /\/ Searcher (LOL!) | http://www.vivisimo.com/
try it, it's good! |
|
| Super Long Screenshots | Wed 28 May | Chris Ormerod |
| I would just like to know how does Joel make those long screenshots of fogbugz in IE?
Is it just the stitching tool in photoshop or something, or is there a program out there that can take a screen shot like that? |
| Thu 29 May | Duncan Smart | Print Screen key on keyboard (or Alt+PrtScr for just the active window), alt-tab to image editor, paste and crop as necessary. (Stitching programs not required nor recommended as they're designed to correct perspective etc of photos.) |
| Thu 29 May | www.marktaw.com | extremely high resolution desktop combined with a browser that's set to xx pixels wide by the entire height of the desktop? |
| Thu 29 May | Ros | You can use specialized screen grabbing software to do the same for a scrolling window. I have tried SnagIt from http://www.techsmith.com/ and works pretty well. |
| Fri 30 May | Steve | Take a look at Snag-IT:
http://www.techsmith.com/products/snagit/default.asp |
|
| Is Bangalore a brand in itself? | Wed 28 May | Smith |
| Hi,
I am conducting a research on branding of software parks worldwide.Suggestions and opinions on the following is highly appreciated.
1. What comes first to your mind when you think of Bangalore city?
2. Is Bangalore a high-tech city?
3. Why the elite software companies like Microsoft, IbM are located in Bangalore |
| Wed 28 May | John Rosenberg | 1. Silicon Valley v2.0
2. Yes
3. Smart people. Low cost. |
| Wed 28 May | sumit | Yes it is... |
| Thu 29 May | one programmer's opinion | Could you provide me with some of the names of these software parks that are located throughout the world?
Answers to your questions.
1. Poverty.
2. Yes, I suppose. Most Americans would probably respond to this question by saying 'Bangalore city is located where?'
3. Plenty of inexpensive English speaking labor. |
| Thu 29 May | realist | At the moment it's like one of those theme parks where the tumbleweeds will blow in the breeze in 15 years time. |
| Thu 29 May | Steve | These links may be helpful to learn more about Bangalore and Indian IT
http://www.bangaloreit.com
http://www.nasscom.org/ |
| Thu 29 May | Stephen Jones | Branding of 'software parks' is precisely that, sticking a name on something. And in many cases we are actually talking about 'copy-cat' branding, equivalent to the false Rolexes and Levi jeans you find in so many places.
The phenomenum of silicon valley was in existence long before the name, indeed it pre-dated the use of silicon by many years as well. I presume at first it was the proximity of cheap real estate and the proximity of the university, and then the concentration of electronics firms created its own dynamic.
Bangalore was not branding either. South India has a large number of people for whom English is a second language because Hindi is an Indo-Aryan language and the languages of South India are dravidian. Alos throughout the Indian sub-continent English is a medium of insruction in universities. You then have the existence of the elite technical schools set up by Nehru, and the existence of a large Indian diaspora, the fact that programming is not capital intensive to learn, and the result is the possiblity of a software industry. I would suspect that there were plenty of other places it could have grown apart from Bangalore but as with silicon valley the combination probably would have been a combination of proximity to the university, low real estate prices for the services involved, and the usual dynamic of companies already starting up there.
Silicon Fen in the UK is based on the proximity of the University of Cambridge, the first college of which was founded in 1256, after the invention of the abacus but still predating the invention of the computer.
Attempts to consciously create a 'software village' don't work that well. Dubai's 'Internet City' as mentioned in an earlier thread , is a glorified shopping mall. and Malaysias' 'Internet Corridor' is staffed by Indian programmers whom the Malayasian government then rounds up en bloc as illegal immigrants and holds 24 hours in the police station. Both areas probable centralize the host countries IT to some extent, but neither appear to attract significant outside work.
There were advantages only a few years ago to dexlaring an area a hi-tech zone. It meant that communication resources such as broadband and fiber optic MAN'scould be concentrated in one area. For less developed countries it was also sending the message that their government was interested in attracting IT investment.
Broadband is now fairly ubiquitious in much of the developed world, which probably explains why we don't hear of new software villages in Europe, Japan and Korea (France incidentally does have on near the French Alps - helped I believe by the proximity of the Aerospace industry - so if there are any cheese-eating surrender monkey lovers here who like skiing it's worth giving it a lookin). |
| Thu 29 May | richard | Don't forget that india is in a fairly unique timezone (for english speakers). Makes it really attractive for first-line tech support. Also, several years of cheap outsourced development is building up its national expertise in software. i.e. they are becoming competitive in ability on its own merits, not just ability/price ratio. |
| Thu 29 May | treefrog | The French technical park is called Sophia Antipolis, and it is on the Cote d'Azure, just outside Nice. Very nice weather and stunning ski-ing and climbing.
However, if you look at French job websites, you will find most job opportunities are in the Ile de France (the greater Paris area). Shame really, because it is flat, has no snow, and crap weather. Oh well, might as well stay in the M4 corridor in the UK!
regards, treefrog |
| Thu 29 May | | > they are becoming competitive in ability on its own merits, not just ability/price ratio
Sure. If you believe that. |
| Thu 29 May | RocketJeff | '1. What comes first to your mind when you think of Bangalore city?'
Having been in the U.S. Army, the first thing that always pops into my mind is the Bangalore Torpedo:
http://www.globalsecurity.org/military/systems/munitions/bangalore.htm |
| Fri 30 May | . | So what is this, Mr 'Smith' -- not really an anonymous Western name by the way, Smith -- each week we pop in some innoccuous question that just happens to push the Indian software industry.
Do you work for Nasscom? |
| Fri 30 May | Stephen Jones | The guy is probably doing a thesis and trying to do a little free research. Nothing wrong with that.
I really doubt if NAsscom is going to be interested in pushing its case through anonymous posters on the JOS forum. Unless you think every question about silicon valley or NYC or Microsoft icomes form moles in the Department of Commerce. |
| Fri 30 May | A Software Build Guy | 1:) Power Outages, Water Shortages and General Strikes
2:)Not with the number of infrastructure issues I heard of. Most of the big companies there have onsite emergency generators from what I hear.
3:) Cheap Educated Labor....
My former supervisor spent a week in Bangalore three months ago and I get aleast weekly emails from a development team their. This is the impression I got from them. |
| Fri 30 May | Stephen Jones | Now I raised the question of infrastructure about four months ago, and people in Mumbai (Walter) and Bangalore) claimed it wasn't too much of a problem. Of course if they'd already bought the generators!
The question of poor infrastructure is one I have raised before. When the new government got into power in Sri Lanka it promised an end to the power cuts caused by the ongoing droughts (which if you keep in touch with the news has ended spectacularly). Accordingly they arranged for oil generators to take up the slack from the hydro-electric power stations, and upped the price of electricity accordinlgy.
Yet for differing reasons I would reckon I have still been without electricity one day a week. And the phone line goes dead once or twice a year (and remember I am only there three months a year).
If you plan ahead you can probably allow for these factors; for example in Sri Lanka, and presumably Bangalore, you can get a two way satellite internet connection as a fail safe for the telephone one, but you do need to factor the cost in.
Add to this the difficutly of carrying out normal business propositions caused by the idea that a westerner is there to be ripped off and it does mean that there is not yet the agility you have in other locations.
Which is probably good news for American and European developers! |
|
| Timekeeping & Billing App | Wed 28 May | Nathan |
| Im just starting to do my own consulting on the side, and wanted to know what everyone uses to keep track of their hours on each particular part of a job. I know there was a thread where someone created an app specifically for their handheld that generates an invoice and such... does anyone use/know of/recommend cheap or free apps that are easy to use and functional in this regard?
I will primarily be using a laptop to keep track of this stuff - no handhelds for me. Win2k/WinXP preferred - no *nix.
Thanks a lot. |
| Wed 28 May | Brent P. Newhall | I use a piece of paper, actually, where I write things down in a table based on who's working on what.
Excel would automate this, but I don't need it to be automated. I pay by the week, and I only track hours on a weekly basis, so all my numbers are 'pre-computed,' so to speak. |
| Wed 28 May | www.marktaw.com | I like the Allnetic Working Time Tracker for keeping tack of my tasks
http://www.allnetic.com/working-time-tracker/index.html
it's amazing how many 5 minute jobs are really 15 minutes, and v.v.
What you do with it once you have it in the program is a different question... At the end of the very week I had it give me the time I had on each different task and manually entered it into either Excel or our time tracking software. |
| Wed 28 May | Nathan | mark - i just downloaded and tried the Allnetic app... i love it! thanks for pointing me in that direction. |
| Wed 28 May | www.marktaw.com | np - I love it too.
Now if only it would print reports or export to CSV. |
| Wed 28 May | realist | I've been contracting/self employed for 17 years, over the years my timekeeping/invoicing/expenses application that I originally developed in Clipper in 1987 has 'morphed' into an VB.NET (Access Backend) extension of my psyche.
I've thought about selling this thing but it's probably not worth it as there are so many other 'bigger' products around that do all the things that I need plus a million more.
My system Prints Invoices, keeps expenses (by category), reconciles to a single bank account, does timekeeping and calculates my quarterly tax bill. I've checked out MYOB and Quickbooks and a few others and find my own software vastly supperior due to its simpleness (4 tasks). In the end if you're a one man show like me most software on the shelf does too much. |
| Thu 29 May | Steve | I use Track-IT Light http://www.dovico.com/time_and_attendance.html
it cost about $30 bucks but it's worth it.
However, that Allnetic is freeware, so how can you go wrong. I would try that first. |
| Thu 29 May | Nathan | Mark - the version of Allnetic I tried not only exported to CSV, but it exported to XML, HTML, and tons of other formats. It also prints reports, and can do the reports in HTML and some others. Apparently you can even create your own template and create Invoices, reports, etc.
Very slick stuff. |
| Thu 29 May | Justin | Realist,
I'm pretty much in the same camp as you, although I have a lot less contracting experience (I keep falling for the 'If you work permanently here, we'll....' lines that I get thrown towards the end of my contracts).
How do you handle agencies who insist on handwritten timesheets - preprinted, 3 carbon copies - and insist they get posted?
(I don't mean 'handle the agencies', I mean solve the problem) |
| Thu 29 May | www.marktaw.com | nathan - sounds like I have to upgrade! Thanks for the tip. |
| Thu 29 May | www.marktaw.com | nathan - were you trying the expiring beta version? |
| Thu 29 May | Nathan | mark - yes, i was under the impression the app itself wouldn't expire, just the ability to download. if this isn't the case, that seems kind of silly, since the app is free anyway. |
| Fri 30 May | www.marktaw.com | nathan - Yeah, I think they plan on charging for the 2.0 version, which is why it expires. It seems like it may be worth it though if it does everything you say. |
|
| Google search results quality decreasing??? | Mon 26 May | JD |
| Hi All,
Earlier whenever I googled for any query, I used to blindly open first 2/3 links.
But these days its not the same. Results are just not upto the mark!
See this query:
http://www.google.com/search?hl=en&ie=UTF-8&oe=UTF-8&q=dynamic+HTML+best+scripts+download+free
The first result it returned was not at all what I was looking for! :(
Whats your experience??
JD |
| Mon 26 May | www.marktaw.com | I hate it when I'm searching for a product's homepage and I find all sorts of sites selling it, or commenting on it, but the company's program is pages and pages down. |
| Mon 26 May | JD | Btw, it returned me http://builder.com.com/ as first result.
JD |
| Mon 26 May | Nick | I haven't noticed any dropoff in quality. Those are some fairly common words on the internet for Google to search for and try to logically assemble into phrases. If you try putting the phrases in quotes the results are better: 'dynamic HTML' + 'best scripts' + free + downloads, then the first link is much better --
http://simplythebest.net/info/dhtminfo.html
Also, you could try http://www.kartoo.com . It gives a slick visual display of related links for general subjects. |
| Mon 26 May | JD | May be this query was not that good. But I am still not sure how builder.com.com made it to the first!!!!
Anyways, this is what I have been feeling for quite some days now. May be I am too dumb to write a good query or there is something else..
I wanted to know what others feel about it.
JD |
| Mon 26 May | www.marktaw.com | Good queries are an art.
The more obscure what you're looking up the harder it is to find. I've completely given up on finding certain things because I couldn't find a good query that would narrow down all the words on the web and spit out what I want.
I think it will be decades before that kind of thing becomes possible, so for now, even though machines are replacing humans for mechanical chores, there are some tasks that still require a person.
Then again, they have a computer now that will recognize any song from a small sound clip. This is probably similar to the Echelon technology that listens in on phone conversations and automatically flags some discussions for review. |
| Mon 26 May | Nick | builder.com probably made was first because it contains dhtml scripts that you can download for free. That, and it's run by CNET which is a high traffic site. So what don't you get? |
| Mon 26 May | www.marktaw.com | I thought traffic had less to do with Google than links.
Why are more people linking to builder.com lately, or what site has Google discovered that has 7,000 links to Builder.com? |
| Mon 26 May | JD | I wasn't happy with result because the resultant page didn't had ANYTHING which I can use directly.
If you go to builder.com, you will find that there is not a single direct link from where I can download script.
I have to again go through the site and find whether there are any good DHTML scripts around.
JD |
| Mon 26 May | Simon Lucy | Well you didn't ask for DHTML you asked for best HTML dynamic, quite what best means I don't know.
Off the top of my head I might try DHTML+script+collection or DHTML+script+sample |
| Mon 26 May | DJ K | It is obvious to me that the Google results degraded suddenly about 1-2 weeks ago.
:-(
I think they changed the ranking algorithm, or something, and now it's sh**sh.
:-( :-( :-( |
| Mon 26 May | Boris Yankov | The search keywords are just silly.
Hey, man, are you searching for first time in your life?
Do you believe that 'best' can be a good word for searching?
Do you think that 'HTML' on its own is a good word?
Do you think that 'download' is necessary?
I just tried
'free scripts' 'dynamic HTML'
and believe me it gives pretty good results. |
| Mon 26 May | Jan Derk | As most will know Google updates its index each month. The period when this happens is called the Google dance. The latest Google update has been described by most web masters as a major degradation. Google itself have confirmed that the search quality has gone down due to new algorithms, but are stating that it should lead to better results in a few weeks as spam filters and refinements are applied.
There were thousands of posts about it on the Google News forum:
http://www.webmasterworld.com/forum3/ |
| Mon 26 May | Li-fan Chen | Yeah.. I get the same dejavu feeling. Can anyone recall when this degradation started to happen to Altavista? It was little weaknesses like this that got me interested in google in the first place. |
| Mon 26 May | JD | I guess I accepted that my this particular query isn't that good.
But in general, I have got this feeling about Google and I wanted others opinion about it! :)
JD |
| Mon 26 May | Brad Wilson (dotnetguy.techieswithcats.com) | My feeling is that using Google has become a more precise activity, not because Google has gotten any worse, but because there has been a LOT more data infused into the system (especially by bloggers).
Phrase searching is pretty much a must for accurate results, where that used to not be true. |
| Mon 26 May | Evgeny Goldin | [[ The search keywords are just silly ]]
Boris, those words you didn't like are called 'stop words' and should be normally ignored by search engines. |
| Mon 26 May | Heston Holtmann | One would assume that by giving google _more_ words to search with you are going to improve the results of what you want.. but i am finding that fewer words is better when you are searching for statistically _common_ things.
try this:
http://www.google.com/search?hl=en&ie=UTF-8&oe=UTF-8&q=DHTML+scripts |
| Mon 26 May | victim, jr. | definitely altavista revisited. searching on google used to not be an 'art'. you just typed in some terms and it was as if magic was performed and google gave you what you wanted. altavista was like that too at first, then it slowly started the decline. then the altavista apologists started in with the 'you don't know how to search' schtick. |
| Mon 26 May | DB | The thing I have noticed recently that is quite annoying is the the context sensitive text ads.
Usually I find the ads useful and unobtrusive, but recently there has been a lot of 'Search for item such and such' on ebay or pricegrabber.com. What I often look for would not even be on those sites.
Putting up something so generic as search on ebay or whatever site is distracting and will cause me to just start ignoring the ads instead of looking to see if there is anyting useful.
Next thing you know google will start using popups and banner ads. |
| Mon 26 May | www.marktaw.com | So many people use google BECAUSE they don't have popups and banner ads that I think they're smart enough not to do that.
I read an article about Google changing their search algorithms... For example they'll only count one link per site rather than one link per page, so if every page on your site has a link to something, they only count one link now. |
| Mon 26 May | Boris Yankov | Evgeny,
These words may be used very widely but an advanced search engine just can't ignore them. Google is ignoring only words like 'the', 'a' etc. I could be searching for a product called 'Best Script' and by ignoring the word 'best' you may guess what will happen. |
| Mon 26 May | J. D. Trollinger | Maybe I just didn't know what I was doing, but I thought that AltaVista sucked right from the beginning. As I recall, AltaVista defaulted to using 'OR' between search terms, which I thought was extremely silly. |
| Mon 26 May | www.marktaw.com | i loved altavista, i used the +force include and -exclude all the time to build my searches.... but for the casual user it may not have been as good.
i was a slow adopter on google, but i've been using it ever since i switched. |
| Tue 27 May | Richard Ponton | Altavista using OR made sense when they started because there were fewer web sites. The idea was to find as much as possible. The web explodes, their signal to noise ratio gets worse, and suddenly OR by default seems stupid.
Google is a victim of its own success. It's the top dog, so now people are gaming the system. They figured out how to get ranked on Google, so they engineer their sites and cooperate across sites to increase their position on Google.
Now Google is trying to experiment with algorithms to detect 'cheating' and still give relevant results. |
| Tue 27 May | Nick | I've never gotten excited about any of the search engines. If you want good search results you have always needed to provide good search criteria. Garbage in - garbage out, right?
So why did Builder.com come up first? Since this thread hasn't died yet I thought I'd do a little more digging.
First, if you follow the 'web scripting' link in the left sidebar, it leads to a whole page of scripts - DHTML, javascript, etc. OK, that's legit.
Second, if Google's results are based on the number of links to a page, then Google itself provides the answer to this. In Google's advanced search, you can search on sites that link to a URL. Builder.com yields 56,000 pages linking to it - far more than any of the other search results. That's legit too.
Or is it? Maybe not ...
Every CNET Network (includes CNET, ZDNet, TechRepublic, GameSpot, et al.) web page has a link to builder.com in it's boilerplate footer. Browsing through the first 5 pages of the advanced search results (above), all the links were from other CNET Network pages.
So, it seems that large sites can guarantee that they always come up high in Google's rankings my including links to their own pages in a boilerplate footer.
I don't know if Google has always done this, but it seems flawed to me. |
| Tue 27 May | www.marktaw.com | 'I don't know if Google has always done this, but it seems flawed to me.'
yes, and they're working to correct this - see my post a just a couple of posts higher in this thread.
I kind of like Vivisimo http://vivisimo.com/ as a sort of meta search engine.
http://vivisimo.com/search?query=dynamic+HTML+best+scripts+download+free&v%3Asources=AltaVista%2CMSN%2CNetscape%2CLycos%2CLooksmart%2CFindWhat&x=54&y=18
Who actually puts 'best' and 'free' in their search terms? I think only cheezeballs put the words 'best' and 'free' on their sites (to drive traffic from cheezeballs who search for those terms). Invariably anyone who uses the word 'best' to describe their own site has a site I don't want to see. |
| Tue 27 May | www.marktaw.com | PageRank is Dead
http://jeremy.zawodny.com/blog/archives/000751.html
Interesting article. |
| Tue 27 May | Nick | That zawody article is interesting. I didn't know that there was an effort to filter out the impact of blogs.
I tried 'Joel' on Google and surprisingly joelonsoftware came out #1. I would've thought Billy Joel would have beat him out. That's pretty damn impressive if you think about it. How many people can enter only their first name into a Google search and come up #1?
[I'll bet he's glad his parents didn't name him Dick.] :-) |
| Tue 27 May | www.marktaw.com | Well... Billy Joel's been out of the music game for a while. And Joel Spolsky writes stuff on the web, so it stands to reason that there will be more web links to his writings than to a pop musician whose quit making pop music.
I've read a couple of articles recently about technologies that will allow Google to perform it's pageranking in half the time... What the end result is, is that they will now be able to perform much more complex spiders of the web & allow you to run more complex queries. Some say to the point of returning personalized results.... Perhaps even localized based on your IP address.
Search: Spears
Based on your search history, geographic location, and demographic information you filled in, we think you're searching for 'Frozen Broccoli Spears Recipes' and not 'Britney Spears Pop Sensation.' |
| Tue 27 May | Brad Wilson (dotnetguy.techieswithcats.com) | Well, I'm the #12 'Brad', but I think my name is more popular that Joel's. :)
I'm definitely the #1 'Brad Wilson', and have been for a long while. I'm ahead of the guy who owns bradwilson.com. Hell, my abandoned domain that now advertises junk is in second place, presumably because there are a lot of people out there with links to my old site.
Google has stated that they are NOT taking blogs out of the index. They will very likely make tweaks to the algorithms, though, to de-emphasize the obvious over-importance of blogs in their indexing system. |
| Tue 27 May | Ged Byrne | Its definately the word 'Best' that is spoiling the search. Builder.com comes out top because they have used the word 'best.'
Removing the word best gives much better results. |
| Tue 27 May | One-Armed Bandit | I noticed the same thing about a week or two ago. I'm definitely having to wade through more crap on my google searches. |
| Tue 27 May | somebody | Yup, I've noticed this as well. The most annoying part to me is searching for a product or company by name and ending up with pages of places selling it, rather than the official site. |
| Thu 29 May | John Aitken | Yes google is going downhill. Same query, one year later, expected I'd be able to find the same useful sites, crap instead. I've met at least a dozen cases of this. |
| Thu 29 May | www.marktaw.com | > Yes google is going downhill. Same query, one year later,
> expected I'd be able to find the same useful sites, crap
> instead. I've met at least a dozen cases of this.
Sounds like an expansion of Sturgeon's Law. Do you think there was just more useful stuff on the Internet before? And of course the number of links to useless crap must be expanding, the question is, is it expanding faster than the links to useful crap? |
| Fri 30 May | Kent Design4Effect | Crash course on using Google.
You can use quotes
>'bic pen'
You can use '+' so word must included in listing
>'bic pen' +blue +manual
You can use '-' to exclude entries containing that word
>'bic pen' +manual -buy -ebay
Using these you will get much better queries |
| Fri 30 May | www.marktaw.com | Hence the whole 'art' discussion. |
|
| Any reason to consider .NET for this? | Sun 25 May | Mitch & Murray (from downtown) |
| Here at Mitch and Murray we are getting ready to develop a new end user app targeted to software developers. It must work well for both the one developer / no server shop as well as a full squad of developers using a server. There is a large amount of database action as well as various internet communcations protocols inherent in the design. A web interface is not required, and is not in the spec, but might be useful at some future point.
Our first choice is to use Borland Delphi along with various third party tools to do the job. This is what we know, this is the environment that we have confidence in.
On the other hand, is there any reason why we should look closely at .NET using either C++ or C#? Has there anyone that has been down this road before us who has _carefully_ looked at .NET and the tools, and can comment? We already own all the Visual Studio .NET stuff as well as the latest Delphi tools, so cost of development tools is not an issue. We want a deployment platform that works well now and into the future.
Many thanks, and Good Leads to you all,
- M & M |
| Mon 26 May | Albert D. Kallal | What the heck kind of software budget do you have here?
You mean you can just jump in, and adopt a new platform without doubling, or tripling your time estimates?
I mean, it takes a good 6 to 14 months to really learn a new environment. You productivity during this first year will be at least 1/2 (if not one third) less in terms of programmer output!
Can you really afford to just double, or triple the budgets because you “FEEL” like using ad different tool?
Gee, boss, well if we use our existing software team with all their knowledge and cool tools and utilities they have been developing with for the last few years (ie: Delphi), we can do this in 5 months. However, if we use the new .net stuff, we need extensive training, and the developer team needs a good year to get up to speed. So, instead of 5 months, we need a 17 months of budget time. Can your company really afford that?
Can you just triple your budget out of the blue? Gee, I want to work for your company. Well, of course you will use .net! You get to triple your budget, and spend a whole year learning new platform. Gee, go for it!
Next time use Oracle. And then Sybase the next time!
The only reason that would stop you here from using .net is your budget, and it sounds like you don’t have one! How can you possibly just change your major development platform on a whim?
I have more then once quoted the following skills set from Yourdon’s book Decline and Fall of the American Programmer. They are:
Stage 1 Innocent (never heard of the product)
Stage 2 Aware (Has read an article about X)
Stage 3 Apprentice (has attended a three-day seminar)
Stage 4 Practitioner (ready to use X on a real project)
Stage 5 Journeyman (uses X naturally and automatically in his job)
Stage 6 Master (has internalized X, knows when to break the rules)
Stage 7 Expert (writes books, gives lectures, looks for ways to extend x)
To attempt any software project with a team comprised of 3 or less is going to be a complete disaster. Even if the team is comprised of just Stage 4, you better have some stage 5’s or 6’s on the team for design and project lead.
Boy, if you can just pick your tools out of the air, and triple your software budget, then you are lucky person. Go for .net! You will be being paid to learn a new platform, and make some mistakes along the way, but who cares if you don’t have a budget here!
It must be nice to be in that position!
Albert D. Kallal
Edmonton, Alberta Canada
kallal@msn.com
http://www.attcanada.net/~kallal.msn |
| Mon 26 May | Mitch & Murray (from downtown) | Albert:
This is a great and typical spew. However, you didn't give me a single reason to consider .NET.
That, I am afraid, is my question. The details and the consequences of the adoption of .NET was not part of the equation. |
| Mon 26 May | Nat Ersoz | Linux d00d, straight C, GUI in motif and protocols all hand-written. You'll be done in a week. |
| Mon 26 May | Brad Wilson (dotnetguy.techieswithcats.com) | When all other things are equal, choose the thing you're most comfortable with.
Is there any hole in Delphi that you're hoping .NET will fill, like say, great support for Web Services? If not, then Delphi is likely to be the right choice. |
| Mon 26 May | And the horse you rode in on | Since when do people who write books on things fall into the expert category? Most of the people out there writing programming books write books because they can't hack it as programmers ... |
| Mon 26 May | YF | Wasn't Delphi 7 supposed to have some kind of .NET support?
http://www.borland.com/delphi/pdf/del7_feamatrix.pdf
And then there's this 'Delphi for .NET' thing coming.
http://bdn.borland.com/delphi/platforms/dotnet/
What was the reason for using C# again? |
| Mon 26 May | Chris Nahr | 'What was the reason for using C# again?'
That it already exists, as opposed to just being 'coming?'
Anyway, as for the original question...
First some deployment issues. Using .NET means that all machines that run any part of your application:
a) MUST have the .NET Framework installed (23 MB), and anything the Framework requires, including IE 5;
b) CANNOT run Windows 95 or NT 3.51.
The Framework isn't too widespread right now, so if the Delphi solution has significantly lower prerequisites you might reach a bigger market. These issues remain the same regardless of the .NET language you choose, by the way, so Delphi .NET won't help here.
As for language choice, there shouldn't be too much difference in productivity between C# and Delphi. But you should have a look at the .NET Framework library because that's where I expect you'll find the biggest difference to your current environment.
Jeff Prosise's 'Programming .NET' (MS Press) is a good overview; you might want to check MSDN Online and browse other .NET books to get an idea what the standard library can do, and if it might help you with whatever requirements your project has.
I definitely recommend against using C++ with .NET unless you really have to. Managed C++ packs another layer of ugly complexity on top of an already overcomplicated language. You should use it only as a last resort when you can't otherwise get the runtime performance you need. |
| Mon 26 May | Simon Lucy | Since you're intending to ship a product you also have to be aware that .NET's CLI means its easy to decompile, unless you use managed code, which (I think) implies C++. |
| Mon 26 May | Chris Nahr | 'Since you're intending to ship a product you also have to be aware that .NET's CLI means its easy to decompile, unless you use managed code, which (I think) implies C++.'
Probably just a typo, but to clarify: Managed code means MS Intermediate Language (MSIL) which is easy to decompile. UNmanaged code is native x86 machine language which is hard to decompile.
You do need Managed C++ to mix both in the same assembly, but you could also create a native DLL in any language that can produce a standard C interface. Such DLLs are easily accessed from a .NET program using the built-in interoperation features. |
| Mon 26 May | MyNameHere | Reasons to use .NET - M$ is backing it to the hilt so it's probably going to be around for a while. You could argue that learning it now is an investment in the future of your company. Also, the developers who work for you will be happier working in an environment that allows them to learn new skills.
I disagree with Albert's analysis of how long it takes to get up to speed with a new language/technology. Sure the learning curve will be steep and your initial code may suck. But as long as you design things properly, you can always replace sections later as you learn more and improve. Besides, if we all thought that way then we'd all still be programming in COBOL or FORTRAN (apologies to those of you who still are).
Of course, this is assuming that you have some smart people who know or can learn OO design. |
| Mon 26 May | Jan Derk | The fact that a technology is backed by Microsoft does not necessarily mean that it will be around for a long time. Microsoft has abandoned several technologies in the past to replace them with newer ones.
For example, win32 is no longer supported since VB6, while Borland announced that Delphi 8, to be released at the end of the year, will still support win32 (besides .NET and CLX). And its applications will run on all 32 bits Windows platforms. |
| Mon 26 May | Marc | Lets clear up some myths:
MANAGED CODE:
Managed code means code that uses the .NET Framework. By managed, it means things like the garbage collector for managing memory.
Because .NET uses Just In Time compiling, it is easy to decompile it. It isn't the fact that it is 'Managed' but rather that it isn't fully compiled. There is software available to encrypt this code and therefore protect your code from decompilation.
WIN32:
Win32 has not been abandoned. It just isn't part of the .NET Framework. This is because .NET is designed to be supported by multiple platforms and only Windows has Win32.
You can still access everything in Win32 from within any .NET language, but you are restricting yourself to Windows at that point (obviously this isn't an issue today but it could be latter).
So Delphi isn't doing anything special. They are just using the Microsoft.Win32 name-space that is provided by the .NET Framework on Windows.
----
As for switching to C#, I don't see a reason you should. By using Delphi for .NET you can get all of the new functionality of the framework without the cost of learning a new language.
Of course, .NET doesn't care what language you use so you could do some in Delphi, some in VB.NET, and a little more in C# if you felt like it.
Hope this helps some. |
| Mon 26 May | william williams | I was in a similar position 2 weeks ago. I had to pick a development environment and language for a new project. I wanted to use .NET. After reading the comments for the thread I started, it was clear to me that there was no reason to switch to .NET yet. I say “yet” because I did create a small application/prototype using C# about a year ago. The development environment and object model were surprisingly consistent, and I effectively used a lot less code and less time, as advertised (The Professional C# 2nd Edition book helped a lot as a reference).
So, why I didn’t choose .NET? Well, the application I am developing is desktop based and frankly I don’t see much penetration of .NET in the desktop yet. Other minor reasons were deployment issues, performance and lack of mature third party controls, topped with the new changes introduced in .NET 2003 ( I like “some” stability in my development environment).
Regards, |
| Mon 26 May | Mitch & Murray (from downtown) | Many, many thanks for all the thoughtful replies. |
| Mon 26 May | Jan Derk | Delphi does something special: It gives you a choice.
You can compile either .NET or win32 applications. You know those good old exe's that don't require a 20MB+ framework to run. Sure, you can import a win32 dll in .NET, but you will have a hard time creating native win32 apps using C# or VB.NET. Personally I call that abandonning win32. |
| Mon 26 May | Brad Wilson (dotnetguy.techieswithcats.com) | 'You will have a hard time creating native win32 apps using C# or VB.NET'
What do you mean by 'native win32 apps'?
Do you mean such that the framework isn't required? Because you can NEVER do that.
Do you mean that the apps look and work just like normal Windows apps? That's what Windows Forms is for. |
| Tue 27 May | Robert Moir | I would have said that using a major new technology on a new project where there is no business need for the project itself to use that new technology is dangerous.
Maybe you should look at .net but I personally would suggest that unless you need something that it offers then 'now' is not a good time. |
| Tue 27 May | Carl | 'If time and or competitive/technological advantage is not an issue, go with .NET.'
That could probably be said for years to come |
| Tue 27 May | Paulo Caetano | >> 'What was the reason for using C# again?'
>
> That it already exists, as opposed to just being 'coming?'
I don't know about other industries, but ours has this tendency to produce over-hyped vaporware that is just 'around the corner', and will be the next silver bullet.
I'm not labeling neither .Net nor Delphi as such. Just saying that the reason stated above, while making perfect sense, is, quite often, perfectly ignored :) |
| Thu 29 May | Ed | '..This is because .NET is designed to be supported by multiple platforms and only Windows has Win32. ...'
Besides hand-helds, what other platforms does .NET run on? I keep hearing all the ranting about .NET and it's cross platform bla bla bla, but I've yet to really see it. Wheres .NET for UNIX? VMS? AS/400? .....
exactly.... |
| Thu 29 May | Brad Wilson (dotnetguy.techieswithcats.com) | Anybody who means anything besides 'Windows PC and Pocket PCs' when they say 'cross-platform .NET' is a liar.
Of course, that's all I ever hear people mean. Are you interpreting it in whatever way makes you happy, so that you can rant about it and feel some moral superiority? :-p |
| Fri 30 May | Bored Bystander | 'Cross platform' is a hot button with those of us who bought into certain programming product vendors in the early 90s who promised 'cross platform compatibility' of code developed using their product. Generally, except for very unambitious projects, such hype was absolute bullsh*t.
The assertion back then was almost always that programming to some vendor's GUI toolkit would give you Windows 3.1, NT, DOS, OS/2, Unix Curses, and X for 'free'.
It NEVER worked that way until supplemented with LOTS of brute force labor. Common applications ALWAYS needed conditionally compiled sections inserted into them in order to operate properly in each target environment.
And, .Net is a much richer programming environment than Windows 3.1 ever was, by a couple of orders of magnitude.
The point is, commercial vendors entering a wide open marketplace and addressing a much simpler problem domain generally failed to deliver, and quite miserably.
With .Net, the library IS the language. Therefore the .Net runtime will have to be ported almost completely in order to make something like 'Mono' viable. With unmanaged volunteer labor and no commercial incentives, no less.
So, I'm really not holding my breath, unless a major player wants to ante up for the development costs. |
|
| Evolving code layout style! You be the judge! | Fri 23 May | Heston Holtmann |
| After 15 years of C programming, my code
layout style has evolved mostly from external
influences and dealing with problems of
large teams working on the same large code base.
When it comes to function declarations, prototypes,
and even function call statements, I have progressively
evolved from FuncStyle1() -> FuncStyle2()
-> FuncStyle3() to currenlty FuncStyle4()
(see examples below)
The interesting thing is that most of my co-workers
alwasys seem to STOP evolving at 2() or 3() and their variations.
I recognize that the biggest _potential_ gains comes from
FuncStyle1() -> FuncStyle2(), and that 2->3->4 can
be debated on the merits of dimished returns.
However, i am wondering if anyone in the _community_ can
think of valid general argument(s) as to WHY FuncStyle4() is
better _on average_ then 3 and/or 2??? The only diff
between 3 and 4 is the comma placement!
//-BEGIN CODE -------------------------------------
// jam packed arguments on 1 (or more) lines
void FuncStyle1( int arg1, int arg2, int arg3,
int arg4, int arg5, int arg6)
{
// implementataion
}
// marshmallow packed arguments
// uses more white space with
// commas at the END of the argument lines
void FuncStyle2(int arg1,
int arg2,
int arg3,
int arg4,
int arg5,
int arg6)
{
// implementation
}
// use much more white space and many more lines
// commas at the END of argument lines
void FuncStyle3
(
int arg1, // optional argument line end comments
int arg2,
int arg3,
int arg4,
int arg5,
int arg6
)
{
// implementation
}
// use much more white space and many more lines
// commas at the BEGINNING of argument lines
void FuncStyle4
(
int arg1
, int arg2 // optional argument line end comments
, int arg3
, int arg4
, int arg5
, int arg6
)
{
// implementation
}
//- END CODE -------------------------------------------- |
| Mon 26 May | Dennis Atkins | Books follow practice not the other way around.
In other words, better practices are adopted first, then they make their ways into books.
I converted because I tried it out on some code and saw that it was easier to read and work with. Sure, it took three minutes to get used to but now that I am used to it I see how it is much better in all its dimensions.
Speaking of dimensions, it makes the code more two-dimensional, more packed with meaning.
Things line up in a way they weren't lined up before.
Suddenly I don't have to use the scroll bars as much.
Suddenly I can instantly see typos.
Suddenly move parameters around is less likely to generate errors and requires less mental energy; it's just a mechanical operation now instead of a technical one.
Suddenly, commas are a formatting feature as well as being a syntactical one.
Behold - enums, initialization lists, and parameter lists are no longer unstructured but are graphical objects with a left edge and a top edge.
Behold - the code is cleaner. |
| Mon 26 May | Patrik | I tend to use different styles depending on the length of variable names and number of parameters,
function foo (s : string):number;
begin
{do something}
result:=0;
end;
wheras if I have
procedure DoSomethingThatIsLongerNamed(foo : String;
bar: String;
SomeAwfullyLongName: Integer);
This to avoid horizontal scrolling to read the code. |
| Tue 27 May | Paulo Caetano | I started using the commas (and other operators) at the start of the line when fiddling with SQL statements. E.g.,
select field1
, field2
, field3
, field4
from table5
where field6 = 1
and field7 = 'WHATEVER'
and field8 like '%WHERE'S THE INDEX\?%'
If I wanted to comment out one of the conditions, I'd just do
select field1
, field2
, field3
, field4
from table5
where field6 = 1
--and field7 = 'WHATEVER'
and field8 like '%WHERE'S THE INDEX\?%'
and I'd be ready to go.
It does bite back, sometimes, but not as often as the opposite alternative, which would be
select field1,
field2,
field3,
field4,
from table5
where field6 = 1 and
field7 = 'WHATEVER' and
field8 like '%WHERE'S THE INDEX\?%'
I've started using this in other code very recently. It has improved readibility for me, in that things stand out more easily. Could be because of the novelty, though, i.e., when I get used to seeing separators and operators at the start of the line, maybe they won't stand out anymore.
--
'Suravye ninto manshima taishite (Peace favor your sword)' (Shienaran salute)
'Life is a dream from which we all must wake before we can dream again' (Amys, Aiel Wise One) |
| Tue 27 May | treefrog | Personally, I use a style (for C++) that looks like
/** Comment for literate documentation system like Doxygen
* parameter 1 info
* parameter 2 info
* return value info
*/
return_type my_function(param1, param2)
{
...
}
All the doxygen commenting goes into the header (.h) file, while the source (.cpp) file contains only commenting pertaining to how the code implements its functionality. If you need to see what it does, there is html, hyperlinked documentation kept up to date (and enforced by the peer pressure of a whole bunch of people who get pissy if it isnt).
This seems to work fine in the group I am in.
regards, treefrog |
| Tue 27 May | Gregor Brandt | FuncStyle 4 means that you didn't design properly. the only real reason to do it that way is so that adding and deleting items will not incur a syntax error, because deleting the last item always deletes the appropriate comma. This is good for arrays, enum etc but bad for methods (see first sentence). |
| Wed 28 May | Val Cohen | A bit of a tangent: an explanation of a *general* case where putting operators at the beginning of subsequent lines is useful. The initial example is all about function declarations, and several folks mentioned using a variation in constructing SQL queries. There's a similar situation where I've found this style helps a great deal both in legibility and in avoiding subtle errors: string concatenation. In doing Web-oriented development, we often have to concatenate literals and variables.
This:
var foo = '';
foo = 'Value1 is: ' +
$val1 +
' and Value2 is: ' +
$val2 +
'.\n';
becomes:
var foo = '';
foo = 'Value1 is: '
+ $val1 +
+ ' and Value2 is: ' +
+ $val2 +
+ '.\n'
;
all of a sudden, and especially if the chunks are long (e.g. have some embedded HTML), it's crystal-clear we're building up a string, and it's easy to shuffle the parts around, or insert a new part, without breaking the concatenation.
Another syntax, a real-world example:
Before:
' .
image_button('button_continue.gif', IMAGE_BUTTON_CONTINUE) .
''; ?>
After:
'
. image_button('button_continue.gif'
, IMAGE_BUTTON_CONTINUE)
. ''
;
?>
I'm switching to this style where possible -- it's saving me a lot of time. It's a particularly useful exercise when refactoring code, esp. someone else's -- it helps me understand what's being built when I re-order the concatenation operators.
Just my $0.02 ... |
| Fri 30 May | Heston Holtmann | Hey Gregor...
'FuncStyle 4 means that you didn't design properly'
Hmm.. I moved all my comma's from the front to the back like FuncStyle 3, but the design didn't seem to improve in any way? |
|
| uses of static | Thu 29 May | DownySoft |
| For some reason I cant get my brain around this. What are the differences between the following two examples? When would you use one over the other? Is the end result the same?
1st Example
------------------
public class A
{
static B myB;
public void DoSomething
{
myB.DoSomething()
}
}
public class B
{
private B(){}
public void DoSomething(){}
}
------------------
2nd Example
------------------
public class A
{
public A(){}
public void DoSomething
{
B.DoSomething()
}
}
public class B
{
public static B(){}
public static void DoSomething(){}
} |
| Thu 29 May | M Evelyn | public class A
{
static B myB; // class variable; can be referenced without an instance of A
public void DoSomething
{
myB.DoSomething(); // NullPointerException - myB doesn't point to any object
}
}
public class B
{
private B(){}
public void DoSomething(){}
}
2nd Example
------------------
public class A
{
public A(){}
public void DoSomething
{
B.DoSomething(); // fine because DoSomething is static; instance of B isn't required
}
}
public class B
{
public static B(){} // illegal - static can't be used with CTORs
public static void DoSomething(){}
} |
| Thu 29 May | S.C. | Yes they are the same: both wrong.
First, the declaration of the method DoSomething() lacks a pair of ().
Second, in the first example, myB cannot be instantiated
due to the private constructor. Hence myB.DoSomething() will fail because myB is still null. (No new() called anyway. )
Third, in the second example, the constructor B() cannot be static. It doesn't make sense and won't compile.
Maybe you were trying to instantiate a B object as a class variable shared by all A objects in the first example. And in the next, you were trying to make a non-instantiable class B. If this is what you are asking. Yes they are different.
This really sounds like an Intro. to OOP assignment 2 to me. So maybe I will just stop here. :) |
| Thu 29 May | Alyosha` | Static methods can't touch this. |
| Thu 29 May | Ged Byrne | The real difference is in scope.
Your own particular combinations make very little difference, but there are combinations that are important.
If you make doSomething a static member of B and B is public that means that any class that imports B can used doSomething with B.doSomething().
If myB is a static member of A and myB is private, then only A can access myB.doSomething().
Don't try to understand the whole Static and Scope issue from a technical point of view. What you are really dealing with is encapsulation.
You would use B.doSomething() if you wanted a function to be easily available anywhere. Take a look at java.math for examples of this.
You would use private static B myB when you want B to be shared within a restricted scope. |
| Thu 29 May | Brad Wilson (dotnetguy.techieswithcats.com) | 'Third, in the second example, the constructor B() cannot be static. It doesn't make sense and won't compile.'
Actually, .NET has the concept of static constructors (also called 'class constructors'). Internally, constructors are named '.ctor' and class constructors are named '.cctor'. There can be only one static constructor, and it must take no parameters. It is called just before the first access of any static method or data, and are used to initialize static data.
In fact, writing this class:
public class Foo
{
static private Bar myBar = new Bar(42);
}
impliticly creates a static constructor. If you explicitly create a static constructor as well, all these 'implicit' lines of static constructor code are inserted at the beginning of the static constructor method body. |
| Thu 29 May | Better than being unemployed... | 'It is called just before the first access of any static method or data.'
Eek! Sounds like VB's 'Dim ... As New' all over again. That's going to make maintenance programming a pain ... you'll have to hunt down the first reference of where a static method / property on the class is called (which could be anywhere in the code) if you spot a bug in the static constructor. Or am I missing something? |
| Thu 29 May | Brad Wilson (dotnetguy.techieswithcats.com) | I actually don't know what you're saying.
Are you saying that you thing debugging a static constructor is difficult? Why do you suppose that is, when it's just another method? |
| Thu 29 May | Ged Byrne | Java has the same feature:
http://www.fawcette.com/javapro/2003_04/online/tricks_pford_04_10_03/
I've never heard of it being a maintenance nightmare. As far as I know it solves a few maintenance problems. |
| Thu 29 May | schmoe | First of all (pet peeve), 'static constructors' in .NET aren't any more new and innovative than metadata in java - java called them static initializers instead of static constructors, and C# called them attributes instead of metadata, but it's the same thing. Not really any more or less difficult to debug, although it can get a little annoying cause the possible 'callers' of a static constructor aren't as obvious.
As for the question at hand, there's an interesting difference that I've actually used that no one's pointed out yet. Not sure how common this is, but here's the basic idea:
Static methods can't be overridden, but instance methods can. Static methods that delegate to instance methods can end up calling the subclass' implementation.
I have a 'QueryUtils' class in my generic utils package, which among other things knows how to format various objects for inclusion in a database query. I typically use prepared statements so that the driver does this for me, but with in/not in clauses, I sometimes just use the static QueryUtils.format() method. It handles strings, numbers, booleans, etc., and also handles collections of these by calling format() recursively with the elements of the collection. Then, I have an application-specific subclass of QueryUtils, which adds support for formatting a few of my application-specific objects. It checks to see if the formatted object is one of these, and if not, it hands the object off to the superclass for formatting. However, if someone passes a collection of application-specific objects, I'd like the superclass' format() method to recursively call the subclass' format() method, since the generic QueryUtils class doesn't understand my application-specific objects.
(Yes, this is a real-world example, and real-world examples are sometimes messy. Sorry.)
There are undoubtedly other ways to do this, some of which may be nicer, but this seemed to fit what I wanted to do the best.
Here's a quick pseudocode sketch of the code:
class QueryUtils {
static QueryUtils s_me = new QueryUtils();
public static String format(Object o) {
return s_me.format(o);
}
protected String format(Object o) {
// format the object, call recursively on each
// element if o is a container
}
}
class MyQueryUtils extends QueryUtils {
static MyQueryUtils s_me = new MyQueryUtils();
static String format(Object o) {
return s_me.format(o);
}
protected String format(Object o) {
// if o needs application-specific formatting,
// format it and return it. otherwise, call
// super.format(o);
}
} |
| Thu 29 May | schmoe | To clarify, the trick in the above pseudocode is that when the superclass' format() method makes a recursive call, it's calling the instance method on 'this', which sometimes calls MyQueryUtils' format() method, not the static method, which would always call QueryUtils.format(), regardless of the type of 'this'. |
| Thu 29 May | Marc | For the record, my brain fell out of my head just after Brad's post.
But I think the real question is; when should you use Static verses a Singleton?
At least, that is what I think he was getting at. |
| Thu 29 May | Brad Wilson (dotnetguy.techieswithcats.com) | 'First of all (pet peeve), 'static constructors' in .NET aren't any more new and innovative than metadata in java'
My pet peeve back to you: I never claimed their were innovative. I was just pointing out that they're not illegal and impossible by giving an example of one environment that allows them.
~~~
As to the question of when to use static vs. singleton... the answer is that there's no easy answer. One example of why you might want a singleton (or a singleton-acting thing) is what schmoe was saying: overriding methods. As you could see in his example, you don't even have to expose the singleton to the end user, because you hide it behind a purely static facade. |
| Thu 29 May | Ged Byrne | Another time you'll need a singleton is when an object is required. For example, when you need to compare, test for equality or store in a container. |
|
| Computer ID | Wed 28 May | S. Tanna |
| If you need a unique (or nearly unique) ID to identify a machine (PC), what would you use?
Volume ID - changes if you reformat the drive
Mac Address - what if they dont have a network card or replace the card
IP address - see Mac + what if dynamic IP address
CPU ID - not enabled on all (most?) machines
Any better/other ideas? |
| Wed 28 May | Philo | Gotta know the 'why'
Is it for some kind of internal company control? Shareware registration? Communications need?
Philo |
| Wed 28 May | Crest Toothpaste | Windows Serial Number.... ROFL.. nm hehe |
| Wed 28 May | S. Tanna | Shareware.
Idea is the user needs a password that ties to their particular PC. I don't care if very occassionally 2 PCs get the same ID (and therefore same password), but I don't want users to control/determine the IDs themselves.
I've used various systems before, looking to see if I can better these. |
| Wed 28 May | anon | On UNIX you can use the hostid. I think the system call to get it is gethostid(). On Sun hardware this is tied to the PROM on the motherboard (I think on Linux it's something that's easier to change than that).
On Windows you can use the volume serial number of the C: drive. You can get this with the GetVolumeInformation() function (e.g. http://groups.google.com/groups?selm=%23OdCVfrcBHA.1728%40tkmsftngp05&oe=UTF-8&output=gplain). It tends to be fairly unique.
I'll warn you ahead of time that any licensing scheme that ties the software to a particular machine tends to be a pain in the ass to support. |
| Wed 28 May | Philo | Use email address - then you know it has to be valid when you provide the registration, and you know who's been passing out codes when you see them on Usenet.
Why tie it to one computer?
Philo |
| Wed 28 May | somebody | Mac addresses change more often than you might think -- for example, laptop users with PCMCIA network adapters.
You can expect IP addresses to change regularly.
I believe Microsoft uses a scheme that combines something like eight possibly unique identifiers. It then has some level of forgiveness built in if some of them change. |
| Wed 28 May | George McBay | If it is for Windows based systems, I'd just use the Win32 API to generate a COM-ish GUID (you can do this in one call). Not guaranteed unique, but the chance of collision is astronomically small. Then store the GUID in the registry and just send that registry key (if it already exists) next time it is needed.
Someone CAN change the registry key, but someone could also hack the winsock DLLs to insert whatever key they wanted in the outgoing direction no matter what method you use for generation... So if you're going to trust the client to generate the passcode you can't ever be fully sure they aren't tampering with it.
This does have an outstanding issue in that if someone reinstalls their OS from scratch, the password is gone and can't ever be redetermined since it was generated somewhat randomly, but I don't think you'll find any method where a consistent unique key is guaranteed. |
| Wed 28 May | S. Tanna | The app is Win32 C++
I intend to tie it to a machine, as (a) I don't want to pursue every twit who posts their info to usenet, (b) the license is per PC
I will also keep their email addresses in a database, so if they lose their password, switch machines etc. they can get a replacement automatically issued to them via e-mail up to a certain number of times. After that they have to ask. This would allow some cheating but not excessive amounts.
I like the forgiveness idea, and have been toying with this in my mind.
Whether or not forgiveness, I want things (or several things if using forgiveness idea) that infrequently change and are not (easily) under user control.
Volume ID - a reasonable one except for reformat problem
Registry - I don't see why this is any better than Volume ID, as it is easy to change with regedit, and is also lost of reinstall Windows
Other idea - CPU info. I get can stuff like CPU type, CPU flags, etc. Problem is this is not very unique
Another idea - hardware info, e.g. number of serial ports, what else?
Mac Address IP address - I'm not real keen on these for reasons already stated by others |
| Wed 28 May | ajs | I believe that Windows machines have an id which is supposed to be unique tucked away in the registry, under SECURITY\SAM\Domains\Account - I think the final 128 bits of the 'V' value are the id. One possible problem with this is that two machines could in practice have the same id if they've been set up with disk cloning software. |
| Wed 28 May | echidna | Using a GUID stored in the registry is useless.
All someone has to do is use one of the registry access watchers to see which keys your app looks up, then send the GUID plus your key for that GUID to all their friends and the internet.
It has to be some attribute of the machine. Microsoft's fuzzy approach is good, but takes a fair bit of work. I would go with the volume ID. |
| Wed 28 May | mb | volume id + processor speed or other relatively stable info is fine. if it changes, they re-request a new key from you, since they registered by email address. |
| Wed 28 May | Steve H | Philo, I've been pondering a similar problem recently I can't believe I didn't think to use email address! Thanks for speaking up! |
| Wed 28 May | www.marktaw.com | > You can expect IP addresses to change regularly.
And for dozens of users to use the same IP address. I'm behind a Linksys network, and I'm sure I'm not the only 192.168.1.100 in the world.
It doesn't get much more unique than e-mail address. Way to think 'outside the box.' |
| Wed 28 May | pUnk | Here's info on how WPA generates hardware ids:
http://www.licenturion.com/xp/
Download the sample application here for some code to generate a hardware id:
http://www.activatesoft.net/download.asp |
| Wed 28 May | somebody | I doubt an email address will meet S.'s requirements. It's not tied to a specific machine so it would do little to prevent people from copying the installed software (or just the license information) to another machine, or posting it to the net somewhere. Anyone can go to Hotmail.com to get an anonymous email address to register the software under. Also, believe it or not, in some environments it can be difficult to pin down an email address for a given user. |
| Thu 29 May | sgf | Volume ID is not very good. Not only will a reformat change it, but utilities to set it to whatever you want are readily available. |
| Thu 29 May | Li-fan Chen | Can't you just use a web cam? Ask all new users to send a passport photo dated and signed by a professional known by the users with witnesses. You can use the web cam to observe their use. This way you can watch people who allow their family members to use your software without your permissions. I think there's a WROX book on this. |
| Thu 29 May | Right Now | Compile a unique executable, for each person, with the serial number of that computers motherboard. Obtain this number via a telnet session with the users workstation. Use some kind of scheme scattering this registration number throughout your code preferably encrypting that number before inserting it into your code. Record the number so that if the person looses it you can simple compile a new exe and ship it off to them.
Well I thought it was an ok idea ;) |
| Thu 29 May | UniqueId | Hi
By coincidence I've been looking into this recently. While I think the webcam idea is so brilliant I'm unworthy to comment on it, my thoughts about the other ideas are:
Volume ID - This is OK. It's such a pain to reinstall Windows and I think HDs are not reformatted so often.
Mac Address - Not so good as it may not exist.
IP address - I don't know how to get this under Windows. Also it's usually dynamically (magically) created.
CPU ID - This is OK, the pentium is supposed to return a unique string.
Email - Not so good as it may change, or people have several.
Windows product i/d - This is easily obtained and is OK.
Motherboard i/d - This would be good but I don't know how to obtain it.
**BUT**
however you obtain the i/d using a mixture of techniques, it's no good storing it in clear text. You have to encrypt it else it's too obvious. |
| Thu 29 May | | Heh Li-fan Chen and Right Now, I've got a better idea.
Why not spend 12 months doing something really interesting or innovative, with the bills piling up, release it to the market and have tens of thousands of people agree it's interesting and worthwhile to the extent they want it, and then have ltr34987@hotmail.com post the key to warez.org.
Try paying your bills with goodwill. |
| Thu 29 May | anon | While the Volume ID can be changed, I think for most practical purposes you want a copy protection scheme that's difficult for the average Joe to crack, not impossible for experienced hackers. I would say that encoding the Volume ID into the license key would probalby be good enough to prevent casual users from pirating the product. |
|
| Integration and The Spectacular Failure | Wed 28 May | Brent P. Newhall |
| Heres an edit of something that Brad Wilson wrote in response to a previous post:
==========
A small company acquired a bunch of funding, and thus, a bunch of engineers in a very short amount of time. It ended up with 4 or 5 of really high quality engineers, and 35 or so people who didnt have the requisite skill level to do the work.
Aside from being just plainly not skilled enough to do the job, those 35 people stopped the 4 or 5 skilled people from being productive, because of the required process that had to be put in place to stop the 35 from destroying the product. What little that did get done was of such terrible quality that it was virtually impossible to get running.
==========
Okay, everyone, pretend that you were one of the 35 people. How could you successfully integrate yourself with the 4 or 5 skilled people? How have you seen unskilled people successfully integrate themselves into a small, highly skilled group?
Brad, could you tell us what required process was put in place in this instance? I think that that would be an enlightening perspective. |
| Wed 28 May | Li-fan Chen | Some people would suggest the sort of elitist route. Don't let the 35 into the equation no matter how much money you make. Keep hiring clusters of 5s. Let them go after their own business. Share what you can between the clusters. Help each other a bit. But never have enough infrastructure to need management or sales. You have to be a self-starter, but this is one of the alternatives Philip Greenspun wrote about back when he had ArsDigita to run. |
| Wed 28 May | victim, jr. | how fuct up do you have to be to hire 30 or so people that don't fit in with your company?
Sounds like the board needs to step in or the owner needs to have a long hard chat with himself.
Tell the employees that it's time to sink or swim. Give them measurable objectives to meet. |
| Wed 28 May | valraven | I've been one of the 35 and it would have been better
if they hadn't hired me. |
| Wed 28 May | old_timer | If the job requires a certain minimum level of engineering expertise, the company was wasting everyone's time by hiring unqualified people.
But given that there was no choice but to hire 'warm bodies', one can assume in any group there will be about 20% who are fast learners and who can step up to skill levels that might be minimally acceptable in a rather short time. That is, to do non-engineering functions (because not everything we do requires an engineering degree) but still go over and above the low level work they currently are qualified for.
So after a few months you have allowed another 14 to develop and you've added to the 4 or 5 'good' workers who can do real productive work. Now it becomes possible to parcel out some of the dog work to the unqualified people and make the productive ones more so. But you are still saddled with a large number maybe 40-50% of useless appendages and it calls for a round of layoffs and rehiring with new and clearer job requirements.
All that being said though, the 4 or 5 'good' definition also smacks of a bit of elitism. Who was it that decided on the mix of skills to hire in the first place and who is it that decided that only 4 or 5 were actually 'good' ones? The company would have to be incredibly inept at absolutely everything it does from planning to hiring to managing people in order to end up with 80% dregs and 20% good. |
| Wed 28 May | Brad Wilson (dotnetguy.techieswithcats.com) | The required process was a home-grown documentation heavy process that was designed to attempt to help ensure the components were designed well. It more or less failed, of course, because the design was never really translated into reasonable implementation because the skill level wasn't there in the majority of the workers.
This, of course, ties all the top senior people up into not much more than supervisory roles.
~~~
'Some people would suggest the sort of elitist route. Don't let the 35 into the equation no matter how much money you make.'
Indeed, that's exactly what I intend to do with hiring now.
~~~
'how fuct up do you have to be to hire 30 or so people that don't fit in with your company?'
That's what happens when you take 'big money' VCs into the organization (at least, before the bubble). Nobody wanted to invest small money for small gains, they all wanted the grand slam. It was much easier to raise $50m than $500k.
The problem is, that to get $50m, you end up having to sell your soul. You make ridiculous promises that everybody knows you can't meet, and then have to staff as though you had a prayer of doing it. Since you clearly can't grow an engineering organization intelligently by 5 or 6x in 6 months, you end up hiring people that you shouldn't. For what it's worth, a lot of us were overruled when we said 'no hire'.
~~~
'All that being said though, the 4 or 5 'good' definition also smacks of a bit of elitism. Who was it that decided on the mix of skills to hire in the first place and who is it that decided that only 4 or 5 were actually 'good' ones?'
The skills we asked for were irrelevant, because almost nobody we interviewed had them (we needed experts in C++, with heavy emphasis on COM & ATL). Despite 'no hire', they were hired anyway. We tried to train them (no real training budget, so we did it in house), but mostly failed.
There is two questions of good, here: (1) were the people good software engineers in general, and (2) were they good enough to do the obviously difficult work that we had to do. My judgment of 'good' is a personal judgment, based on my experiences and the performance I saw.
You can call that elitist if you want; I'm not bothered with the labels people choose to use. I'd much rather be a highly successful elitist than a miserable failure inclusionist. *shrug* |
| Wed 28 May | victim, jr. | ouch. hope the managers got fired. sounds like there's more than one level of incompetence here. |
| Wed 28 May | Brent P. Newhall | Excellent discussion so far, though so far, nobody's answered my question: What would you do if you were one of the 35? |
| Wed 28 May | victim, jr. | jeez. I work for a mildly successful .COM, and we got a little crazy when the money came in too. Joel's 100% right about growing a company: http://www.joelonsoftware.com/articles/fog0000000056.html .
Now you have to worry about alienating the people that ARE good. Hope it all works out, remember you are going to have a powerful and maybe devastating effect on REAL LIVE people. |
| Wed 28 May | victim, jr. | I've always been in the top 20%, so I can't say for sure. I guess it depends on the company. If I suddenly found myself working with a bunch of ex Microsoft Research people, I'd probably volunteer to be moved to a testing or documentation or sysadmin role. |
| Wed 28 May | igor | The problem you describe is fairly common, although not to such disastrous extent. The key is to find a way to get you good people in the best possible way.
Has anyone tried what my friend calls 'Editor' relationship where the 5 skilled people would spend a lot of their time reviewing the code written by the other 30 to make improvement suggestions and prevent serious errors from getting in? This is somewhat similar to the way linux is developed where Linus has the final say over what gets into the release. Of course this means that the skilled develpers get little direct engineering work done. Instead, you leverage them across larger group and improve the not-so-good people to the point where they can be independently productive. On the other hand, if each skilled person is responsible for reviewing work of 2-3 less skilled developers then they can contribute more directly and not get disgruntled.
Do you think such approach would work? |
| Wed 28 May | igor | The second sentence should read:
The key is to find a way to USE your good people in the best possible way |
| Wed 28 May | victim, jr. | that's probably a good idea. there must be SOME endearing qualities to these people, somehow they could contribute. that's the management challenge. based on past performance though, it doesn't look good. |
| Wed 28 May | x | If I was one of the 35, I probably wouldn't be aware of that fact. So the question is moot. |
| Wed 28 May | echidna | > the 5 skilled people would spend a lot of their time reviewing the code written by the other 30 ..
Why should you make the good engineers waste their time on this drivel? |
| Wed 28 May | A Software Build Guy | The Adm. Rickover solution... He sugested that two-thirds of the general staff of the Pentagon send memos to each other and allow the one third that was willing and able to work to get something done.
Seriously the 30 - 35 warm bodies should not have been hired they would have been better off hiring 10 experts from other companies with the same money. Or slowly growing the company over a several year period, hiring only people with something of the correct skill set. |
| Thu 29 May | j. | if I was one of the 35 I would spend my day cruising the internet boards and commenting on how everyone in this industry doesn't know what there doing. |
| Thu 29 May | anonymous | Well, how else do people integrate themselves into a group where they're less skilled? That sounds similar to the definition of 'learning.'
You have two strategies. If it's a sinking ship, you spend your time learning resume fodder. If it's unclear, learn things oriented to the job, until it's clear the ship will sink. Make sure to notice little clues about the boat's floatation. |
| Thu 29 May | Joel Goodwin | Regarding the idea that the skilled 5 should mentor and review the unskilled 35... I don't think this would work.
First, there's no guarantee the skilled five would be excellent mentors. Training and development are two skills that don't necessarily overlap.
Second, that's a lot of people to mentor. They would spend all their time supervising instead of coding. Quickly, this group is likely to get fed up which is not a good idea, as suggested earlier.
Finally, you'll end up with a group of 40 people working at an fairly slow pace. You should use the 5 people at what their good at, because you're not getting your money's worth otherwise.
The problem is hiring 35 people and thinking you can get away with it in the first place. If you want hire cheap programmers and bring them up to speed, you have to do it slowly. You just can't multiply the team N-fold and expect it to work.
I'm sure a lot of people have seen in this kind of thing play out in the boom years we've been through, and we're still fixing the coding legacies that were the result. |
|
| Vendor Managers | Wed 28 May | HidingFromManagement |
| The company I work for has hired a vendor manager to bring all the IT consultants under one group. They sold it to management by claiming a 5% savings in the first year and more later. All for a low adminstration fee.
After talking with some of the consultants who work on my team they were told by the VM they need to take a 5% cut and pay 5% to stay on the vendor preferred list. Others were told if they did not put up a $5 million dollar bond, as liability, they would need to become w-2 employees of the vendor. All were told do it or consider it their notice.
It looks like I am going to be losing some good people because of this. Anyone herard of this before? Is this normal for VMs to do? The VPs and above look at savings, and dont want to hear anything else. |
| Wed 28 May | A cynic | Yes, gross management incompetence is par for the course when it comes to software projects. :-( |
| Wed 28 May | old_timer | It's called a buyers market. Get used to it.
Your VM will be able to screw over the consultants because they know he will be able to replace them in a flash. Your company management considers these contract employees to be a commodity. The VP's business plan does not list a contract person in the critical path, therefore they are temporary and expendible.
You may think these are good workers and indispensible to you but the very nature of their position makes them nothing more than leased machines to management. So if a VM can save the company 5%, that's what they'll buy.
You'll lose a few of them if they have other gigs to jump to and the remaining ones will be bitter and less productive.
The newer ones hired on by the VM are likely to be less qualified because they will work cheaper and it will maximize his incentive pay. Then it all spirals downward from there. But to MBA school managers none of this is obvious until much later in the game when it's too late. |
| Wed 28 May | Mark Hoffman | Look on the bright side...Stuff like this keeps the Dilbert comic strip alive and well..... |
| Wed 28 May | njkayaker | Note that it will never be 'too late' for the MBA's.
They will have gotten their cut and moved on before the impact of this 'improvement' is realized. |
| Wed 28 May | | Hiding, I gather you're a manager whose projects will be affected by this marvelous new policy introduced from higher up? That is, you stand to lose good people.
First, this sort of tactic is indeed part of the scenery, especially the requirement for a level of insurance that's totally unecessary for people working in an office. It's yet another of the schemes where vacuous middlemen exploit the people who actually do the work.
As to your own options, you should fight fire with fire. Aggressively new management best practices with tight service level agreements from the vendor manager, with one category being the minimising of disruption to existing resources and projects.
Also institute numerical project metrics that will show your own management what effects this VM has had. |
| Wed 28 May | Philo | Who's the vendor? How about a little information in the market?
Philo |
| Thu 29 May | Mark Pearce | 'HFM',
I'm in agreement with the poster who suggested fignting fire with fire. This is a political game, and you need to become adept at playing it if you want to do well in the company.
Insist on a really tight SLA from the VM if you can, and document *any* problems that could conceivably have been caused by the VM.
In fact, I would go further. Try to cancel, postpone, or prolong a high-profile project, and then find a way of blaming the problem on the VM. Produce facts and figures to document this - some of them can even be true!
Regards,
Mark
---
Author of 'Comprehensive VB .NET Debugging'
http://www.apress.com/book/bookDisplay.html?bID=128 |
| Thu 29 May | Mark Hoffman | 'In fact, I would go further. Try to cancel, postpone, or prolong a high-profile project, and then find a way of blaming the problem on the VM. Produce facts and figures to document this - some of them can even be true!'
Just wonderful...Why don't you suggest he burn his company to the ground too? Perhaps he should intentionally bankrupt it..That'll teach 'em.
Sabatoging your employer's success for personal gain, while all to common, is still a despicable practice. |
| Thu 29 May | Marc | 'Just wonderful...Why don't you suggest he burn his company to the ground too? Perhaps he should intentionally bankrupt it..That'll teach 'em.'
Hmmmm.... Now where did I put that match? ;-)
I agree with Mark, you cannot break you company just to make a point.
But you can make you VM wish they had never taken the gig. Just bury them with paper work. Literally assault them with questions, memos, suggestions, etc.
The point is, you are doing this to protect your company not hurt your company. But if you break your own companies legs you are no better than the VM. |
| Thu 29 May | Mark Pearce | Hi Mark,
>> Just wonderful...Why don't you suggest he burn his company to the ground too? Perhaps he should intentionally bankrupt it..That'll teach 'em. <<
Well, I was being sarcastic to make a point. This is a political game - it's a game played by the company's VPs, the VM and many other people. Very few of these people care about the health and wealth of the company - most of them care much more about their own power and wealth.
My point is that you need to document with facts and figures (and as with all figures, you can be creative) how much damage the VM policy is causing your dept/company. Be specific, and make sure that upper management is left in no doubt about the problem - assuming, of course, that there is a problem, an assumption that was implicit in the original posting.
Regards,
Mark
---
Author of 'Comprehensive VB .NET Debugging'
http://www.apress.com/book/bookDisplay.html?bID=128 |
|
| problems with Java code snippet | Wed 28 May | sumit |
| I having some problems with this code snippet trying to remove some noise words from a Vector of vectors, where each element is another vector-
I get a array index out of bounds exception at removeElementAt, at run-time, compiles fine.
Anybody know whats the problem?
for(int i=0;i
|
| Wed 28 May | Konrad | This is just an idle thought but where you have:
if(val.equalsIgnoreCase(noisewords[iter]))
System.out.println('in here');
((Vector)v.elementAt(i)).removeElementAt(j);
You are ALWAYS removing an element regardless of whether val looks to be a 'noiseword'. Do you actually mean:
if(val.equalsIgnoreCase(noisewords[iter])) {
System.out.println('in here');
((Vector)v.elementAt(i)).removeElementAt(j);
}
Because currently, on each iteration of your loop:
for(int iter=0;iter v.elementAt(i).size() before removal of any noisewords, you'll end up with the ArrayIndexOutOfBoundsException that you have. |
| Wed 28 May | Ged Byrne | Rather than iterating through both vectors, wouldn't you be better of butting your noisewords into a collection and then using:
temp.removeall(CollectionOfNoiseWords)
from http://java.sun.com/j2se/1.3/docs/api/java/util/Vector.html :
removeAll
public boolean removeAll(Collection c)
Removes from this Vector all of its elements that are contained in the specified Collection.
Specified by:
removeAll in interface List
Overrides:
removeAll in class AbstractCollection
Returns:
true if this Vector changed as a result of the call.
Since:
1.2 |
| Wed 28 May | | I'm not a java programmer, but ISTM that if you have a vector of, say, 3 things, and you take the second one out, when you try and access the third one you might well be out of bounds (depends if the effect of removing an element shifts the remaining elements) |
| Wed 28 May | Ged Byrne | import java.util.*;
import java.io.*;
public class NoiseWords {
public static void main(String[] args) {
Vector v = new Vector();
v.add(createVector('The rain in spain falls mainly in the plane'));
v.add(createVector('To be or not to be'));
v.add(createVector('The fat cat sat on the mat'));
v.add(createVector('The quick brown fox jumped over the rugged man'));
Vector noiseWords = createVector('the is on to in or');
Vector element;
for (Iterator it=v.iterator(); it.hasNext(); ) {
element = (Vector) it.next();
element.removeAll(noiseWords);
for (Iterator innerit = element.iterator(); innerit.hasNext();) {
System.out.print(' ' + innerit.next());
}
System.out.println('.');
}
}
private static Vector createVector(String s) {
Vector v = new Vector();
StringTokenizer parser = new StringTokenizer(s);
while (parser.hasMoreTokens()) {
v.add(parser.nextToken().toLowerCase());
}
return v;
}
} |
| Wed 28 May | Scot | It looks from the println statements like you need to use an interactive debugger. try http://www.eclipse.org if you don't already have one. it should be easy to figure out with the right tools. |
| Wed 28 May | anon | Additionally, instead of looping through the noisewords array, you should probably just use a hashset:
Set noiseSet=new HashSet();
for(int qw=0;qw
|
| Wed 28 May | igor | When you remove an element, the Vector gets smaller, but you keep incrementing j. If you wind up removing all elements, on the last iteration the size is 1, but j is the original size.
I would strongly recommend using Iterator to go thourgh the Vector. Then you can do it.remove() to remove the current element without having to worry about indicies. I would also recommend using a List rather than Vector to avoid unnecessary synchronization.
anon's suggestion to use a HashSet is excellent. It's a much more approriate data structure for what you're trying to do. You may need to use String.CASE_INSENSITIVE_ORDER for comparison if string case doesn't matter.
Just curious - what is this code for - a class project or real product? |
| Wed 28 May | sumit | hi igor,
real product, part of a real product for document clustering of a web search engine...got most of the code, stuck on the indexes here... have used HashSets elsewhere |
| Wed 28 May | Crimson | Agree with Konrad,
You're missing a couple of brackets around the if statement checking for the presence of noise words.
It's probably a bug, but I don't know if it'll solve all your problems. :) |
| Wed 28 May | David Geller | When removed vectors, perform from the bottom up - not the other way. As others have noted, removing elements changes the size of the vector. Eventually you'll throw an out of bounds exception. |
| Wed 28 May | raindog | OFF-TOPIC:
What an ugly language!!!
Isn't it amazing that Java got widespread use when it requires such cumbersome, error-prone operations to do something as simple as the orgiginal poster needs. Sheesh...
For a comparison, this is how the same is done in high-level language (Ruby, in this case):
for vector in vector_of_vectors
vector.delete_if { |word| noise_words.include? word.downcase }
end
Sorry for the off-topic, but I just couldn't resist. |
| Wed 28 May | . | raindog,
to someone who's not very familiar with Ruby your code looks even more obscure. If you look at anon's changes you'll see that the proper solution is quite readable. I'm sure it's easy to write bad code in Ruby just as much as java. |
| Wed 28 May | raindog | >> to someone who's not very familiar with Ruby your code looks even more obscure. If you look at anon's changes you'll see that the proper solution is quite readable. I'm sure it's easy to write bad code in Ruby just as much as java.
I didn't say it's obscure. I said it's ugly, but it's a matter of taste. Sorry again, I really don't mean to hurt anyone's feeleings.
As to the bad code: yes, you're right. It's easy to write bad code in any language. However, a solution in Perl, Python or Ruby takes 5-10 times less LOCs than Java, on average. And error per LOC parameter doesn't depend on language used. Sorry, I don't have references to these 2 facts handy. Just believe me :-) |
| Wed 28 May | anonymous | In Java 1.5, isn't Java going to have better syntax for going through a Collection's elements? Like 'for item in blahList'?
Correct Java code isn't as bad as the OP's code snippet. But it's still a bondage & discipline language, nothing like Python or the rest. |
| Wed 28 May | raindog | Yes, I'm looking forward to ver. 1.5
Java is a good environment. It just needs a good language now :) |
| Thu 29 May | Evgeny Goldin | [[ However, a solution in Perl, Python or Ruby takes 5-10 times less LOCs than Java, on average ]]
You're comparing orange and apples. Sport car may go much faster and easier than a truck but it can't carry as much load. I used to develop a lot in both Perl and Java - both of them have advantages and disadvantages over each other. There are applications where Perl fits better, there are those where Java does.
Comparing LOCs, number of errors and etc is still a meaningless task, IMHO. Perl vs. Java is rather a long talk and I have a lot of thoughts about it, but we're offtoping too much already ;) |
| Thu 29 May | Ged Byrne | Am I missing something. Is there a compelling reason not to use removeAll?
Vector element;
for (Iterator it=v.iterator(); it.hasNext(); ) {
element = (Vector) it.next();
element.removeAll(noiseWords);
}
Seems elegant enough to me. With 1.4 I believe you can even get rid of the cast. |
| Thu 29 May | raindog | Ged, it almost works. Unfortunately, the comparison should be case-insensitive and we need to downcase the elements of an array (assuming noiseWords are already in lowercase).
Here's the problem: even if Java API provides a |