last updated:05 Apr 2004 14:52 UK time
|
 |
|
(Comments added for week ending Sun 04 Apr 2004) | View Other Weeks
|
|
| Creative jobs vs. service oriented | Sun 04 Apr | Mr Curiousity |
| Something Ive been thinking about for a while. Basically, in any kind of work environment, the people could be seperated into creators, service people, and parasites, er ..., management.
Creators are working directly on the main product the company sells, such as developers working on the software products at Microsoft, or, or chemists working on new drugs in a drug discovery company.
Service guys, on the other hand, are supposed to keep the creators happy, and thus are just lowly servicemen, whose only purpose it to serve and please creators. Thus the servicemen are usually at the bottom of the food chain, so to speak.
Certain jobs can either be of a creator type, or a serviceman, depending on the company. This is especially true for programmers, who could either work on a product, or support some ongoing activity.
My question is to those who have experienced both ends of the spectrum. Can a service position be as satisfying as the one where the person actually works on a final product? My experience is that compared to working on some stupid ideas generated by others, and been usually treated as a lowly serviceman, it is much more satisfying to work on MY own stupid ideas, or even have somebody else working on them for me :-) The former is almost 100% certain for those holding service positions, whereas the latter is not a guarantee, but still is more likely for those in creative positions.
Opinions? |
| Sun 04 Apr | Get back to work you! | I'd divide it into the same three caaategories but I would label them differently:
1. Mindless low skill button pushers
2. Service
3. Visionaries that drive innovation through exemplary leadership |
| Sun 04 Apr | deja vu | You forgot marketing and sales.. I'd consider those to be a service and well, if money making is what makes you happy, they seem to do ok..
Not to mention the fact that creating an end product could also merely lead to the provision of a service; for example.. Google makes a search engine, and provides a search service at the same time.. And the grey area inbetween, if you build a piece of software that cleans out the link farms, are you building a product or a service ? |
| Sun 04 Apr | Nigel | How often do Creators actually develop their own ideas, and how come Servicers can't be creative? |
| Sun 04 Apr | Mr Curiousity | 'How often do Creators actually develop their own ideas, and how come Servicers can't be creative? '
That is not the point. The point is whose ideas take precedence and are better rewarded. So, if you are in Services and develop your ideas, at most they will facilitate the jobs of the creators, and so the credit you get won't be that significant. Also, if a creator does not want to pursue something further, your ideas on the subject will have to be dropped, because now something else is more important, and you must start working on it ASAP. |
| Sun 04 Apr | Mr. Analogy | Are defining 'service' as people who's customers are *internal* to the company?
I.e., Sales or Marketing would have an external customer (essentially). However, HR would have an internal customer that they serve: employees. Likewise with janitorial, the cafeteria (at Microsoft), etc.
If THAT is the distinction you're making, then I'd say you're spot on correct.
If your customer is internal, you don't really have a 'customer' because the person receiving your service does not pay your salary. So, you're not going to get the respect/pay commesurate with the job you do for them. |
|
| It's that time of year (taxes) | Sun 04 Apr | snotnose |
| Ive been doing independant consulting for 3 months now, and start a new job (as an employee) in 2 weeks. I need to pay taxes on my loot. My current employer is 6 weeks behind on her payments. (Im not worried about getting paid. yet).
When I file quartarly taxes, should I only include what Ive been paid, or include outstanding invoices? |
| Sun 04 Apr | Scot | It depends on how you are operating your business. Read up on 'Cash vs. Accrual Accounting' for more info. |
| Sun 04 Apr | MSHack | Ask you accountant, states would be the bigger issue. I normally wait until the end of the year and then pay the penalty. Unless you are rolling in 7 figures, it is unlikely to amount to much. |
| Sun 04 Apr | John C. | Scot's right that you need to base the answer on whether your business is operating under cash or accural accounting. If you're doing straight consulting/contracting work and not managing inventory, etc., then cash accounting probably makes more sense. And if you haven't set up official books for your business you're essentially operating a cash business by default.
[Usual disclaimers: I am not an accountant, and this discussion assumes you're based in the U.S.]
The basic rule with a cash-accounting business is that for tax purposes you receive income on the day it becomes constructively available to you, which usually means the day you receive a check in the mail or otherwise have the money in hand, regardless of whether you actually deposit it in the bank right away. So, assuming you are indeed operating on a cash basis, to compute your 1Q tax liability you're going to use all the income you actually received from 1/1/04 through 3/31/04. There's a worksheet in the tax guide that you use to extrapolate out your income for an entire year and pro-rate the tax -- basically you multiply your 1Q income by 4 and figure out what the total annual tax would be, then divide it by 4 to figure out what you have to pay now.
I assume you are aware that in addition to the usual federal (and possibly state and city, depending on your location) income taxes, you are also required to pay both halves of the SE (FICA and Medicare) taxes, which typically total 15.3% of your net (after deductible expenses) consulting income. (These taxes are themselves partly deductible, and there's a ceiling on FICA when you hit about $90K in one calendar year.)
To avoid penalties at the federal level, you need to make sure your quarterly payment (including any withholding) totals the lesser of 90% of your actual tax owed or 100% of the tax you would've owed in the equivalent period last year (actually 110% if your income is above a certain level). State rules will vary.
You need to be aware that for purposes of reporting self-employment income, the second quarter actually ends at the end of *May*, and your payment will be due by 6/15 or so.
Have fun :-) |
| Sun 04 Apr | Mark Hoffman |
My accountant here in Texas tells me that I operate under the cash basis, so I don't pay taxes until I actually receive the money. I suspect that you likely operate under the same rules.
To keep things simple & clean, I make an IRS tax deposit every time I have my accountant cut me a paycheck. The IRS is the *last* bunch of people that I want to owe money to, so no matter what happens to my cash flow the IRS is paid up. |
|
| Iconix UML approach feedback ? | Sun 04 Apr | Joe Hendricks |
| Just finished training CD on using the Iconix UML method with Enterprise Architect. Anyone have any feedback on the Iconix approach ?
( www.iconixsw.com )
Seems perfect for small shops... |
| Sun 04 Apr | jos forum abuser | I have come to assume any post in any forum that mentions a product/company is automatically spam. I don't think it's too hard to have fruitful discussions about methodologies without the need to reference any products at all. |
| Sun 04 Apr | Joe Hendricks | No, not spam. These guys come down hard on XProgramming, which I have been using, but have pretty good arguments. Their simplified UML approach seems reasonable, but I seem to remember a long ago discussion in here that debated whether they were departing from UML standards or not. I could really use some feedback. |
|
| How do you study? | Sun 04 Apr | RP |
| How do you study?
No, really, what technique, methodology, voodoo do you use to discipline yourself to sitdown and study?
I want to take my Java certification, but for the life of me, I cant sit down and study. Simply read whats on the book. This is so frustrating.
How do you guys manage it? |
| Sun 04 Apr | Sam Livingston-Gray | External motivation: by paying for classes, and enlisting my partner to kick my butt when she sees me reading novels, I get more work done than I otherwise might... (= |
| Sun 04 Apr | Brad Wilson | In my experience, there are various ways to learn. Some prefer reading, some prefer being taught, and all over the spectrum.
Perhaps you're not a reader. I would say that if you don't like to learn by reading, then you aren't going to be happy trying to force yourself to read. It may simply be that you need to take some classes instead, if you can afford them, or perhaps find someone else who is studying the same material so that you can get the social aspects that you desire.
Good luck! |
| Sun 04 Apr | snotnose | I try and read books and magazines, but to really figure something out I have to solve a problem. It's how I learn new languages, think of something easy to do (like conway's game of life), then implement it. |
| Sun 04 Apr | MSHack | I agree with Brad. You need to identify how you best learn. Some people can read IBM manuals and know the material. Other's could not learn from a book if it was a survival guide.
I tend toward classes, unless I can set aside hours in the day to study. By setting them aside, (7 to 9, 10 to 12, whatever works for you), you have scheduled the time to be used. Trying to 'fit it in' does not work for me. |
| Sun 04 Apr | Tayssir John Gabbour | What I guess I do...
Skim, flip around, whatever to do to find it interesting. Focus on high level concepts, so the lower level ones have a nice framework when it's time to focus on them. A 'disciplined,' methodical path follows from interest.
Also need to find the right guides, just as you naturally try to read interesting websites. Even very good teachers can still be flawed, so imagine what the mediocre is like. I strongly suggest you mention what precisely you're certifying yourself in, and what you're reading or using to pursue this goal.
Learn something abstractly related. With time constraints, this is not the way to go, but learning becomes powerful when you have a fund of other concepts that offer different perspectives. When the mind correlates, that is an implicit form of exercise. Especially as you drill deep into what you're learning in order to see if relations really hold. (Incidentally, this is the general case of 'learn something a level down.') |
|
| What is ethical pricing? | Sun 04 Apr | |
| What do you consider ethical in terms of pricing a product or service.
Lets say you can write a program, and all costs (your time, computer, office rent, etc) costs you $100. You can sell this product only 1 people, its a very special one.
How do you determine the price? Do you use an average margin? What if the customer is willing to pay $5000 for this product. Do you feel OK to sell a $100 product for $5000. Or is it something which exploits the weakness of the buyer? |
| Sun 04 Apr | Michael Bean | The ethical way to price is to price to value. That is, you should charge something less than the value that your customer receives from using your product or service.
A simple way to think about pricing is calculate the Mean Time to Payback. Put all the costs associated with using your product in the numerator. Costs include the costs of your product, the cost of things your customer will have to buy to use your product (example: new hardware), the costs of training, the cost of time lost to the customer has he or she gets familiar with the product, etc.
Put all the benefits of using your product in the denominator. Benefits include increased revenue from using your product, cost savings from using your product, etc.
The Mean Time to Payback (MTP) equation looks something like this:
MTP = (Costs of Using Product) / (Benefits from Using Product)
You should do everything you can to drive your mean time to payback as close to 0 as possible.
A good article about pricing can be found here:
http://www.fastcompany.com/online/68/pricing.html
Aside from mean time to payback, you also need to consider the price of alternatives your customer has. Most of these alternatives come from competitors, but a customer (almost) always has the option of not using any product. So remember that you are also always competing with the option of buying nothing.
I built a simple simulation that examines how the price of alternatives affects the price you can charge for a product and how, in some cases, it makes sense not to lower your price:
http://www.forio.com/pcpricesim.htm
This simulation looks at laptop pricing from Dell vs. computers offered by HP, but can be adapted for other situations. |
| Sun 04 Apr | MSHack | Ethical pricing? Unless you're selling a kidney, I do not think it applies. People have the option to buy from you or pay someone else to build it. In a market economy, you can price at the highest level you can get someone to pay.
If the price is too low for you, then you will not do it again. If it is too high for the customer, they will not.
I guess I just don't see the ethical dilemma. |
|
| Google AdSense in homemade browser? | Sun 04 Apr | Alex.ro |
| Hi All,
The AdSense T.O.S. says Ads by Google can only appear in the web browser:
A site or third party cannot display our ads as a result of the actions of any software application such as a toolbar. The AdSense ad code must not be pasted into any software application.
https://www.google.com/adsense/policies
My question is: what about an application with a built-in web browser control? It seems a gray area.
Im asking in the context of a collaboration application (sort of a barebones Notes) that would have Google ads running along the edge. |
| Sun 04 Apr | FullNameRequired | its hard to imagine why they have a problem with their ads being displayed in any capacity.
surely if I unilaterally decide to give their ads exposure for no charge it benefits everyone (except maybe myself).
american greed and stupidity...every day I hate it a little more... |
| Sun 04 Apr | r1ch | I think that it's probably to do with the fact that Google AdSense analyses the page content to determine what ads to display. If the ads aren't being hosted in a browser without the content they wouldn't be able to do that. As long as their code can properly determine context to work out what ads to display they probably don't care. |
|
| Impedance Mismatch | Sun 04 Apr | BDKR |
| Ive had the misfortune of inheriting a code base that suffered from impedance mismatch. As a result of the digging Ive done into the subject of ODBMS, it seems to me Joels definition is a little akward as it seems to focus more on libraries or that glue in between. Based on what ODBMS vendors state, this mismatch is the result of trying to map a hirearchal data structure into a relational system. While it can be done intelligently, I suspect that just how to do so isnt immediately apparent.
In the system in use with my previous (woo hoo!) employer, their were tables for classes, objects, object relationships and one huge table that stored all data called objectData. The amount of code needed to get one piece of information out the system was ridiculous. The system had to first determine what class the object is an instance of, then its relationships (its place in the tree) and properties, and then finally yank that information out of the objectData table.
This was an extremely slow process that was well masked on a fast machine and small data sets. However, when it came time to throw a large data set at it, which is about the time I was hired, the system suddenly felt as though it were an old 286!
Evenstill, Im not a proponent of ODMBS. Perhaps Ive read too much Fabian Pascal.
Anyway, how does this fit with what Joel said? Is it possible to effeciently store object hierarchies in an RDBMS? If we insist on using an RDMBS, isnt this first a question of schema?
Cheers,
BDKR |
| Sun 04 Apr | Dwilliams |
Sounds like the problem there was they tried to build an object-relational database on top of a regular relational database.
Normally this should not be necessary. Just take the simple approach, and map classes to tables and any peristent, non-derivable member variables to columns in those tables.
Use sequences / auto-number columns for primary keys.
If you need inheritance, used joins with parent tables based on the parent object ID.
If you think about it, you can probably automate 95% of this (using something like the Java Hibernate package.) |
| Sun 04 Apr | Will | It seems simple, but gets complex quickly. Particularly with relations between different classes.
Hibernate does a good job with this, I agree. |
| Sun 04 Apr | MR | It’s not a matter of trying to model hierarchies relationally. Since you know Fabian Pascal’s work you’ll know that the relational model is quite capable of modeling hierarchical structures. The “mismatch” problem is three-fold:
1) Current SQL DBMS vendors have poorly implemented the relational model leading to difficulties in dealing with hierarchies and objects
2) Developers consider the RDBMS to be nothing more than a place to stick data – hence terms like “persistence” and “data store”
3) As a consequent of points 1 and 2 there is no pressure on DBMS vendors to “get it right” (so they won’t) – thus leading us to such bad ideas as ODBMS and XML DBMS (and past bad ideas as IBM IMS)
The relational model and object-oriented “theory” are much similar than you might think. The RM includes the idea of “complex” data types which consists of (from “Practical Issues in Database Management”):
* a name
* One or more named possible representation(s), of which
--- one is physically stored
--- at least one is declared to users
* Possible additional type constraints
* A set of operators permissible on the type’s values
Note that this is a superset of what objects offer. If objects offered a table-equivalent then it would be, in this context, no different from the relational model – indeed there would be no mismatch at all!
Of course, since the RM is based on predicate logic and set theory there are other significant, practical advantages that it has over OODBMS.
Depending on your outlook this raises one of two questions:
1) So what?
2) How do we move forward?
Question one is an example of the quintessential close-minded “I just need to get my work done leave me alone with those sorts of theoretical problems” person. Certainly we have a limited set of tools with which to work and have real-world problems which must be solved – otherwise we don’t get paid and then all sorts of bad things happen. But that is no reason to simply ignore better, proven solutions which are out there. If everyone was of this type we’d not have light bulbs, or automobiles, or electricity, etc.
Question two is a harder question to answer. Certainly we have to put pressure on SQL DBMS vendors to “get it right” and allow true relational domains and relational hierarchical operators (Oracle’s CONNECT BY is not a good example of one). The payback is obvious – decreased development time, decreased likelihood of bugs, safer data, etc.
In either case it’s good to be aware of the limitations of the DBMS product you’re using so you know the practical implications and how to work around them (and demand that your vendor fix them).
And some good/interesting Wiki links are here:
http://c2.com/cgi/wiki?RelationalModel
http://c2.com/cgi/wiki?ObjectRelationalPsychologicalMismatch |
|
| Any Germans around here? | Sat 03 Apr | RP |
| I just found this website http://www.artima.com/wbc/interprogP.html. Somewhere on it theres an Angelika Langer talking about the way she handles hiring a programmer. She says that when you leave a company every employee is handled a written review. Now, is something that kills me. What does it happen when you work at a problem company and simply have to leave it?
An example: Youre hired. You do your thing. Suddenly the company doesnt need you any more but because of the laws you cant be fired. How does the boss makes you live? He makes your live miserable. You leave.
Youre not getting out in good terms with him. Worse, its written on paper, on that final evaluation.
How do you handle that? |
| Sun 04 Apr | _ | This is indeed the cheesiest system in the world.
In fact as an employer you are only allowed to write nice stuff. You really can't write it down if your employee was a foul apple. Now, a system evolved out of this. Employers have grown fond of writing certain sentences that 'are understood' but not explicit. There are whole codebooks you can actually buy.
Don't ask me who invented this bs, but it's indeed a typical example of where Germany does something Really Stupid. |
| Sun 04 Apr | pavel | Working link, hopefully:
http://www.artima.com/wbc/interprog3.html |
| Sun 04 Apr | RP | I understand those subtle messages that are sent by nice reviews. What I mean is, what do you do when you know you don't have a good review. You know those nice words written on paper are actually damaging you, how do you do to get away from the stigma? |
| Sun 04 Apr | Robert 'Groby' Blum | 'You know those nice words written on paper are actually damaging you, how do you do to get away from the stigma?'
You sue. As a previous poster said, your employer can't really say anything negative about you anyways. But even if he wraps it in nice and flowery phrases, if the undertone is damaging to you, you can sue.
In case you actually are a bad apple, that will not help you, of course.
BTW: The above-mentioned phrase books are quite useless - *everybody* knows about them. So you better get creative when you write a bad review - the judge knows'em, too.
What I don't get are the 'Germany gets it wrong' statements here - how is this different from the system of references used in the states? If you leave on bad terms, it's quite unlikely you'll get any good reference from a supervisor.
It's simply a fact of life that, if you leave your company in anger, you will not get a good reference or review. No matter what the legal system behind it is. |
| Sun 04 Apr | Chris Nahr | I think the previous comments didn't say that Germany doesn't "get it wrong" because bad employees can get bad reviews but rather because stupid laws mandate that employers (a) have to write reviews and (b) cannot give honest (from their point of view) opinions. |
| Sun 04 Apr | Tayssir John Gabbour | The firing laws incidentally give you some leverage. An incentive for someone to get rid of you on terms not too damaging to you. And I think you can get such a review from anyone with sufficent authority, not just the person you have problems with.
It is a facet of a system which emphasizes documentation to an amusing extent. Alles in Ordnung... Of course, this is not to dump on Germany, since the US has problems of its own in the opposite extreme -- a system which encourages decisionmakers to act disloyal to employees. Companies at malicious extremes will always bend rules into pitfalls, no matter the country. |
|
| Who else is digging for freedom? | Sat 03 Apr | The Digger |
| I am writing a free app which i hope will be bought over by some company some day.....
I want to be free from this damned job of programming. My current work requires me only 2-3 hours of work. So i spend a lot of time - evenings, weekends and late nights working on my application and slowly digging my way out of prison. Brick by brick. Layer by Layer.
I have been digging for around 3 years serious now. And the first release is also out. But no one is interested yet. But i hope they will be because i am porting it to Linux and my app will be one of the very few cross platform applications available.
Who else is digging like me?. Share your experiences please... |
| Sat 03 Apr | Mike Swieton | I hate to be the voice of pessimism, but I'm not so sure that writing software is a good way to get out of a programming job. If you want out, have you considered for example becoming a bartender? Even if you're not successful, there's a lot of liquer involved in that one... |
| Sat 03 Apr | Matthew Lock | I found this article helpful: 'Hackers and Painters' http://www.paulgraham.com/hp.html
'I think the answer to this problem, in the case of software, is a concept known to nearly all makers: the day job. This phrase began with musicians, who perform at night. More generally, it means that you have one kind of work you do for money, and another for love.
Nearly all makers have day jobs early in their careers. Painters and writers notoriously do. If you're lucky you can get a day job that's closely related to your real work. Musicians often seem to work in record stores. A hacker working on some programming language or operating system might likewise be able to get a day job using it. [1]' |
| Sat 03 Apr | Sexist | You have a (presumably well-paying) job that requires only 2-3 hours of work a day, and you're whining about how your work is a 'prison'? Jeez, man!
I don't know your situation--maybe the work you're doing is indeed dull, but every job in every field has occasional dull parts. It sounds like you've got life better than 95% of workers, so why the heck are you whining? Show some perspective, man! |
| Sat 03 Apr | The Contrarian | 'My current work requires me only 2-3 hours of work. So i spend a lot of time - evenings, weekends and late nights working on my application and slowly digging my way out of prison.'
As opposed to showing some initiative on your part and asking for more responsibility? |
| Sat 03 Apr | Cosmo Kramer | Been listening to "The Wall" lately? |
| Sat 03 Apr | . | As Mike mention, it does seem a tad illogical that you're breaking free of programming...by programming. If you really hate it so much, take up some other endeaver unrelated to software development. |
| Sun 04 Apr | Slicky | Yes, I am digging for freedom, too. I can't speak for the OP, but the reason I am doing it is because the work environment in the corporate cube farm, and the corporate politics, and the 1.5 hours wasted every day driving, and the crappy fact that no matter how good of a job I do some VP will get all the credit, etc. etc. That is what sucks.
To me, I like most of the work I do. I like the people I work with directly. I just want to have the freedom to on things I want to work on. I am very lucky now, though. I am working on a service, not a product, and a service that has a ripe market. Not only that, but a business model that our target market would be insane to pass up. The current proforma estimates I will be 'free' in about two months. If it falls through, the experience has been very valuable anyway. |
| Sun 04 Apr | Matthew Lock | Just finished watching "Open All Hours" on DVD. *That* makes you appreciate how easy we have it in a cubefarm! |
| Sun 04 Apr | Mr. Outsourcer | Lazy bum. Just quit that job so I can get it for 10% of your salary!
And you wonder why you lose your jobs to us... you don't even like them. Americans hate being engineers... but chinese love it! |
| Sun 04 Apr | geez! | Geez.. Give the guy some slack. He probably meant his day job *leaves* him 2-3 hours a day so he works nights and weekends. Well, maybe he didn't, but it sounds more logical this way.
Secondly, he is trying to free himself of his boss and the corporate monster... Not of programming.. I am doing a similar thing. I love what I do. I just don't like to be doing it so that someone else get's the bigger piece out of the pie.
You guys are so cynical sometimes.. Loosen up a bit!
Digger,
Why didn't you post your website so we can take a look at the program you released? Instead of complaining that noone is interested, you need to get feedback. You need to stay in touch with your (potential) customers and see what they want that you don't have or what they didn't want that you have in your app. Even if your app is free, you are still dealing with customers, and it is an iterative process. |
| Sun 04 Apr | son of parnas | >If you're lucky you can get a day job that's closely
> related to your real work.
Not sure about this. I find it very hard to program
all day and the come home and program some
more. It would be better i think to have a different
type of job from the digging gig. |
| Sun 04 Apr | no name | I find it hard to work at a programming job all day and then come home and work on marketing related tasks. |
| Sun 04 Apr | Mr. Analogy | It seems that the challeng you face is that no one seems to be interested in your program (so far).
How will porting it to Linux address your primary challenge?
(Are there a LOT more potential customers for YOUR application on Linux?). I'd guess that, in general, the Linux market is about 1/100 the size of the Windows market.
It is unlikely that any company will buy your program unless you can demonstrate that people will PAY for it.
So, my advice (as the CEO of a software company) is to work on how to sell your product, not porting it to another platform. |
|
| Buying music online - recommendations? | Sat 03 Apr | Philo |
| Okay, I know about iTunes and MusicNow - anyone using a buy songs online service that can share comments? Im looking for usability and selection (big surprise, eh?)
Philo |
| Sat 03 Apr | JWA | I've been really happy with iTunes, though I haven't tried any of the other new systems. Of course iTunes always has what I want and is so easy to find things/buy them that I haven't needed to look at anything else.
--Josh |
| Sat 03 Apr | Zahid | I'm surprised to hear you say iTunes always has what you want ... I think I find around 2/3 of what I want there. It does appear, however, that their library is growing pretty fast. That's the only one I use and I like it, for the most part.
I do NOT like the rule about only burning tracks a certain number of times (or is it, only burning playlists a certain number of times)? But I figure I'll burn them all once, and if I want to make another copy, I can always rip that CD to MP3s later. |
| Sat 03 Apr | Prakash S | Don't buy music online, it is the one of the most painful things ever. I would suggest subscribing to Rhapsody, and burning which ever songs you want for $0.79.
itunes:
Usability is good, selction is *average.
Problems:
You can use in on 3 computers, burn it about 10 times (I think). You can't re-download songs if you happen to delete them. Most expensive at $0.99 a song. AAC only.
WalMart:
Usability is good, selection is *better. $0.88 a song. Windows DRM. Can download the songs how many ever times you want.
Problems:
Slightly more clicks to download a song. Can use it only on one computer and burn it about 10 times.
MusicRebllion:
quite a few songs start at $.05 (yup 5cents!), average price is around $0.35-0.65. Quite a few songs can be burnt unlimited no of times. *good collection.
Problems:
You need around 15 clicks to download one song. LiquidAudio uses some kind of windows DRM, that sucks. If you need to re-download songs, you need to send them an email, and they give you the links again.
Overall, I find buying music online to be really pain in the ass, sticking to CD's from amazon.com.
HTH, |
| Sat 03 Apr | Prakash S | I put the * to mean that selection depends on the kind/genre of music you listen to...... |
| Sat 03 Apr | Philo | I decided to try out iTunes, since there's no subscription requirement. I bought four songs I've been itching to listen to and I'm happy now.
Net cost: $3.96.
Cheaper than just one CD.
Now at some time I'll probably end up buying the CD's, but for the occasional 'I've got this song in my head' this works. :-)
Philo |
| Sat 03 Apr | Ben Combee | I'm into a lot of indie rock music, so I really dig EMusic -- 40 downloads a month for $10, with bigger plans if needed. I've also looked at buying some from http://audiolunchbox.com/ which sells unrestricted MP3 and Ogg Vorbis format tracks and albums. |
| Sun 04 Apr | Matthew Lock | If you're into Techno and Dance music Warp's Bleep is pretty cool. They sell totally unrestricted mp3s: http://www.warprecords.com/bleep/ *and* they have a policy of not treating their customers as criminals:
'Bleep music has no DRM or copy protection built in. We believe that most people like to be treated as customers and not potential criminals - DRM is easily circumvented and just puts obstacles in the way of enjoying music. Apple has even privately stated that they decided to use a weak form of DRM solely to get major labels onboard.' |
| Sun 04 Apr | Gregg Tavares | If you are infront of or near a computer most of the day, which I assume you are, then you should check out Listen.com. It's what Joel recommends and so do I. You'll spend much much less money and listen to far far more music than any of the other services. |
| Sun 04 Apr | Andrew Burton | iTunes for what I can buy.
Kazaa for everything else*.
---
*I'd BUY 'Dance Dance Revolution,' but no one I know of sells them. |
| Sun 04 Apr | Robert Jacobson | With the Listen/Rhapsody service, is there a way to transfer music to an MP3/WMA player? (Short of burning the songs to a CD and then ripping them to a media format?)
I love the idea of an all-you-can-listen, flat-fee subscription service, but also want the portability that comes with using a media player. |
|
| WinHelp problem (popups) | Sat 03 Apr | MX |
| Im maintaining a Delphi application which is using WinHelp.
When the user presses F1, the application calls the PopupID macro.
This shows a WinHelp popup.
Everything is ok, but.. when I press ESC, the focus, instead of returning to my application, somehow remains on WinHelp32 (which is not visible).
If the user presses F1 again, help on help appears - because the focus is on the invisible WinHelp, instead of on my application.
The PopupId macro is called like this:
WinHelp(0, PChar(HLP_Filename), HELP_COMMAND, Integer(HelpMacro));
HelpMacro is a PChar containing PopupId(filename, popup id)
How do I solve this?
How do I change the code, or the HPJ, so that when the user presses ESC, WinHelp quits (and goes to hell where it belongs)?
I tried many ways of doing this, and all failed.
Thank you very much! |
| Sun 04 Apr | Wayne | This page might have a COM DLL that you can replace your code with:
http://www.mvps.org/htmlhelpcenter
It's called the 'Help Technology Centre' if the link doesn't work. |
| Sun 04 Apr | Wayne | BTW, it's mostly free code with the source on that page. |
|
| Simple vs. complicated text formats. | Sat 03 Apr | The Iron-Fisted Hot Dog and Pretzel Baron of Fulton County |
| In protocol after protocol, I find text formats that start off well enough, but always get sabotaged with unneeded complexity.
For example, some network protocol might devise a format for meta information comprised of name=value pairs on lines by themselves:
name=value
other_name=other value
Simple, right? But then they decide to add an email field, and they do it like this:
email=username@domain
Then they add an encryption field, and do it like this:
encryption=format:key
Then they add a connection field, and do it like this:
connection=123.123.123.123:99 INET/IP4
...now you end up needing custom parsers just for each field.
The great thing about XML is the symmetry it affords to its users: elements, with a name and optional attributes, comprised other elements. No, Im not saying XML + XSLT + Schema + DTDs + whatever else is simpler than the above example, but just imagine the above rewritten as XML:
user@domain
Real Name
PGP
some key
123.123.123.123
99
INET
IP4
I guess what Im complaining about is a lack of symmetry. If you start off with name=value pairs and need sub fields and go with a space or tab as the first sub field separator, then for Gods sake, why not stay with that? Is it necessary to define all sorts of cute little formats with <, >, :, ( and ) in them for each sub field as the mood strikes you?
Do these spec writers ever eat their own dog food? Have they considered how hard it will be to build an event stream-based or tree-based parser for their cute little formats? |
| Sat 03 Apr | r-pt | if we define a field of a format as a name=value pair, i think that the next step it's not to create a sub field as in name=value1:value2:value3 but to create a way to aggregate related fields together, like this
[section1]
name1=value
name2=value
[section2]
name3=value
name4=value
using your xml example:
[email]
address=user@domain
realname=Real Name
[encryption]
format=PGP
key=some key
[connection]
address=123.123.123.123
port=99
connectionType=INET
addressType=IP4
Using a sub field removes semantic information from the format and makes it harder to understand. for example:
windowDefaultColors=white:black
So is this white text on black background or black text on white background ?
well, we have to consult our text format definition who has to keep not only the syntax rules but also a lot of semantic information. The format it's more expressive if we do this:
[windowDefaultColors]
background=white
foreground=black
the problem in many complicated formats it's that the autor sometimes fails to see that it doesn't need to change the basic buiding block to fit some complicated data but to add a way to give it a structure. |
| Sat 03 Apr | Oren Miller | Yeah, format isn't really the issue. I've seen some of the most horrble kludgy solutions done with enourmous and inconsistant XML files. No file format makes the file designer sensible.
I for one thing that the old INI files were generally easy to navigate, create, and modify. I generally prefer that format to XML. So I guess that is why MS got rid of them favor of the unmaintainable registry. Oh well.
--oren |
| Sat 03 Apr | Gregg Tavares | The registry wins over INI files actually because it's HARD to parse. The easy to parse INI files mean lots of programs try to manipulate them by hand therefore messing them up. With the registry there is only one way in, the Windows API.
As for XML, the advantage over INI files (or almost any other format) is that good parsers are available in almost any language (C++, Javascript, VBScript, Java, Perl, C#, etc...) and they do a lot more than your average ini file parser. The perl one for example will build arrays and hashes were appropriate.
Using DTD or XSLT they will validate your data for you. Many of the parsers will also handle converting things to floats or enums instead of strings where appropriate.
The best parsers will also handle any language as well since XML covers that as well. Putting Japanese in a .INI file and your on your own. In XML you just either specify at the top the data is in Japanese or Unicode and your parse will handle the rest.
how are these lines parsed in an INI file?
the name=Gregg
name=gregg=man
place= Japan
zip = 12345
Is the first line valid? Is the second line 'name' eq 'gregg=man' or 'name=gregg' eq 'man'? Is the 3rd line place='Japan' or place='Japan'? Is the 4th 'zip' or 'zip'
XML covers all those cases. |
| Sat 03 Apr | has | 'imagine the above rewritten as XML'
Or appropriately structured plaintext, e.g.
email:
address=user@domain
real-name=Real Name
encryption:
format=PGP
key=some key
connection:
address=123.123.123.123
port=99
connection-type=INET
address-type=IP4 |
| Sat 03 Apr | KayJay | Plain text files work best only when there is a fixed field size. Then parsing becomes almost trivial. Problems arise when the field size is a variant and one has to add multiple loop & search to the parsers.
Regards
Kaushik Janardhanan |
| Sat 03 Apr | Egor | email_address = name@domain
email_user_name = First Last
Every config file I've dealt with does just that, where did you get your example, Iron-Fisted ? |
| Sat 03 Apr | Mr. Analogy | 'The registry wins over INI files actually because it's HARD to parse. '
Good point. Never thought of that before. It's like doctor's using Latin (a 'dead language') : the general society is unlikely to change the usage of the latin words. So medical terminology is 'write protected'. You dn't have patients trying to misuse terminology. |
| Sun 04 Apr | The Iron-Fisted Hot Dog and Pretzel Baron of Fulton County | > Every config file I've dealt with does just that, where did you get your example, Iron-Fisted ?
It wasn't a config file, it was samples from various network protocols I've had the pleasure of implmenting where the designers clearly had their heads up in the clouds. |
| Sun 04 Apr | i like i | 'where the designers clearly had their heads up in the clouds'
lol, you weren't picking on HTTP were you? |
| Sun 04 Apr | The Iron-Fisted Hot Dog and Pretzel Baron of Fulton County | No, I wasn't picking on HTTP. Actually, compared to some of the stuff I've dealt with, HTTP isn't too bad.
It just pisses me off that nonsense like this gets standardized. Several people here have shown other ways to convey the same information in a generic, structured manner, and if they can figure it out, why can't lofty spec writers with PHDs?
I can see crap like this coming out of the closed doors of the ISO, but with the IETF and the public input its process seeks out, it's strange that few people apparently ever challenge the wisdom, ease-of-use, or efficiency of these crazy formats. |
| Sun 04 Apr | MR | > 'With the registry there is only one way in, the Windows API.'
>'good parsers are available ... and they do a lot more than your average ini file parser.'
>'Using DTD or XSLT they will validate your data for you. '
Sounds a lot like a RDBMS, which is better than XML as storage. |
|
| 2 offers, which one to take? | Fri 02 Apr | Confused |
| after being unemployed for 4-5 months, I have 2 offers, one with a small startup, which has a really good product and in growth mode. The other is with a large consulting firm involving travel every week, coming home on the weekends, and basically working as a consultant at client sites.
The pay scales are roughly the same,what I am really looking for is a place to grow technically and a stable job.
The consulting company is 100% travel, it appears kind of glamerous, but thinking long term, how will it be a year or two out in the future? also they seem more concerned with presentation, and are doing a lot of rewrites, that has me a bit suspecious. I dont have a family right now, but
when I do decide to start one, the travel might be a bit of a problem.
Everything in the startup is fine, except maybe if they tank off, which I think they wont, and is just 5 minutes from home.
I have to make a decision in a few days,
what do people think?
I have 2 years previous experience, and think Im kind of lucky to get 2 offers, but it was a lot of hard work and 10 interviews.
Any opinions appreciated. |
| Fri 02 Apr | jm | Definitely the startup. You have a chance to do something useful, build expertise and gain employable skills.
In the consulting firm - tell me it's not one of the accountants - you're just a suit that flies to places and fills out the timesheets. They will offshore your job the first chance they get ( just because you fly around doesn't mean you're not vulnerable.)
When you go for your nest job, your experience will be superficial b.shit. |
| Fri 02 Apr | Think I just interviewed there myself recently... | If the consulting company is the one I think it might be (the description sounds awfully familiar), and if they're growing as fast as they claim to be, then you may well have another shot at them in a year or two if the startup does tank. |
| Fri 02 Apr | Almost Anonymous | 'The consulting company is 100% travel, it appears kind of glamerous, but thinking long term, how will it be a year or two out in the future?'
My mother-in-law does this and she hates it! The travel wears you down. |
| Sat 03 Apr | somebody | 100% business travel is not glamorous. That's just a lie people tell themselves and others to justify the crap they're putting themselves through. I saw an airline advertisement once that summed the experience up really well: It was a grid of 9 photos of conference rooms; Under each was the name of some major city: 'London', 'New York', 'Tokyo', 'Paris', etc.. The rooms varied a bit in keeping with the cultures they were intended to represent. But really, they were just a bunch of bland conference rooms.
I worked that kind of job for about a year after I first got out of school. I abandoned it for a job at Ars Digita. I've never regretted that decision, even when AD crashed and burned. And, frankly, your startup sounds like it's got a better chance than AD did. |
| Sat 03 Apr | Confused | Would working at different client sites mean expanding your professional network of contacts, which can help in the future? |
| Sat 03 Apr | jm | > Would working at different client sites mean expanding your professional network of contacts, which can help in the future?
No. Not if you're a fly-in suit. You wouldn't have any useful skill or capability that people would care about. |
| Sat 03 Apr | Sathyaish Chakravarthy | Working with a smaller company:
(1) You get to learn more because you are not simply developing software. You might be expected to write manuals, proposals, interact with clients, market your product, conduct interviews, create tools for automating internal process etc.
(2) Your work is noticed. In no time, you can become a super star, indispensible for the employer.
(3) You work near your place, so you are less vulnerable to physical malaise. This is an important consideration. It has been over an year now that I have been working 42 kilometers away from home, and I travel up and down everyday. Today, I feel like I am ten years above my age. It has taken a toll on my health, my skin is flabby and bones are mushy. I have had no time for family in the last 1 year. I am now considering shifting near by with my family.
(4) Burnouts are common.
Working far off with a big company:
==========================
(1) The purview of the functions you will be performing is going to be fairly limited. You might be maintaining lots of documents, and coding lesser than you expected to.
(2) You either commute up and down daily or you maintain two establishments - one near your office and the other where your family stays.
(3) A burnout is a blue moon occurance.
(4) You may get more real benefits than the monetary benefits you recieve. You might, for instance, have a healthier work environment, a cleaner ambience, better food, a better office canteen, pick up and drop facility etc.
(5) When you apply for your next job, you have a big name on your resume. As a result, you get your next job easier.
(6) These larger companies have got their head backwards. Your job is never secure. You'll have much more politics to deal with, and lesser rights until you attain the seniority of working with them for over an year. This does not apply to smaller firms, because your performance is instantly recognized in smaller places, and your value is realized sooner.
Bottomline:
========
Decision -> Yours |
| Sat 03 Apr | KayJay | Take the bigger company. In the long run it will be for the better. You will be exposed to a vast variety of people plus get work with a wide range of problems/situation. Your market value will increase substanially. A good grounding in business, technology, people management, understanding the difference between 'End' and 'Means', get to know the 'bad' things to avoid, etc. can be got only when exposed to such large institutions. I'll go so far as to say Joel fould not have been so succeeful, both with FG & JoS, without Microsoft *AND* Juno. Those experiences make a hell of a difference insofar a 'success: goes, Also financial stability is assured for 2 year period you mentioned, which is quite a long period by any account.
I made that mistake and am still paying a very high price for it. You could always join startups or better still start one yourself.
Yes, it is boring. Yes, it is tiring. Yes, it is worth it.
If you already have a consderable expperience in large organisations, then, of course, please disregard the above.
Regards
Kaushik Janardhanan |
| Sat 03 Apr | T. Norman | Business travel can be quite costly to you as an employee, especially if the company doesn't provide good enough accommodation and reimbursements.
Will you get a decent per diem? Will they pay to rent a car for you in cities that don't have a substantial public transportation system (like New York)? Will the hotels you stay in have a kitchen and fridge? Can you leave your belongings in the hotel room when you return home for the weekends, or will you have to check-in/check-out every week? Do you have somebody to organize your personal business back home if you have to work for a weekend or two? Will being away so often cause you to be sometimes unable to comply with conditions of your apartment's lease or homeowner's association (e.g. leaves must not remain unraked for more than 72 hours)?
Also be aware that you will likely have to file taxes in every state that you set foot in on business, if that state has an income tax. You probably won't have to *pay* every state's tax, as they have provisions that allow you to subtract the tax paid to one state from the tax owed to another. But you'll have to file taxes to account for all of that, and of course it is complicated so you'll probably have to pay a professional hundreds of dollars to do it.
I wouldn't take the traveling job unless the pay was at least 15% higher than the local job. The travel will cost you in ways you never expected. I've been there, done that, and don't want to do it again. |
| Sat 03 Apr | T. Norman | Just a couple more points:
Job security, or lack thereof, is probably the same in either case. The small company may go bankrupt, but the big company may lay you off regardless of their financial situation. Especially if there is a point in time where they don't have a client for you.
One advantage of working for a big consulting firm is that if you do a good job, you may find that a client wants to hire you for some good money.
How restrictive is the non-compete clause for the big company? If the contract prevents you from working for clients, try to find out how much success former employees of the big company had when leaving to join the clients. Even though the contract may prevent you from doing so on your own, they may waive the clause if the client is willing to pay a reasonable amount to have you 'released'.
If the big firm tends to construct big obstacles to movement of their ex-employees, that largely negates the advantage of the opportunities that may arise as a result of working for them. |
| Sat 03 Apr | Simon Lucy | Rent me your life for 12 months and I'll make your decision for you. |
| Sat 03 Apr | Mr. Analogy | 'problem domain' knowldege is more valuable, and less likely to be offshored. --> Small company is better.
Selling a product is much better than selling your time (long term). Problem with the latter is you're always running out of inventory :-) --> Small company is better.
Flying *first class* might be glamorous. Flying coach these days is NOT. My uncle at Delta confirmed: they ave definitely been moving the seats closer together every year. |
| Sat 03 Apr | Mr. Analogy | 'One advantage of working for a big consulting firm is that if you do a good job, you may find that a client wants to hire you for some good money.
'
Excellent point. I hadn't thought of that, although the management consulting company (Engineering, not programming) I worked for 10 years ago had a non-compete agreement. They also made an effort not to let me get too cozy with the clients. |
| Sat 03 Apr | T. Norman | My current job is the result of being hired by a client a couple years ago. I had a non-compete, but the client was willing to pay my former company whatever the amount was to release me from those bounds. A number of other consultants from the same consulting company were also being billed to the same client, and they wouldn't want to piss off a big client.
However, I was coming from a small, struggling consulting company. The big firms are less dependent on any single client, and may be less willing to allow people to join their clients. |
| Sat 03 Apr | Anechoic | As someone who traveled quite a bit in my previous job, let me say that business travel gets old quick. It's fun at the beginning to see new places. It's *really* fun to impress your friends by saying 'I just flew in from San Francisco, and I'll be in Dallas next week.' Plus, if you collect enough frequent flyer miles, your SO can fly for free with you, and you can turn the trip into a mini-vacation. And the food can be good.
After a while though, the travel just becomes one big haze of getting lost in airports, delayed flights, dirty hotels, smelly rental cars, getting lost on subways, never having clean clothes, missing bill payment dates, leaving things in hotel rooms/rental cars, crowded trains, catching colds from recirculated airplane air, jet lag, time away from friends/family, filling out trip reports, lost reservations, trips to Kinko, phone calls at odd hours because of time zone issues, spotty internet access, and so on. It ain't glamourous.
The best thing about working for my self now is knowing that I get to sleep in my own bed every night.
A previous poster said 'you will likely have to file taxes in every state that you set foot in on business.' I don't think that's correct - I believe state income tax is for residents only. I've traveled to 26 states in my past job, and I never had HR people or accountants mention filing income taxes in other states. If this were true, I don't think anyone would ever travel for business! |
| Sat 03 Apr | T. Norman | HR isn't necessarily going to tell you anything. Their withholding obligation is probably limited only to the state where they are headquartered or they state where you reside. Or perhaps the states you worked in didn't have an income tax or didn't tax non-residents who worked there.
But there are states that demand that you file taxes with them if you work there, regardless of your residence. I personally know someone who had to file in 4 different states. Look at the various state tax forms for yourself.
You probably won't have to actually pay taxes to multiple states, but you may have to file taxes everywhere, if only to say that your tax amount is $X minus a credit for $X that was paid to another state. They have a crazy web of rules to determine how each state's tax is credited against the others and how the taxes should be prorated based on the number of days in each state. Generally, your total tax will not be the sum of the various states but will be equal or close to the highest rate of all the states you touched. So the added tax burden can be as high as the difference between your home state and the highest-taxed state, plus the cost of paying an accountant to sort out the complexities.
Of course, maybe you could just keep quiet and only file in your home state, and hope the others won't find out since there is no governmental monitoring of who crosses state borders. But if you get audited, they will investigate the nature of your travels. |
| Sat 03 Apr | one programmer's opinion | Confused wrote, 'I have 2 offers, one with a small startup, which has a really good product and in growth mode. The other is with a large consulting firm involving travel every week, coming home on the weekends, and basically working as a consultant at client sites.'
Excluding the 100% travel part, if both offers are pretty much equal I would do the following:
I would try to find out as much as I can about the small company and if everything checks out then I would go with them. My guess is the large consulting firm is Accenture. I say this because your description of the consulting firm fits their MO. This company prefers to hire lots of young wet-behind-the-ears programmers and burn them out by requiring their employees to work lots of unpaid overtime.
I wouldn't put much stock in the 'we will fly you home on the weekends' spiel -- it probably ain't going to happen as often as you would like it to. Also, don't be surprised if the consulting firm sends you to a client which is located in the middle of nowhere and requires you to stay in a cheap two bedroom apartment with a roomate. |
| Sat 03 Apr | Philo | '> Would working at different client sites mean expanding your professional network of contacts, which can help in the future?
No. Not if you're a fly-in suit. You wouldn't have any useful skill or capability that people would care about.'
IMHO this depends 100% on your people skills. If you *act* like a hired gun, you'll be treated like a hired gun. On the other hand, if you act like someone who cares about the company and wants to help them succeed, you'll be remembered and it could pay off if you go looking later.
*****
I'm still in my honeymoon stage on the business travel thing, so it's still fun. However, drawing on my experience as a contractor (every year in a different office building with the same deli in the basement), I can agree that if you're likely to get jaded, you'll get jaded.
When I was interviewing, *every* interviewer made the point about this job being 30% travel. They were VERY interested in my comfort level with that. This tells me that in the past people have quoted the amount of travel as a reason for switching jobs.
That's 30% - a little more than one week a month. You're talking about 100%...
The previous posters also make good points about quality of travel - do you get to keep your frequent flier miles? (some companies require they be used on business travel) What kinds of hotels do they authorize? What expenses do they pay and what do you have to provide receipts for? (A requirement for receipts over, say, $20 indicates a very conservative attitude about employee spending). Do they pay rental cars/cab fare? Do you get per diem for meals? Do they cover long distance/cell phone expenses?
These are all very fair questions.
Finally, you mentioned that you don't have a family. Does this mean you don't have an SO? Or that you don't have kids? If the former, I'd take the travel job and run with it - enjoy being a bachelor and get out in every city. Heck, let your apartment go, shove some stuff in storage, and don't have a home. Just be a jet-setter. (Remember the comment about weekends, tho - if you're in NYC on Friday and SF on Monday, the company may not cover the weekend)
If you *do* have an SO, this is as much her decision as yours. But be sure to point out that with either job she's likely to see you equal amounts of time - they're both mistresses.
Finally, if you're not married and the comment 'when I decide to start a family' refers to getting married, it's an interesting perspective that choosing a life mate and settling down is something you think you have control over...
Philo |
| Sat 03 Apr | jm | Philo, Microsoft is a useful company and representing it is a useful role, so I would not apply your experience to that of the typical dumb consulting companies, especially the ones with an accounting background.
I second the comments about Accenture. If that's who it is, go for the startup. Accenture is the master of hiring young grads, charging a lot for them, and not really giving them any useful expertise. All the while they'll tell you you're so lucky and have such great prospects. |
| Sat 03 Apr | T. Norman | >'Finally, if you're not married and the comment 'when I decide to start a family' refers to getting married, it's an interesting perspective that choosing a life mate and settling down is something you think you have control over...'
True ... unless already engaged or close to it, it is unlikely the OP will still be with the same company when it's time for marriage and a family -- whichever company is chosen. |
| Sat 03 Apr | Anechoic | 'But there are states that demand that you file taxes with them if you work there, regardless of your residence. I personally know someone who had to file in 4 different states. Look at the various state tax forms for yourself.'
Which states? |
| Sat 03 Apr | Anechoic | ' I personally know someone who had to file in 4 different states. Look at the various state tax forms for yourself.'
And was your acquaitance *directly paid* from firms in those 4 states, or was s/he paid by a firm in her/his home state? |
| Sat 03 Apr | Bella | Job securuty? A 'real company' making a product, vs, providing overpriced labor to idiots who don't know any better. You tell me.
The Big6 firm you speak of. How great is the market demand for $300/hr progammers? I guess there are still a few retarded firms out there. But don't bank on this lomng term. They will lay your ass off the minute you're not staffed. Big 6 is a glorified chopshop/meatmarket. You're being billed out for hours.
Go where you get the best experience. End of story.
A 5 min. commute is a big perk, don't over look this. This cna translate to your entire gym daily workout, when you save yourself 1-2 hours of daily commute. |
| Sat 03 Apr | Bella | > , it's an interesting perspective that choosing a life mate and settling down is something you think you have control over...
Philo, I certainly think this is a decision people consciously make. .., Some choose to go out and find a partner, others do not. |
| Sat 03 Apr | Philo | 'Philo, I certainly think this is a decision people consciously make. .., Some choose to go out and find a partner, others do not.'
And in both cases true love generally appears where and when you least expect it.
Mind you, if you're a 'good catch' then yes, you can ignore everyone until you decide to 'find a wife' and will probably land one fairly quickly.
I'll bet you won't be truly happy, tho. ;-)
Philo |
| Sun 04 Apr | T. Norman | 'And was your acquaitance *directly paid* from firms in those 4 states, or was s/he paid by a firm in her/his home state?'
He was paid only by the firm that directly employed him.
Like it or not, there are a number of states that tax nonresidents. Massachusetts is one of them:
http://www.dor.state.ma.us/help/nonres.htm#3
'A nonresident is only subject to tax on items of income derived from or effectively connected with:
* any trade or business, including any employment carried on by the taxpayer in Massachusetts, regardless of the year in which that income is actually received by the taxpayer and regardless of the taxpayer's residence or domicile in the year it is received;'
...
'Some examples of the types of income taxable to a nonresident include:
* compensation for personal services performed in Massachusetts, including but not limited to wages, salaries, tips, bonuses, commissions, fees, and other compensation which relate to activities carried on in Massachusetts, regardless of where the compensation is paid;'
New York is another such state. They have an 84-page document describing how they tax nonresidents and part-year residents.
http://www.tax.state.ny.us/pdf/2003/inc/it203i_2003.pdf |
| Sun 04 Apr | Philo | This is most definitely not legal advice - this is vague surmising...
I'll bet that the issue is where both parties are, the privity of those parties, where pay is being issued, etc.
Let's say Joe works for ABC Corp, headquartered in Delaware. ABC Corp signs a services agreement with Client, Inc in Boston and sends Joe to do the work.
Joe is not earning any money based on his service in Boston - his earnings are based on salary resulting from a contract signed between two Delaware entities in Delaware. Joe's salary accrues to Joe irrespective of where he is. In other words, his earnings are not based on the service performed in Boston.
Now *ABC Corp* has earnings in Boston, and must file in Boston, but I suspect Joe does not.
I feel confident about that answer because Microsoft hasn't said word one about filing in the states we visit, and I am positive if we had to, they would.
Your friends may have had to file because they were working *directly* for the entitites they visited, in which case they are earning based on services performed in Boston.
Philo |
| Sun 04 Apr | T. Norman | Whether or not a specific individual will have to file or pay taxes in multiple states depends on a loooong list of conditions.
But it is a *fact* that some people do have to file taxes in a state(s) in addition to the one where they live, merely as a result of being physically present in that state while doing work, regardless of who pays their salary or where it comes from.
Your employer is not going to wade through the 84-page documents for every state and analyze the situation of every employee so everybody can be told where they need to file. So the fact that they didn't say anything to you means nothing. They have certain minimal obligations for tax withholding based on some basic conditions; anything outside of that is up to the individual to sort out.
If you live or work in multiple states with nonzero tax rates and want to know where you do or don't have to file taxes, you won't know what you're really supposed to do unless you spend the time reading through the hundreds of pages of tax laws, or hire an accountant or tax lawyer. |
| Sun 04 Apr | T. Norman | To the last paragraph I should add:
... or you can use tax software if it has knowledge of how to handle the conditions that apply to your situation. |
| Sun 04 Apr | Philo | Dude, I don't have to read 84 pages. I have to read the first paragraph on page two under 'How nonresidents and part-year residents are taxed' which says:
'If you were a nonresident of New York State and received income in 2003 from New York State sources...'
Very simple - ABC Corp in my example above is not a New York State source.
Got any more examples? I suggest you start with California - they generally tax anything they can get away with.
Philo |
| Sun 04 Apr | T. Norman | Alas, but you do need to read the 84 pages because the definition of 'New York source income' is not what you think it is. See page 6 to start with.
Your choice - you can talk to an accountant or lawyer who knows the real deal, or ignore it and hope the states don't come after you. |
|
| Experiences working in QA? | Fri 02 Apr | Jimmy Jo-Jo |
| Ive recently been speaking with a fairly large, well-known software company about joining up. Im about 6 months away from graduation, and havent worked in software before.
I was initially interviewing for a position as a SW developer, but they understandably found my experience rather lacking. Now there is talk of offering me a job in QA at the same salary. Im interested, but would really prefer to move on to software development at some point in my career.
Am I heading down the wrong path by getting into QA? What sort of experiences have people had doing this sort of work? As good as the money for this job is, I dont really want to get trapped in a ghetto - will this wind up limiting my options later on?
Your feedback would be appreciated. =) |
| Fri 02 Apr | Capn' Kirk | If you have any weapons, sell them now. It will save a lot of people later...
Actually, many CS grads start out in that department, and work their way into coding. I think you should read an article of Joel's about being a worthless peon.
Gee, that sentence came out wrong. But it's a good article. |
| Fri 02 Apr | Ron | Avoid QA. You're not going to get SW dev experience, so they're not going to move you over. And subsequent jobs at other companies will be based on your previous jobs, so you'd basically be stuck in QA forever... |
| Fri 02 Apr | MR | I found QA to be mind-numbingly boring. I worked for a couple of months as a summer intern at a company doing QA. The company and people were great, just doing QA sucked. Basically: every new release you have to run a series of regression tests to make sure things that were working in the previous version all of a sudden didn’t work. If your program is sufficiently complex, this will take a long, long time (although they have automated methods that you can use to help speed this up).
When I wasn’t doing regression testing I was authoring QA test procedures – basically list every step you needed to perform in order to accomplish XYZ in the product. Again, some of these were very complex and some ran into 20-30 pages.
When you weren’t writing test procedures you were running them. Somewhere in there, you had to write up bugs that you found and how to duplicate them. The frustrating part was that we’d have forms which would have no data validation and then crash the program if you entered in something wrong. Now, some were trivial (enter 99 digits in a price field and it crashed) but most were met with “No customer would ever do this and we have 50 ‘show stopper’ bugs blocking release” and that seemed like a cop-out to me. If *I* accidentally typed in something I shouldn’t and it crashed I wouldn’t appreciate it – although it would be hard to ‘accidentally’ enter 99 digits.
But if you’re a programmer at heart you’ll hate not being able to code – those little tiny niggling bugs which were never going to get fixed could easily be tackled by an entry-level VB programmer – I wanted so much to be able to go in there and fix little things like that. I got some satisfaction by authoring a QA intranet which we’d use to track test procedure status, assign procedures to staff, etc. |
| Fri 02 Apr | Dormammu | The QA guy in our software group is often found asleep at the keyboard. He hardly ever catches any bugs, but the project manager keeps him at it, so he can say we test before release. |
| Fri 02 Apr | Fred | >> I'm interested, but would really prefer to move on to software development at some point in my career.
That's what most QA people want, ie. move on to development since QA is so tedious, and development is more highly considered and rewarded.
Except they're paying you to do QA, not development, and management will not pay you to develop. Moral of the story: If you want to be a developer, don't ever get into QA. |
| Fri 02 Apr | Jimmy Jo-Jo | Thanks everyone for the speedy feedback! Still interested in hearing from others, of course.
'Actually, many CS grads start out in that department, and work their way into coding. I think you should read an article of Joel's about being a worthless peon.'
Capn - I've heard that a lot, but the guy doing the hiring actually admitted that most people they hire into QA stay there. I honestly had a hard time seeing how running 1,000 automated tests will help me along as a developer.
Everyone else, you've pretty much summed up my misgivings about going into QA. Perhaps I'll just move on. |
| Fri 02 Apr | Dan | No, QA and test people do not go into development, especially in the large software houses. It's a separate role and career path.
As others have said, if you really want to be a developer, and you're good, hold out for a development job.
Next time you go for a job, you will be up against guys with development backgrounds. If you've been working in QA for two years, you won't even be considered. |
| Fri 02 Apr | anon | Check out the blog from a Microsoft Software Test Engineer at
http://blogs.msdn.com/chappell/ |
| Sat 03 Apr | lumberjack | Interesting STE blog.
Thanks for the link Anon |
| Sat 03 Apr | Floridian | FWIW, I started out as a QA enginner and moved into development when my company needed coders. Worked out fine with me.
YMMV. Good luck. |
| Sat 03 Apr | the artist formerly known as prince | First of all, QA's are NOT junior programmers! When done the way its supposed to be QA is its own discipline that requires better people skills, and a higher breadth (not depth) of technical knowledge. The management possibilites are also better (IMHO)
My first job was a developer and I have since moved to QA,
What qa means varies widely. In some place it means going through screens of web applications and verifying buttons work. In other places it means more challenging coding work than that of the developers themselves.
So first peice of advice make sure you are the right kind of QA. You want to hear words like White Box, Test Tools design, Configuration management and automation, Database, API testing, Automated testing NOT test plan verification, manual, black box (even though this term is meaningless now), GUI testing etc, also make sure the words you listen to are coming from your boss not a recruiter
For instance I've written application's that test other web apps (not via ui but on the http level). Applications that test the response times of data engines. Applications that generate that generate and chache huge amounts of data etc ... So it is not all mind numbing click button check status bar results
Second peice of advice, Expect breadth not depth. As a high end QA you will work without the same safety nets programmers do. You will be expected to complete projects quicker, with no one to test your code in a wider variety of languages, environments than programmers. Typically there is one technical QA and one 'clicker type QA for every 2-10 programmers) which invariably means you will be doing code based testing of some sort for the work of more than one programmer and in addition if you have one or more 'really junior clicker' QA working with you, you may have to set up environments, and run scripts for them.
So if a developer is a purist and perfectionist, you are a meatball surgeon, cobbling together code may only be run twice a year. What you write will never be pretty, but it must be effective.
Third piece of advice, Avoid performance testing like the plague. Since what you do is much more time sensitive than programming (managers wan't to ship the minute something is code complete). It will be a 24hr a day job, as you boss will expect you to restart 24+ hour tests in the middle of the night so as not to waste time. 2) NO ONE WILL EVER BELIEVE YOUR RESULTS! Whether you use a commercial tool or a hand rolled one, the validity of your tests will never ever be taken seriously!!! On the other hand, the minute performance sucks, you will be blamed, it is a hard thankless job! |
| Sat 03 Apr | Christopher Wells | > validity of your tests will never ever be taken seriously
Except that performance testing is sometimes part of regression-testing: if the new release has worse performance figures than the previous release, the results may be taken seriously. |
| Sat 03 Apr | Floridian | The artist,
just out of curiousity, when was the test code more complicated than the code you tested? |
| Sun 04 Apr | the artist formerly known as prince | I can't find where I put that please quote.
But just to give one example, a Visual Test or Silk (with proper recovery,automated reports, external script based verfication, and run from a test harness) can be more complicated than the DB Form it is trying to test (in terms of points of potential failure, and vraity of code if not actual length).
Also, look at HTTP Unit, it is essentially an implementation of a http protocol from the inside out!
A Hand rolled performance testing app can be 10,000 LOC easy, before any tests are actually implemented, and excluding any libraries it uses. |
| Sun 04 Apr | the artist formerly known as prince | > validity of your tests will never ever be taken seriously
Except that performance testing is sometimes part of regression-testing: if the new release has worse performance figures than the previous release, the results may be taken seriously.
Even then they will find ways, but that is another mistake I made, when going into a new job to test performance, make sure you don't change whatever thye use, even if its only apache bench |
| Sun 04 Apr | Dan | OK. Sounds like artist is developing software for testing, and pretty good software too, so that counts as development. Artist makes good points. |
| Sun 04 Apr | Danil | Artist has covered most of my points - so I'll keep it brief.
One item I notice missing from the magic list: source control. Make sure employer uses it (first point) and that they will give you at least read access (second point).
In the category of performance testing, I never had difficulty persuading anyone of the validity of my results. Disclaimer: I was actually a developer at the time. |
| Sun 04 Apr | the artist formerly known as prince | Actually good point Danil,
If you ask dev manager about cvs access and he says 'don't you worry youre pretty little head about the big bad cvs' you are the wrong kind of QA! |
| Sun 04 Apr | the artist formerly known as prince | Actaully Dan,
I had developed internal software for testing, and it was a spectacular flop! (because of the validity issues, as well as some design issues) |
| Sun 04 Apr | the artist formerly known as prince | Although come to think about it, I have had successfull performance test suites too, it seems like knowing your audience ahead of time is pretty crucial |
|
| Defeating piracy with encryption? | Fri 02 Apr | Alex.ro |
| Ive been thinking – piracy means being able to copy information from one computer to another.
What if information – software, pictures, music, etc. – was encrypted for one and only one particular computer?
You log on to fogcreek.com and order a copy of Citydesk. Your computer sends out its public key, the fogcreek server encrypts the binary and sends it over. The executable runs fine on your machine, on any other its garbage.
Now the interesting part – information is always encrypted in memory, at all times. There is no buffer where its decrypted and run from. Decryption is on-the-fly, inside the CPU, where the private key is baked into the silicon.
In the same way, when the CPU writes to memory, it re-encrypts the stuff.
Thoughts? |
| Fri 02 Apr | Patrik | Disclaimer: I know nothing (at least not on this board) about cryptography.
>Decryption is on-the-fly, inside the CPU, where the private >key is baked into the silicon.
Having an encryption algorithm that is done on the fly within the CPU would substantially slow down the speed at which a given CPU is running the software. This would lead to all sorts of backwards compatiblity issues.
Also, the en- and decryption complexity vs. execution speed of programs would in my oppinion severly limit the key length that would be usable.
Short keys is crackable(?) by brute force, and if one machine specific key was compromized, it would probably be reusable by BIOS patches or what have you. |
| Fri 02 Apr | MikeMcNertney | I think this sort of thing is essentially what Intel's Palladium was supposed to do. Hardware-assissted security and copy protection. So far the idea hasn't gone over so well with the public, but we may see something like it in the future. Doing this in hardware is basically the only way to make it so that it couldn't be easily broken |
| Fri 02 Apr | Mark Bessey | There are systems that work this way in the embedded systems arena, though they mostly use symmetric encryption, as far as I know. The purpose of those systems is to make reverse-engineering the code/data in the system more difficult.
You probably don't need to go to the trouble of encrypting memory to discourage piracy. All you need to do is have the OS vendor only allow 'approved' software to run. Eliminating piracy is one of the driving forces behind Microsoft's 'Trusted Computing', in its various incarnations.
-Mark |
| Fri 02 Apr | Full name: | Implementation issues aside (for instance, how would printer driver installation work over a network?)
Why would anyone buy such a severely broken product? They would sooner buy an unencumbered, albeit slowe,r CPU from China and install whatver they see fit on it.
The biggest problem the U.S. faces with trying to limit the usability of PCs is that it will limit itself out of competitiveness. |
| Fri 02 Apr | Kyralessa | How would you upgrade your CPU without breaking all your software? |
| Sat 03 Apr | Paulo Caetano | 'I've been thinking – piracy means being able to copy information from one computer to another.'
Them you should go back and think some more.
Piracy means being able to copy information from one medium to another, *without having the right to do so*.
Just a minor distinction, you see? Don't worry. The content-producing industry (music, movies, books, software, etc) overlooks that fact, too. As long as their rights are protected... |
| Sat 03 Apr | Wants to be an ISV | And when you buy software from the store, how's it going to know what your public key would be? |
| Sat 03 Apr | BC | What you need is a secure coprocessor:
http://www.bennetyee.org/ucsd-pages/coproc.html
It's all explained in Bennet Yee's Ph.D. thesis:
http://www.bennetyee.org/ucsd-pages/pub/th.psfonts.pdf |
| Sat 03 Apr | Brad Wilson | I would refuse to buy something that only works on a single PC. I honor copyright for software like I honor copyright for a book. I have a desktop and a laptop, and a single copy of Office. As long as I don't use them at the same time, I'm not violating the spirit of the law. (Obviously, anything I need to run on multiple machines at the same time, I buy multiple copies of; for instance, the OS.)
Any other scheme can kiss my ass. :-p |
| Sat 03 Apr | Jonno | Lets see now. After I download and install this app, somewhere on my computer I will have a) an encrypted file, and b) the key needed to decrypt that file.
Can you explain again why you think that file is protected from me? |
| Sat 03 Apr | Dan Maas | The private key necessary to decrypt the file would be stored in a tamper-resistant part of your computer hardware, like those isolation boxes IBM makes for ATM machines.
One difficulty of this approach is that software/content producers would need extra infrastructure to encrypt their products uniquely for each buyer. Also they'd have to check your key against a 'master list' of public keys from the hardware manufacturer, so that you couldn't just supply any old key you made up (whose private key you could use to decrypt things yourself). There is a human vulnerability in that a sufficiently well-off pirate could just bribe someone with access to the master list to add a bogus key, thereby allowing the pirate to decrypt whatever he wants. Also I think it's likely that the US government would want a back door, like for eavesdropping on encrypted email or checking for child porn, which would be another big problem in the encryption scheme. |
| Sun 04 Apr | ... | You cannot mass produce products and then try to make them unique in some way. The only way your security scheme would work is if each PC had a unique CPU with a unique built-in ID, with encryption/decryption hardware and a software package which would somehow be made to work only with that CPU's ID.
When you start putting keys and codes in files, sending them over the internet etc, you are comprimising your security system. If you spend sometime learning how security is comprimised these days, you will realize it is not as easy as you think to stop it. Don't you think billion-dollar companies would do something about it if they could?
By the way, I am sure corporations would love to have Paladium and similar technologies to keep tabs on consumers' actions, but as long as the spirit of freedom is alive, people will find ways to bypass it. I personally refuse to buy a PC which will tell me what I can and can't do. That's just ridiculuous. Maybe the genetically engineered foods are preparing us for higher levels of obedience for such future technologies.. ;) |
| Sun 04 Apr | Martin Beckett | Remember also that home piracy is good for big software companies.
If every home user had to pay 400£/$/e for Office there would be a whole market full of $30 word processors but since everybody can 'borrow' a copy from work it ensures no one else can enter the market. MS objects to large companies not signing licence deals but home piracy is what guarantees MS+Office monopoly.
As MS said about china - 'if they are going to pirate software make sure it's our software' |
| Sun 04 Apr | Gwyn | >> As long as I don't use them at the same time, I'm not violating the spirit of the law....
...Any other scheme can kiss my ass. :-p
Well said Brad. I totally agree. |
|
| Easiest software to have linux+Windows XP | Fri 02 Apr | LInux help |
| I currently have windows XP on my dell laptop. I dont want to fiddle around with boot.ini and stuff like that. But i want to set up Suse linux box on the same computer. I dont have any partitions on my dell laptop.
My ideal would be a program runnong from windows XP that asks How much space you want for linux. I say 5 GB and boom. Thats it. Next time, i get a choice to boot with either XP or Windows.
Dumber, the better. Dumberer, the even better. |
| Fri 02 Apr | Leauki (Andrew J. Brehm) | Doesn't the SuSE Linux installer do exactly that? |
| Fri 02 Apr | LInux help | Does it?. Which version and where can i download it?.purchase it?
I want to install
SUSE LINUX Server v8 (Standard & Enterprise) /
SUSE LINUX Desktop v1 |
| Fri 02 Apr | Bored Bystander | Microsoft Virtual PC will run almost anything in a virtual machine, as a guest OS under Windows. I got Red Hat installed on it. Although, there is a list of OSs that work under Virtual PC floating around and Suse 8.0 may be one of the very few that do not run under it.
Virtual PC runs as just another Windows application. This would avoid all partitioning and dual boot issues completely. |
| Sat 03 Apr | Leauki (Andrew J. Brehm) | (I run SuSE Linux 8.2 on Virtual PC 6.1 on my Mac and it works.)
I don't know about the SuSE Linux desktop and server lines. The normal SuSE Linux Professional, however, does come with an installer that asks the user whether he wants to take space from a Windows partition and use it for Linux and also installs a boot selector (graphical).
But I don't have much experience with that mode any more since I only run Linux on dedicated machines or Virtual PC.
The Virtual PC solution has its advantages though. |
| Sat 03 Apr | Bill Rushmore | If it is easy enough just get another hard drive. One with Linux and the other Windows. I had a Thinkpad that had one screw and the drive would pop in and out.
VMWare maybe an option for you. I don't have experience with that since I prefer the dedicated machine also. |
| Sat 03 Apr | Stephen Jones | Use the Suse installer. If it was a desktop you would be better off with another hard drive but with a laptop that's not on. |
| Sat 03 Apr | Wayne | What are the specs of the machine that you want to do this on?
I have a P3/1Ghz/512MB vaio laptop running Win XP Pro as the main OS. I run Fedora Core 1 under VMWare 4 and when I put it in full screen, you don't even realize that Win XP is running.
I can't speak for Virtual PC, but I'm pretty sure they use the same principle of sharing the CPU, so things should run at full speed. |
| Sat 03 Apr | Brad Wilson | You should realistically expect CPU performance to be near 100%, and disk performance to be between 50-100%, depending on where the VMware/VPC images reside with comparison to the system and swap files. |
| Sun 04 Apr | pds | Having repeatedly attempted dual-booting Windows and Linux, I offer my first commandment:
'Thou shalt not dual-boot Windows and Linux.'
With this in mind, here are a few 'gotchas' that you should know if you're going to do this anyway:
-Put linux on a separate physical hard drive. You eliminate any number of scary possibilities (i.e. entire drive data loss) when you do this. PS--scary data loss still possible, but much less likely, barring PEBKAC errors.
-VMWare sounds nice; wish I had it. What is it, $299?
-Consider a second machine. You can even by a KVM switch for $30-50 and have the two machines sitting side by side. This also engenders more experimentation, i.e. your main machine isn't tied up recompiling the kernel.
-Linux can only READ NTFS partitions, not WRITE[1]. So either make a FAT32 partition and 'export' whatever files you need to that partition, ... or you can run some crazy Windows-EXT2FS programs to grab the data directly from the Linux partition.
-Make off-computer backups of your email, files, etc, just in case.
As for my personal experiences:
-Multitudinous installs of RedHat 7.3/8.0/9. Multitudinous reinstalls of Win98SE when I hosed the hard drive.
-A single attempted install of Fedora Core 2test1, which installed fine, but disallowed XP from successfully booting. Why? I don't know why.
-About four different 'LiveCD' CD's sitting around. No mess, much easier on the digestion.
-Almost nothing actually accomplished in linux, besides one run through the 'Linux From Scratch' book. Which, I guess, accomplished nothing besides reaffirming my prejudices.
[1] - ok, so it's highly recommended that you not write files to an NTFS partition with the native Linux filesystem driver. There's supposed to be some wrapper around the Windows NTFS-related DLL that will work, but I haven't seen it yet. |
|
| Java—what's the point? | Fri 02 Apr | Mark, the Confused. |
| Can someone explain the point of Java to me?
Im honestly not trying to troll.
What does it do that Perl, Python, or Ruby dont? Its just as slow as them, and theyre just as portable as it is, plus, theyre open source.
Where in the spectrum of C, .NET, and open source scripting languages like Perl, Python, and Ruby does Java fall? What need does it satisfy? |
| Fri 02 Apr | no name | Java came before .NET, so why don't you back that a$$ up and ask a more informed question? |
| Fri 02 Apr | Eric Debois | Under certian conditions Java is way faster than regular interpreted languages. For some operations its not far from nativly compiled languages. |
| Fri 02 Apr | AnonAnonAnon | It supports true platform independence, provided you do avoid platform specific extensions and with just in time compiling, it is faster.
Then it gave you all this, when most Client/Server programmers were using C++. Making it easy to transition from C++ to JAVA, while eliminating some of the less liked aspects of C++. |
| Fri 02 Apr | pdq | It's the worlds best programming languge for programming TV set top boxes. |
| Fri 02 Apr | Craig | I've asked myself this same question for a number of years.
Let's just face it, Java is crap.
If I was going to write UI, I would use VB or Python.
If I was going to write a server application I would use C++.
If I was a misguded manager/company owner who believed the amazing amount of hype surrounding Java, I would use Java for all of them. I dont see how having to write something.somethingelse.blah.wrapperobj('Hello World') is productive.
But I guess once it's written it can load like a sack of potatoes falling down the stairs on any platform.
Before you get the knives out, remeber this is my only opinion and it makes no difference to your highly payed Java gig.
The current Java wave is just like the ASP/ADO/Web guru wave of a couple of years ago, where are all those guys now? |
| Fri 02 Apr | Not nearly as confused as Mark | What does Perl, Python, or Ruby do that Java doesn't? |
| Fri 02 Apr | K | Visual Basic programmers had long got an inferiority complex. They somehow felt that they were kind of ape like. This is because Microsoft did not trust them with complex system stuff. Java meant that some of those apes could actually say 'we evolved'. This is because they can type great stuff like
import blah blah blah and also type semicolons (';')
Never underestimate the power of making men feel like men. Thats the need java fulfills. |
| Fri 02 Apr | genius | http://www.manageability.org/manageabilityWiki/WhyJavaIsBetterThanDotNet |
| Fri 02 Apr | Name withheld out of cowardice | You don't see why it is more productive because you are a dumb-ass. Do you think all the Java programmers are deluding themselves?
'My language is better than yours', 'There is no point to your language', 'I would choose these tools for this project'. These arguments are stupid and boring. Almost all software produced, given away, bought or sold, sucks ass in a major way and I see no evidence that any of the popular languages or platforms handicap the process towards either more or less suckiness. |
| Fri 02 Apr | Make a religion out of anything! | Elements forming a good religious meme:
http://www.abarnett.demon.co.uk/atheism/meme.html |
| Fri 02 Apr | Almost Anonymous | 'Under certian conditions Java is way faster than regular interpreted languages. For some operations its not far from nativly compiled languages.'
It might be faster than interpreted languages; it might even be very close to compiled languages BUT it still uses an insane amount of memory. |
| Fri 02 Apr | son of parnas | Why do you care? |
| Fri 02 Apr | Anon-y-mous Cow-ard | So then, Java is a like a Chevy Suburban--big, powerful and bloated, uses a lot of gas, but can haul ass if it needs to?
And all the others are like Chevy Metros then? |
| Fri 02 Apr | Vince | Its ok mark, Once you get more experience in the real world you'll see why there are languages like java and C#.
I loved perl and vb before I did java, I thought they were great. But, you don't see massive systems written in perl. Theres a reason why the majority of big websites are written in java. The small performance hit it takes over C++ is negated by the fact that for most projects, development time in java is significantly faster. If you can, of course its better to write something in C++. But for most large website and server side application, performance isn't as important as development time, readability, and modularity. |
| Fri 02 Apr | Greg Hurlman | Craig-
We're working on enterprise asp.net apps. :) |
| Fri 02 Apr | MR | Java certainly has an object fetish -- why can't I do something simple like:
someString = 'You are ' + years + ' old!';
(or like C++: cout << 'You are ' << years << ' old!';)
instead I have to do:
// something like this:
system.out( 'You are ' + years.ToString( ) + ' old!' );
Just do that stupid thing automagically. |
| Fri 02 Apr | Blah | Uh, MR, you can do that in java. |
| Fri 02 Apr | MR | OH! I must be thinking of C#?! |
| Fri 02 Apr | Crimson | It's the Libraries man, the *LIBRARIES*! ;) |
| Fri 02 Apr | Bill Rushmore | Put your question in the perspective of 1995 when it was released. The hype of "Write Once, Run Anywhere" hooked alot of people. Pluis it was/is much easier language to learn and become proficent than C/C++. The whole applet craze got it going. Back then no one cared if it was open source or not. |
| Fri 02 Apr | Ken Klose | Strong typing! The compiler catches a whole class of bugs that don't show up until runtime in most of those other languages. |
| Fri 02 Apr | A Software Build Guy | vince,
I have been bouncing around the net for a while. Most small site I see are PHP. There are a number of Perl based sites such as Slashdot (Slash Engine) and PerlMonks (Everything engine). A number of Corprate sites are hard figure. Some are java (.jsp) and some are aspx (dotnet) and some like Joel here uses asp original, but most are hard to tell they just generate html. I have not seen the numbers lately but I have not seen a huge upswing in servlet based sites. In other words, where are the numbers? |
| Fri 02 Apr | Craig | Greg -
Touche! - I should of guessed :) |
| Fri 02 Apr | Giovanni Corriga | Ken, Python and Ruby (I don't know Perl, so I can't say) _are_ strongly typed languages. What you are referring to is the dynamic/static typing thingie. |
| Fri 02 Apr | Tayssir John Gabbour | - large API
- security model which everyone disables but I'm sure someone uses
- semicolons 'n braces
- easier install
- good marketing
- a lot of complementary tools
- loads of docs
- co-opts Python through Jython
My reading of history is that Java was a primary driver of Python, since it surged in a number of new programmers who weren't obsessed with the S&M of C++, or the brevity of C.
Java is in the weird position of being both under- and overrated.
People who like static typing often cringe when Java is brought out as an example, because it does no type inferencing.
http://www.jwz.org/doc/java.html |
| Fri 02 Apr | Ken Klose | Actually python is a great example of what I'm talking about. Create a simple multiplication function:
def multiply(a, b):
return a * b
Call multiply(4,5) it returns 20, great. Call multiply('4', 5) and it returns '44444', probably not what you were expecting, and possibly the source of an insidious bug. Call multiply(4, '5') and your program bombs at an exception when this code gets executed. Java would have complained to you about this problem during compile, long before you ran it.
In java you would had to specify types for the arguments and return values of the function. The java compiler would then enforce those types, ala strong typing. |
| Fri 02 Apr | -rln | I've been working at top 'Fortune 20' company for a number of years now and Java is one of the few languages/development platforms that natively address working with dozens if not hundreds of other developers around the world.
For every Java application, you could build the same with another language but considering time, money and Java is often the better choice.
What happens when a company has to make MILLION OR BILLION dollar choices about software design and development? I for one am glad I do not have to make that choice, but I can understand why Java is often considered. Just pick the right language for the right job and it does not have to be Java. But the more customers you have to more the choice is not about speed only, scale, manageability and scalability are prime factors.
P.S. Java Servlets are in more places than you think. In a correctly built environment that is not using J2EE, Servlets are often hidden from the client view, letting JSPs and HTML pages correctly handle the presentation. |
| Fri 02 Apr | Chris Tavares | Ken,
Your definition of strong/weak typing is incorrect. There are actually two axes to measure the 'strength' of a type system, not one.
The first is 'strong vs. weak.' In a strongly typed system, any attempt to operate on a value contrary to it's type will cause an error. A weakly typed system will, on the other hand, happily assume that any value can do anything, and will proceed to do whatever it's told. Python, Eiffel, and Smalltalk are all examples of strongly-typed languages. Tcl, older basics, Perl, and C/C++ when using void *'s are examples of weakly typed language.
The other axis is the 'static/dynamic' axis. The strong/weak axis says if an error will be caused. The static/dynamic axis talks about *when* that error will be reported. Static languages report errors at compile time. Dynamic languages report them at run time. Python is a strongly typed, dynamic language. Java is a strongly-typed, mostly static language (I say mostly static because you have to do lots of casting to deal with the Java collection libraries, so those errors aren't caught until runtime). C is actually a fairly weakly typed, completely static language, as the language does effectly no run-time checking at all.
As for your specific Python example, the '*' operator is defined on strings (all sequences, actually) so it's not a type error. Wether the choice of '*' as the sequence repetition operator was a good idea, that's a different discussion. |
| Fri 02 Apr | Capn' Kirk | When all is said and done, it's just assembler. So what's the point of a flame war.
Just dump these stupid high-level languages, and let's go back to PL1. |
| Fri 02 Apr | MikeMcNertney | Chris you are correct about strong vs weak and static vs dynamic. However the point still holds that for large systems, static typing probably helps with correctness even though it is less flexable than dynamic typing. |
| Fri 02 Apr | Ali | I assume that for most people
'Strong Typing'
means
'The static type-checker catches your errors.'
and
'Weak Typing'
means
'You can't statically check your program because your
language is pants. Welcome to RunTimeErrorsBurg.'
Arguing that Lua or LISP are - according to academia -
'Strongly Typed' misses the point entirely. |
| Fri 02 Apr | Chris Tavares | It's not an academic argument; it's a very practical one about the productivity of your programming language. Dynamic languages are more productive than statically typed ones.
The big advantage of statically typed languages are supposedly the error checking at compile time. However, to get that error checking, you pay by putting a lot of extra stuff in your code. Not only do you need to add all the type declarations, but you also now need to spend a lot more time designing type hierarchies and figuring out how to work AROUND the type system to do what you need.
And in the end, what happens? You still need to do thorough unit testing. If you've got to do testing anyway, and you can get done faster without the statically typed languages, why bother with them? They don't really buy you anything but a false sense of security, and they cost a lot in the process.
Now, if you were arguing that statically typed languages can be compiled more efficiently by more naive compilers, that I'd buy. |
| Fri 02 Apr | Ali | 'It's not an academic argument; it's a very practical one about the productivity of your programming language. Dynamic languages are more productive than statically typed ones. ... Now, if you were arguing that statically typed languages can be compiled more efficiently by more naive compilers, that I'd buy.'
So you are saying that ML and Algol60 are so much less
productive than B and LISP? No, ML and LISP are more
productive than B and Algol. The difference in power of
representation between the high level languages vs the
low level ones massively outclasses the gain you allege
you'd get from going from dynamic to static. If you allege
that going from LISP to ML makes your programming
slow to a crawl, I don't believe you. Since the basic types
are words, numbers, logic and functions, and they perform
completely different tasks, I just can't see why you would
need to confuse them in a sane design. If I had a type
clash, that would seem to me to be trivially erroneous,
and if I needed to override the type system, that would
seem to me the symptom of a buggy design. |
| Fri 02 Apr | John | You know the best answer I've heard to that question so far has to have been 'It helps large organizations write spaghetti code.'
I have to admit I concur with that point in so many ways ... there are large number of freely available libraries, implementations can be easily hidden to confuse remote programmers, a ridiculous backwards compatibility story (1.0 methods still in the API ?). I think you would be hard pressed to conceive of a language from scratch that would facilitate the sprawl that Java does.
disclaimer: I write spaghetti code for large organizations .... |
| Sat 03 Apr | fool for python | Dynamic vs Static. Productivity vs execution speed. Compile time errors vs run time errors. Read what Bruce Eckel has to say:
http://mindview.net/WebLog/log-0052
http://mindview.net/WebLog/log-0053 |
| Sat 03 Apr | Julian | For me, Java was a big step up from C because of garbage collection and good built-in libraries.
If I was starting a project from scratch today, I'm not sure whether I'd pick Java or Python. Python has a better syntax, and it's definitely better for small projects. With a bare-bones editor, programming Python would make sense.
However, with a good IDE like Eclipse, I can be very productive working on long-term projects in Java. Automatic refactoring and real-time error detection are fantastic features made possible by static typing.
I don't know whether my effectiveness with improve or diminish with a dynamically typed language. |
| Sat 03 Apr | Duh! | What does Java offer?
Hype! Hype! Hype!
During the Internet boom, Sun Microsystems managed to generate a lot of hype around Java, because it could run in the browser. |
| Sat 03 Apr | T. Norman | Most organizations, especially large non-software companies, generally aren't very good at unit testing. They often don't do any formal or automated unit testing at all. For the most part, a class isn't really tested until it is compiled into the testing environment and the users start banging away at it.
Of course, that often means most classes will have some methods that never get executed at all before production, because the users and the data haven't met the specific set of conditions that would cause those methods to get executed. And then when it is executed for the first time ever in production ...........!!!!!!!!!???????
The point of Java essentially boils down to this:
- Most programmers are minimally competent or incompetent.
- Most IT managers are minimally competent or incompetent.
- Programmer incompetence means we have to disallow certain features that would be powerful for good programmers but destructive with bad programmers, like multiple inheritance.
- IT manager incompetence means that they can't be trusted to institute adequate testing, review, and documentation procedures to ensure that all programmers how to interact with each other's work and enforce the quality of their own work. The larger the organization, the worse those problems become. Therefore, we must build much of this testing and communication into the language via features like compile-time type checking and automatic garbage collection.
And to a large extent, I agree with those points. Most programmers are buffoons, as well as managers. As much as I may get occasionally frustrated by the constraints or extra verbosity that Java sometimes involves, I do appreciate the ways in which in it helps to protect me from the incompetence of other programmers. Other features like Eiffel's design by contract would make it even more useful in that regard; I hope they eventually add it to Java.
I would probably prefer to work in another language if I only worked with code that was written by a small group of very competent programmers, but I work for a Fortune 500 non-tech company so that ain't gonna happen anytime soon. |
| Sat 03 Apr | Egor | 'majority of big sites written in Java...'
What a sorry piece of marketing crap. |
| Sat 03 Apr | Gerard | Chris Tavares:
'It's not an academic argument; it's a very practical one about the productivity of your programming language. Dynamic languages are more productive than statically typed ones.'
I've tried working in Smalltalk and based on my limited experience I would agree - build times are obviously going to be shorter (because you don't have those interface interdependencies causing rebuilds - you just recompile at the method level). Refactoring is a lot easier, because you can move things around a lot more while still having an executable application (OK, you're working in the image, but I think you know what I mean).
'...Not only do you need to add all the type declarations, but you also now need to spend a lot more time designing type hierarchies and figuring out how to work AROUND the type system to do what you need.'
Indeed! :-)
'And in the end, what happens? You still need to do thorough unit testing. If you've got to do testing anyway, and you can get done faster without the statically typed languages, why bother with them?'
OK, this all seems entirely reasonable, but what are your experiences regarding big systems built with dynamic languages? I am thinking of something the size of an ADA or C++ compiler, a shrinkwrapped CAD application, a webserver or a distributed banking system.
Don't get me wrong - I'm enthusiastic about the role of extensive unit testing in software development. I have seen and continue to see that this approach reaps benefits.
The thing is, while all the systems I've worked on using this approach have been large scale, they've mostly been written in C++ - which is (with caveats) strongly typed and statically typechecked.
I have no idea whether things might have worked out differently if we had done things with just as much unit testing but without static typechecking.
A penny for your thoughts: what are your (or anybody else's) experiences with this?
I'm interested in how things work out on the other side of the typechecking fence with big systems.
PS: language zealots - can we all take it as read that C++ does have deliberate holes in its type system and that yes, templates are not as good as parametric polymorphism in all those 'nice' languages out there. No, the run-time semantics aren't closed wrt the language definition either, and metaprogramming is just an accidental byproduct of the language definition.
You could say C++ is a Swiss Army knife language, one that's been left rusting in a dank puddle for a long time - if you don't mind getting your hands dirty, you can get a lot done when you use it.
I don't mind getting my hands a bit dirty for the right money. ;-)
Regards, |
| Sat 03 Apr | Jose Juan Montes |
I just want to support what 'Vince' has said up there.
I think is the most correct and neutral opinion said. |
| Sat 03 Apr | RB | Here's the crap that Vince is spouting: 'But for most large website and server side application, performance isn't as important as development time, readability, and modularity. '
Our number one complaint from users about our large web based app is that it's TOO SLOW. We had to shelve plans to migrate to java because tests showed that the parts we had migrated to java were much slower than the old code.
When reading discussions about languages, the java people often claim that performance doesn't matter for web or server based apps. All I can say is - tell it to our users - they think it matters and I value their opinion more than yours. |
| Sat 03 Apr | RB | I must add a qualifier - you can write java code that performs well. But most java coders seem to roll out the 'performance doesn't matter' and proceed to write slow code. That's what I find so annoying and frustrating.
(And I didn't write the slow java code to which I was referring) |
| Sat 03 Apr | Egor | BTW, would anyone care to explain (Vince maybe?) what exactly makes Java score well on development time, readability, and modularity, as far as web development is concerned?
It may do well against C or C++ on some of these points, but how is it more readable, faster to develop, and more 'modular' than Perl/PHP/Pyton? My impressions were quite the opposite. |
| Sat 03 Apr | Tony Chang | 'Almost all software produced, given away, bought or sold, sucks ass in a major way and I see no evidence that any of the popular languages or platforms handicap the process towards either more or less suckiness. ' -- name withheld
Going in the quote file that is. |
| Sat 03 Apr | Tony Chang | 'Java Servlets are in more places than you think. ... Servlets are often hidden from the client'
Ah yes, the old standby of arguing from lack of evidence. Nice example. If correctly done, it's invisible. Thus the fact that you can't find any means they are ubiquitous. |
| Sat 03 Apr | From Left Field | 95% of the Java detractors are most likely small timers who never worked for true global company with millions of users and offices in hundreds of countries. When you people join the big leagues, you will develop a more moderate view about Java, balancing the good with the bad. --nuff said! |
| Sat 03 Apr | son of parnas | >We had to shelve plans to migrate to java because
> tests showed that the parts we had migrated to
> java were much slower than the old code.
When you profiled your application where was the
time being spent? |
| Sat 03 Apr | jm | > 95% of the Java detractors are most likely small timers who never worked for true global company with millions of users and offices in hundreds of countries...
Then again, maybe we work for the most successful software company in the world, with more users than anyone else.
Java was a good idea but it suffered from being run by Unix heads, and then becoming popular among the 'enterprise' crowd and the consulting firms.
Java is a marvelous revenue generator for outsourcers because you need so many developers for anything, and the program ends up all over the place with dependencies everywhere, so no-one can easily take it over.
Java could have been great. Now it will linger in the enterprise market about five years until .net takes over. |
| Sat 03 Apr | The Contrarian | 'Java could have been great. Now it will linger in the enterprise market about five years until .net takes over. '
Please. It's more likely that Java will survive in some form or another as an alternative to Microsoft. Nature abhors a vacuum, just as Microsoft abhors any perception that they lack competition. So it wouldn't surprise me if Microsoft ends up propping Java in some manner just as they did Apple. |
| Sun 04 Apr | RB | 'When you profiled your application where was the
time being spent?'
Everywhere was slow - it was obvious that performance was not built into the design. The only solution was to throw it away and redesign. We could have refactored everything - but that's the same thing as a rewrite.
Now when we interview java coders who claim that performance doesn't matter for web apps - we reject them because they're not living in the real world. They're living in Java land where people don't care about having to wait for code to execute because every second of waiting can be spent blissfully thinking about how wonderful java is. |
| Sun 04 Apr | Craig | I used to work for a big Ecom company, you know the kind, pre dot com bust, full of ASP hacks and Java fanatics.
I'll never forget going into the server room one day, the guy I was with pointed at a small cluster of computers and said 'These machines handle our web serving', then he turned and pointed at a huge row of rack mounts. 'These run our Java apps'.
Raw speed counts, Java is by no means slow compaired to say Python. But well written C++ is much faster.
When you are serving perhaps 1000's of clients, little things suddenly take on a new magnitude.
The good thing about Java is the libraries, this is what leads to the 'productivity gains' as far as I can tell. The language itself... well it's debatable. The shame is that Java was a great idea, take C++ make it so you can't blow off your leg and supply utilitles which are platform agnostic. But the execution of the idea was crap.
Some good Java applications are starting to appear. Take the Eclipse project for example, great idea, but all but unusable on the Linux platform because it's so damm slow.
Good ideas do not need this level of hype and justification to catch on (C, HTML, SQL, Python) people just start using them because they are good. |
| Sun 04 Apr | Justin Johnson | 'Good ideas do not need this level of hype and justification to c |