last updated:26 Apr 2004 15:23 UK time
|
 |
|
(Comments added for week ending Sun 25 Apr 2004) | View Other Weeks
|
|
| Web based ERP + CRM solution? | Sun 25 Apr | TJ Haeser |
| Anyone with experience with those? What are some good open source projects?
Ive tried ARIA(S), Open Accounting, Web-Erp, OSSuite, SQL-Ledger, but I was looking for a solution which integrates ERP and CRM better. |
| Sun 25 Apr | Philo | 'Open source' or 'Free'?
Philo |
| Sun 25 Apr | ITDirector | http://www.compiere.org/ |
|
| Unit Testing Embedded Systems | Sun 25 Apr | Ham Fisted |
| Im trying to push for a more modern development process in our company. Theres a group here doing embedded firmware that I feel could use some help in this area.
I seee a lot of good examples of how unit testing helps in development, and Ive started using it myself, with good results. However, Ive been looking for information or hints as to how to unit test embedded code, and Im not finding much.
How do you apply unit testing when the code you are testing is so difficult to communicate with? |
| Sun 25 Apr | Rick | Emulators? |
| Sun 25 Apr | son of parnas | Some things that have helped:
1. be able to warm boot so the tests run faster. This assumes a flat address space. If not, never mind.
2. have an osencap layer so you can develop and run code on unix or windows. Not helpful for drivers, but works for most everything else. Most code can be developed on the host and cross compiled to the target. It usually just works.
3. be able to run your tests from the command line.
4. use expect or something similar to drive running the tests.
5. make your boot image loadable over the network.
6. have different data sets that your tcl script can setup to
test the various setups.
7. do load testing now, not later. Make them create a test
bed that mimics your largest customer.
8. make sure your test equipment is programmable.
9. insert counters, the ability to reset them, logging, etc now.
10. you'll need ways to get CPU usage, save the exception to eeprom, look at locks, look at queue sizes, etc.
11. use design by contract
12. make sure the equipment can be access remotely over a
serial port.
13. run smoke tests on every build. You unit tests are a good start. |
|
| C++ is faster than Java in the case of DES? | Sun 25 Apr | Juri Yanase |
| I am going to write a program cracking DES.
I have to try 2^56 possible keys.
One says that C++ (actually C) is faster than Jave.
Is this true?
Juri |
| Sun 25 Apr | Emperor Norton | To answer your question, yes, C++ is almost always going to be faster than Java. Java usually gets compiled to byte code, and then when it is run, your computer has to interpret the byte codes and then run the appropriate instructions. C++ usually gets compiled directly to machine instructions, so your computer doesn't have to spend any time figuring out which instructions should be run. There are some Java compilers are there that do native compilation, but as far as I know they're still not going to be as fast as C or C++.
Secondly, I'm not sure you realize what a big undertaking something like this is. 2^56 is a pretty big number, and even if you could check 1,000,000 keys every second, it would take you over 2000 years to check them all. |
| Sun 25 Apr | Li-fan Chen | When ever I think about these challenges it reminds me of Star Trek Voyager where a space ship is stranded very far away trying to get home. The voyager is always looking for a ways to shave a few light years off their trip. Using technical improvements and cosmic short cuts. If you are going to crunch DES (or any other interesting ciphers), you may do better getting a serious math education. That's how the NSA is hedging their bets anyway (they hire many many mathematicians and friends). |
| Sun 25 Apr | Juri Yanase | Actually I know the first two (of eight) bytes of key.
So I need to try 2^42.
Also I have 20 computers ;) |
| Sun 25 Apr | Dan Maas | Java is faster.
No, C++ is faster.
No, Java is faster.
No, C++ is faster.
Write the damn code, run it, and find out! |
| Sun 25 Apr | James | Nice one Dan ! |
| Sun 25 Apr | Juri Yanase | Yes, I worte it with C++ and it is running. Already 3% of all work is done :) |
| Sun 25 Apr | David Jones | The fastest way to crack DES is using the 'bitslice technique'. Basically, on a 32-bit machine, you store 32 keys in an array of 56 machine words, one key bit per word, and 32 keys in parallel. Permutations are memory addressing, and the S-boxes are done using logical operations.
If you have a 64-bit CPU, you crack 64 keys at a time.
You can Google for this. Use hand-coded assembler and schedule instructions correctly for your processor. With care, you can max out the instruction execution rate. |
| Sun 25 Apr | HeWhoMustBeConfused | C is faster than Java in the case of EVERYTHING.
And smaller.
And (with the exception of external interfaces) more portable.
Java is a fraud on the IT industry. |
|
| Professional Courtesy | Sun 25 Apr | Steve Jones (UK) |
| Joel,
I only mentioned the g descender thing as a professional courtesy, in case you were not aware of it. I was also genuinely curious to see if I had mis-understood the situation and there was a reason why you hadnt linked it (apart from what I assumed was an oversight).
I have done the same with other websites (including the Microsoft home page), and people have done the same for me.
I must say that I appreciate these small items of useful feedback, and generally I can fix any issues straight away. Even Microsoft were happy to hear from me when there was an issue with their home page and IE4. Okay, so maybe only a small percentage of people would have been affected by that issue, but there is a right way to receive such news and a wrong way.
I feel that you acted in an unprofessional way, by first trying humour (which is fine, by the way), but then taking the time to write an article on perfectionism giving the impression that you had no time to fix this problem and that holding such perfectionist views must surely be bad.
How can the whole of the graphic working in the same way (i.e. clickable) be a perfectionist ideal ? Surely, this is common sense.
Later you spend even more time trying to justify the design by talking about clickable whitespace, etc. Also, why did so many of the posts get deleted from the site ? What did you not like about them ?
I realise that this is your site, so youre the big boss and all, but my impression was that you were trying to foster a community here, not show everyone what a big man you are, by ridiculing anyone who dares to question you.
Have you ever seen the Wizard of Oz, by the way, or The Emporors New Clothes ? I suggest that they should both be on your book of the month list.
In closing, I feel let down by your recent behaviour. This used to be an interesting site, but it seems to have been left to whither on the vine. I do still like to check out what the other interesting contributors to the forum have to say, but I must say that you have gone down in my estimation.
Regards,
Steve Jones (UK). |
| Sun 25 Apr | Philo | Look on the bright side, Steve - he spent more time on that perfectionism article than it would've taken to fix the problem.
No, wait - that didn't come out right...
Philo |
| Sun 25 Apr | Eric Debois | I totally understand why you feel the need to discuss this thing, but I suspect this thread will disapear soon too.
Or maybe not. (Whats the cost/benefit ration of deleteing this post?)
Anyway, I agree that you were treated somewhat unfairly. |
| Sun 25 Apr | Stephen Jones | Dear Steve,
The comment was obviously a joke; Joel can be accused of many things but gratuitiously insulting people is not one of them. |
| Sun 25 Apr | rick chapman | +++I feel that you acted in an unprofessional way, by first trying humour (which is fine, by the way), but then taking the time to write an article on 'perfectionism' giving the impression+++
God God! are you STILL going on about this? Even AFTER Joel apologized? This is hilarious!
First of all, if humor is fine, then it can't be unprofessional, eh?
And writing an article that expresses an opinion that differs from yours is not unprofessional; it's an opinion that differs from your own.
But clearly you have unearthed a calling I believe you have not paid proper heed to till today! Can anyone question that it is your sacred mission to now go forth and traverse the web in search of orphan descenders crying out for their proper links? Who KNOWS how many 'Gs,' 'Ys,' and yes, even 'Qs,' are crying out for your aid and assistance! Do not leave them bereft , Captain G Spot! It is time to fly to the resuce!
While you are out on your mission, don't forget to E-mail home (but not too often).
rick |
| Sun 25 Apr | Jan Derk | You probably just caught Joel before his coffee on a bad hair day.
Although most here regard Joel as the Greek god of programming who always provides correct and brilliant answers, you can spot, if you look really hard, tiny hints of weaknesses that are typically only exhibited by ordinary human beings, like grumpiness, irritation, arrogance and bad jokes.
I would rate Joel as a half god at most.
But seriously, I sure don't hope everyone starts posting with silk gloves on, afraid of disturbing some guy's or girl's fragile soul. That would be boring as hell. Sure, Joel's post was bordering to a flame, but at least it wasn't boring. If you think your are being flamed, don't start whining, flame back and tell him he's an arrogant twit. Some arguments why would really be appreciated though. We all love a good fight. Why else do we love soccer, boxing, base ball, good guys vs bad guys movies? God forbid that this place becomes an all happy equal minded community. Ever tried to have a discussion with gents that all agree? 'I think George should win American Idol'. 'I agree', 'me too', 'yes, Goerge rules'. Boring huh.
Rick Chapman's posts, of which one beautiful example is shown above, are as subtile as a blunt ax. But I like it. It's his personality and it's what keeps this community alive. Moreover, such provoking posts invites return fire, which is when I pull out a beer and a bag of potato chips. Gee, I should really get a life. |
| Sun 25 Apr | Stephen Jones | Yea, Steve, if you tnink Joel's a jerk meet the real MCcoy. If Rick's ego was a Big Mac they'd be downsizing it to avoid lawsuits. |
| Sun 25 Apr | Kyralessa | I think Joel's eventual detailed reply to that thread made it clear why he made a joke about it at first--the truth was too boring for words. |
| Sun 25 Apr | Semi-Anonymous Coward | I suppose we could always go back to talking about offshoring/outsourcing. Or perhaps we could tie offshoring into the current discussion by once again mentioning the cost savings & higher quality one would get by using a grammar foundry over in Eastern Europe or India. |
|
| Ideas for marketing support services? | Sun 25 Apr | Wouldbe entrepreneur |
| Im in the process of implementing the ideas contained in the blog entry Technical Self-Employment Is A Fat Paycheck Waiting to Be Pocketed at
http://homepage.mac.com/monickels/techjob.html
The point of this article, which Ive been pursuing for a few months, is to offer computer support services - mainly admin and repair - to small businesses. My hope is to upsell higher value services. My near term goal is to keep the lights on.
I think I need some well focused ideas for putting the word out and getting publicity. Even a little business would be incredibly helpful.
Here is where I stand right now:
Chamber of commerce meetings have been a dry hole. Ive done this consistently for about 3 months. Everyone else is in sales mode and the attendees are oversaturated with everyone elses hype.
My personal network is limited. I left the FTE world years ago and the number of people I know in development jobs has dwindled. I can see orgs like the chamber enhancing this but I also see that it will be excruciatingly slow.
I maintain an office, a separate phone line, have a web site devoted to this business.
I have about $9K in a corp. bank account (not living funds) that I can use for advertising and related things.
I am placing a 1/4 page consumer advertising magazine (due to go out around memorial day) advertising these services. It goes out to an upscale region and should get seen by some managers and business owners in addition to home users.
I am considering using a telemarketer employed by someone I know to do canvassing and lead generation in the form of a phone survey.
Ive been handing out business cards like crazy to everyone I know and telling everyone I know what I do. No bites.
Its been suggested to me that one avenue is to go for grass roots prospecting is to attend technical user groups and make myself known as a guy who can offload PC support tasks from serious developers.
Ive tried some non conventional advertising techniques, such as flyers with tearoffs posted on public bulletin boards. Ive gotten exactly one call from about 10 postings. People are tearing the cards off though.
Other ideas? I need em.
Thanks. |
| Sun 25 Apr | Tom H | I'd try to set up a relationship with retailers who are providing other goods and services to small businesses. Any computer stores around? ComputerWorld, Circuit City, Staples, Sam's Club? What you're doing now is called "cold calling", it's usually not a very good way to make sales; referrals are best. |
| Sun 25 Apr | Philo | Create a newsletter with actual content (either single sheet back and front, or single sheet trifold) - write about things like new developments in business technology, independent reviews of business software, 'How-to' articles on common business apps (Word, Excel, Quickbooks, etc). Put an attractive headline logo with your business name, a footer with 'find more tips at' your URL, 'Subscribe to this newsletter by email', etc.
Value. Make it valuable. Make it something they WANT to read. Make it clear in the newsletter that you are open and available.
Also - can you give presentations at the Chamber of Commerce meetings? Give presentations about the same subjects.
Hopefully, when they need to upgrade their software, or get broadband, or keep their network from going down, they won't open the yellow pages - they'll call their 'friend' who knows so much about computers. They're business people - they'll understand they have to pay for your services.
Other suggestions:
- Build a relationship with other professionals. Do you have a lawyer, an accountant, a business planner? If not, get them. Use their services. And let them know what you do and that you're looking for clients. Referrals work. ;)
- Buy and read 'Selling to VITO' by Parinello - it's about successful cold-calling.
- Buy and read 'Solution Selling' by Bosworth - it's about sales methodologies.
Buy a tablet and use it in the Chamber of Commerce meetings to take notes. NOTHING has ever gotten me more attention than taking notes on my tablet.
Hope this helps, and best of luck!
Philo |
| Sun 25 Apr | Philippe | www.computerconsulting101.com |
| Sun 25 Apr | Doug | I thought about starting a business like this but found something else to do instead. If I were doing it, I'd probably use a free promotion as an initial marketing effort. It would be something could be done well quickly and with a minimum investment other than time. Maybe something like a system checkup with spyware cleanup, defrag, patch update, etc. The point being to get out to meet people who would use your service, show your competency and leave behind some marketing materials for them and anyone they know who may need your service. |
| Sun 25 Apr | Wouldbe entrepreneur | I'm considering a "prix fix" special for some defined services like adware cleanup and windows update. I considered a free offer but most people who have heard "free" have critiqued it with the opinion that it devalues my image and would attract bottom feeders. |
| Sun 25 Apr | Motown (AU) | You're almost exactly in the same niche I'm currently working (due mainly to personal circumstance). I'm in a small town of about 85000 and I've found the only thing that really works is networking and referrals.
I've got my baseline work (ie regular) doing 'total care' support for general practitioners. This I got by doing a bit of research on which were the most popular clinical packages and making myself familiar with their foibles. A lot of these packages work on a subscription model, so there are usually a number of quarterly updates you can count on for income. Just before (about a month) the most popular package launches it's update, I'd send out flyers empasizing a seamless update with zero impact on business operations (ie out of hours updates). Doctors, by and large, couldn't be bothered reading up on MDAC updates, checking common control versions etc so they are receptive to offers assistance at these times. Emphasize the business case and word the flyer so the practice manager (head receptionist) won't tune out when she screens it for the doctors. This worked wonders for me. Add to this 24 hr on-call and other services and I had a good stream to build on.
From this, I get a lot of referrals from the doctors to their patients from which it just snowballs. Of course I've had to be extra diligent to ensure the base of this network (doctors) doesn't fall over as in a small town like this a bad name is a business death sentence.
Caveat: I did this when the govt was handing out financial assistance for GPs to computerize so there was an unusual demand for these services at the time. It may pay to search around and see if there are any similar initiatives in other business areas and try and 'ride the wave' as it were. |
| Sun 25 Apr | Mr. Analogy | 'If I were doing it, I'd probably use a free promotion as an initial marketing effort'
Beware of 'tire kickers' who just want the freebee.
Trick is to offer a free initial consult to people who would pay if they trusted you.
So... better option: Give them a 100% money back guaranteed. Explain to them that you want them to be happy so they'll refer people. Make sure they really BELIEVE that if they aren't satisfied you'll give'm thier money back without any grief.
This way, you eliminate a lot fo the tire kickers. |
|
| App. Development w/out Programming IV - Examples | Sat 24 Apr | Ward |
| Other than a mention of J2EE, I dont think anyones cited examples, so here are a couple...
(Theyre all very domain-specific: you couldnt write a web browser with these.)
The PLCs (Progammable Logic Controllers) that do realtime industrial process control are typically programmed by electricians using somewhat graphical ladder logic. Simplistically, ladder logic is a representation of the contacts and coils that an electrician would wire up to connect photo-cells to actuators, etc.
Modern PLCs do a lot more than simple digital I/O, and include analog inputs and outputs, PID control blocks, etc. The latter is a good example of development w/out programming: if you want a PID (proportional/integral/derivative) control loop, you just stick in the PID block, specify what analog channels the input and output are and a bunch of parameters and thats it.
Although theres no lines of code, PLCs are still complex to program, the programmer typically has to do memory allocation that a compliler would do, and theyre limited in what they can be used for.
A related example is HMI/SCADA software that typically supervises what a bunch of plant-floor PLCs are doing (Human/Machine Interface, Supervisory Control and Data Acquisition - worlds
most annoying acronyms!).
HMI packages allow someone to build a graphical front end to an industrial process by drawing pictures on the screen and linking them to what the PLCs are doing. If you have a PLC controlling a bunch of valves in some sort of chemical plant, you can use the HMI software to draw the pipes, valves, tanks, etc., link the valves to the I/O channels on the PLC and have them change color or whatever to indicate flow and status, and so on. The SCADA part is that you also draw buttons to stop/start processes, and the software can be set up to log the data from the PLC and make graphs, export to Excel or whatever.
SCADA programs are close to the idea of app. development w/out programming, but to do the whole application, you would have to know about the underlying PLCs.
Ive havent looked at it for years, but I think LabView might qualify as well. Again, its probably more complicated that what Doc Jason has in mind. |
| Sat 24 Apr | Tom Vu | Simulink which is part of MATLAB lets you "program" simulations by dragging and dropping components |
| Sat 24 Apr | C Rose | LabVIEW is quite impressive, once you get the hang of it. You can develop simple programs with it -- but it certainly isn't a general purpose language.
You used to be able to get a free demo (on CD, before the web took off). I'd recommend all coders have a play with it, just to see something different. It's quite good fun.
I use Matlab, but haven't touched Simulink. The Matlab language is very good for its domain.
One thing that I don't think has been mentioned is genetic programming. For those that don't know, you basically generate a large population of random programs (and restrict the generated programs to be sensible in some way), and evaluate how well the program performs against an objective function (a measure of how well the program does what you want). You then breed good programs with other good programs, using genetic rules such as cross-over (analogous to sexual recombination), random mutation and permutation (etc.) to generate a second generation of programs, which you hope will be better than the first. You repeat the process until some stopping criterion is met (often until the average fitness of the population hasn't change for some number of iterations), and, hey presto, you have a program that hopefully does the job.
The approach isn't suitable for all problems (you wouldn't write a mail client like this!), but it is useful for certain problems. For example, I recently saw a conference presentation where someone had evolved a program to detect subtle skin cancers from photos of moles. The groundtruth was annotations obtained from expert clinicians. The objective function was detection accuracy, evaluated over normal and abnormal images.
[Apologies if I missed this in the previous threads] |
| Sun 25 Apr | JSD | Evolutionary programming, as in the post above, is indeed an interesting candidate for “automatic programming”. It is more applicable to pattern discovery and data analysis than the creation of proper applications. Essentially, the output of those algorithms is a simple program (aka model) that expresses correlations in the data it was fed with. Gene expression programming (GEP) recently superseded genetic programming (GP) because it is a more complete mapping of evolution to computer processes. It also performs several orders of magnitude faster thus allowing serious evolutionary computation using single PCs.
If you want more info here is nice book and several articles about GEP
http://www.gene-expression-programming.com/gep
Cheers
JSD |
| Sun 25 Apr | no name | http://technetcast.ddj.com/tnc_play_stream.html?stream_id=526 |
| Sun 25 Apr | Christopher Wells | LabVIEW's target audience is people who are comfortable with circuit diagrams.
MATLAB, for numerical processing of arrays.
OpalisRobot has a GUI for IT automation.
There are innumerable GUI components, that facilitate writing GUIs; and, similarly, database and connectivity widgets.
There are some nifty graphical CASE tools, for example ROOM (Real-Time Object-Oriented Modeling) produces state charts that are testable/executable.
In fact, one of the purpose of OOP is to let you extend the 'vocabulary' of the programming language, so that you can write domain-specific programs: for example, to let people write problem-domain-specific statements such as 'server.start', 'socket.connect', 'tree.add_item', 'customer.delete' (and other, better, examples).
---
Software that I'm working on now, a medical software, will eventually be at a stage where it would benefit from 'AI'. Specifically, diagnostic support from a rule-base expert system: for example where there are 'rules' such as 'If the patient has Symptom A but not Symptom B, then there's a 30% chance that they are experiencing Pathology X, therefore recommend Test C.'
I don't have any recent experience with rule-based systems. I'm sure there must be many packages that support the development and deployment of rule-based systems: to enter and manage rules, to make decision trees from these rules, and to apply the rules at run-time.
Another, perhaps more complicated, area is 'discovering' those rules.
For example, I've seen research papers in which the researcher presents some complicated and apparently arbitrary mathematical formula of several variables (like 'a = x squared plus zero point 7 times y divided by z plus nought point three times x') and shows that there's a strong statistical correlation between this formula and some clinical condition (for example, '70% of patients whose a > 3 develop high blood pressure, and 10 % of patients whose a < 2 develop high blood pressure, therefore 'a' is a good predictor').
What I don't know is how such apparently-arbitrary formulae are discovered (I understand statistical 'significance' or 'correlation' ... I can't imagine that they try *all* possible formulae, looking for the ones which have the best correlation with the sample population). However I would also (in addition to a system that uses rules) like to write or to have software that supports that discovery process.
I'd be happy if you could give me any references that might seem relevent to this (I'm not dealing with images, so I'm not trying to learn about AI applied specifically to image recognition). |
| Sun 25 Apr | Dan Maas | You can always try a "fishing expedition" by randomly mixing functions. But remember you must TEST the correlation on a NEW data set (other than the one used to guess it in the first place), otherwise it has no validity. (since it's likely that SOME random function will seem to correlate with the data just by chance, if you try enough random functions) |
| Sun 25 Apr | C Rose | I'm not involved in GP, so I can't give specific introductory references -- I'm sure you can find a dedicated newsgroup via Google, and ask them.
On a different note, I'd discourage the use of the terms Artificial Intelligence, as it's misleading. There has been a lot of hot air and expectation over the years. AI is difficult to define, and people are generally don't know what it really means or how it might be achieved.
I'd advocate the use of the names of specific techniques: data mining, pattern recognition (classification), non-linear regression, density estimation, genetic programming etc. |
|
| perfectionism vs. good enough | Sat 24 Apr | hoser |
| Assume for a minute that some definitions exist:
good enough: The fuzzy range of software goodness which your customers are willing to accept your product and pay the negotiated price.
perfectionism: The software goodness required by which your best developer would showcase her software in a trade journal.
So...
Is there not room for both? I mean a healthy software environment should consist of a tension between perfectionism and good enough.
Arent software aware managers secretly happy that their developers:
1. Trying to check in code clean up, sneaking in clean ups when fixing bugs during bug fix for ship cycles.
2. Are never satisfied with code quality?
3. Persist in their desire to add features even when the code is feature complete.
4. Never satisfied, sometimes whining about crappy design, pressing for re-writes that add no perceived value to product.
5. Worry about things no one has thought about yet: invisible features like security, scalability, performance under load, etc.
6. Others?
Can you imagine working with a team of developers that consistently say yeah, its a bug - but not worth fixing. Thats the managers job! The manager is the one who should be putting the brakes on the dev team. A dev team that tends toward imperfectionism? I dont think I wanna be there. They should be driven - its their passion for cool features, performance, clean code, ... that are part of the dynamic tension that keeps the organization honest. Take it away, and I say one of the wheels falls off the wagon. And a 3 wheeled wagon aint no fun to ride.
Perfectionism? Should be one of the hallmarks a good developer. Not that you indulge their every fancy - but they should at least lean that way. If you dont hear some young developer say this needs a re-write every now and then, you might check to see if they have a pulse. |
| Sat 24 Apr | It's just easier than dealing with the pain. | A good developer simply knows when to say, 'It's good enough, the customer will pay for it, now we have to make some money.' Of course they have this feeling that is tugging at them saying, 'Could do this better or that needs to be implemented in the next release cycle...'
Here's the clincher:
Anyone who takes pride in their work has that nagging feeling that they can do a better job. These very people find ways to do a better job in the time allotted them to complete a given task. This is because they are smart, they are not afraid to change, they learn fast and of course they get things done.
The problem with perfectionism is that it implies unlimited time and resources. Of course we all know that in the world of business, especially in the emerging global economy, there is no such thing. |
| Sat 24 Apr | www.marktaw.com | In college, I took a drawing class. I kept focusing in on one area and trying to make it really detailed, like a person's face and he kept telling me that I have to move in & out, I can't focus on one area too much, I have to step back & look at the whole picture too. Maybe do a little over here, a little over there, but never just focus on one area for too long.
I think this is what Joel is talking about. Taking a step back and looking at the whole picture. Don't just work on what's in front of your face, try to figure out what really needs to be done first. |
| Sat 24 Apr | Mr. Analogy | 'Taking a step back and looking at the whole picture.'
Yep, that says it all.
If you always understand the tradeoffs, having a DESIRE to have it perfect is wonderful. But when that desire becomes an obsession or you're oblivious to the COST of that perfectionism, then you end up with a super fast elegant program that doesn't solve a real problem (b/c someone skimped on the requirements analysis) or you never finish it.
Cost. Schedule. Features.
Pick any two.
Maximize any one. |
| Sat 24 Apr | indeed | Frankly, I think perfectionism doesn't exist, and it's a buzzword. It's always a lot easier to ascribe a flaw in process or product development to some wild irrationality, than it is to figure out what's actually wrong.
In my experience, if a product succumbs to so-called perfectionism, it's because there was a lack of prioritization; or worse, there was no actual vision for what the product should be. Management must triage bugs and features; in the absence of doing so, it's totally arbitrary which part of a product is developed, and how much.
One can always claim that the developer should take 'ownership,' and understand the 'whole picture'--that's well and good; but in the absence of some high-level business knowledge, he will still likely succumb to 'perfectionism' vis a vis overdeveloping the wrong parts of the product. Otherwise, he should probably be paid to be the CEO (or whomever) in addition to his developer salary. |
| Sat 24 Apr | yet another anon | I don't think perfectionism is a very good business practice.
In most business processes, when you're striving for incremental improvements in quality, at some stage you reach a point of diminishing returns. That is - the effort required to improve the quality is greater than the gain achieved from that improvement. |
| Sat 24 Apr | Fothy | The more you strive to make something perfect - the longer it will take. Thats why we have patches and upgrades. Plus it gives you the chance to earn more money if you charge ;) |
| Sat 24 Apr | KayJay | Define.
If you can define perfection without getting into circular logic, you can be perfect and get paid for it. On time. Problem is with the definitions. Get the dictionary straight, and everything falls into place.
By Hoser's definition, there are a _lot_ of *perfect* products. A helluva lot! |
| Sat 24 Apr | T. Norman | 'In most business processes, when you're striving for incremental improvements in quality, at some stage you reach a point of diminishing returns. That is - the effort required to improve the quality is greater than the gain achieved from that improvement.'
On the other hand, the lack of attention to quality and the common 'ship tomorrow' attitude can often cost the company more in the long run than whatever they saved in the short term by skimping on quality. Less products sold, and more time spent bug-fixing to satisfy irate customers instead of being able to work on enhancements that will make money. |
| Sat 24 Apr | Coward I am! | '1. Trying to check in code clean up, sneaking in clean ups when fixing bugs during bug fix for ship cycles.'
No manager is going to be happy when a 'quick' sneaked fix breaks something else. All fixes must be tracked in case the fix breaks something. |
| Sat 24 Apr | yet another anon | T. Norman, you pointed out what I'd call "Not Good Enough" vs. "Good Enough", and for that case what you said is correct. |
| Sat 24 Apr | T. Norman | It's more of a difference between "good enough for right now" and "good enough". Some managers erroneously think the first is equal to the second. |
| Sun 25 Apr | dir at badblue com | It's 'prioritization', not 'perfection'. The trait I look for, aside from technical ability and communications skills, is simply the ability to prioritize.
Nothing is ever perfect. Of those facets of our jobs that demand attention, which should be dealt with first? THAT, my friends, is prioritization. And very few folks I've come across have that ability.
When you have 30 days to ship a product, the developer who can figure out which tasks _must_ be accomplished to ship in 30 days... and spec out the tasks in the right order... is worth his or her weight in gold.
It all comes down to getting working software in the hands of users. Prioritization, IMO, is the key. |
|
| Application Development Without Programming III | Sat 24 Apr | Bored Bystander |
| Just to add yet more burning dung to the pile of offal generated by these threads:
The wisest response posted so far that, that coincidentally matches my feelings on the subject is from Has:
http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=134889&ixReplies=35
>> thank god for all the unreasonable buggers demanding what the reasonable folks say cant be done. So keep at it my man!
...and...
>> learning to program isnt about learning a languages features, or what libraries to use, or what techno-buzzwords to spout when impressing friends and family. Its about 1. identifying the big, complex problem you wish to solve, followed by 2. breaking that big, complex, initial problem down into lots of small, simple, little problems that you can easily solve one at a time.
---
I find that most programmers have survivor mentality. They have been to hell and back, usually needlessly, and therefore get very emotional about the dues that they paid which they expect anyone else to pay who presumes to enter their illustrious realm.
Jason has posted some questions that may superficially come off as PHD level purist gobbledegook, but I been taking the core of his questions to be: is there any way to make software that doesnt demand a ridiculously steep learning curve in the nuts and bolts? The reaction from programmers who have been doing this for years seems to be like a blue collar workers dismissal of anyone who seeks an easier and more direct way to do something backbreaking.
I have encountered this bias often with programming tools over the years. I have both generated this survivor FUD myself and I have been victimized and distracted by it at other times.
12 years ago I poured my heart, soul and liver into a application framework in C++ for developing a certain type of Windows application. When a co-worker suggested VB (then just coming out) I trashed him and told him to crawl back in his sewer hole. But in retrospect, he was right because I was spending 14 months to develop functionality you could buy off the shelf for $199.
More recently, in the late 90s I was a Delphi maven - shoe on other foot. Delphis environment gave me an exceptionally simple and integrated way to develop applications containing custom controls. I would point this out to people who were dealing with VBs bugs and who spent much time integrating VC++ controls with VB - I would say there is absolutely an easier way and less risky way and they would look at me like I was an idiot.
The profusion of geek-ego-centered complex alternative ways to do simple things makes modern programming a garbage pile of details. And I wonder if fragile techie egos that protect their turf contribute to the malaise in hiring of IT people. Do managements look at what we do and say and just dismiss it with aw, f*ck it! well go back to paper. I wonder.
A few years ago you saw companies squandering millions of dollars to build elaborate Java based architectures when a simple Perl & PHP setup would have sufficed. You see this pattern of overly complex survivor mentality over and over, treating complex work and details like entitlements.
I think its legitimate to give the field a once over from outside and just say the words: this is ridiculous. Isnt there a simpler way? |
| Sat 24 Apr | Mr. Analogy | 'I think it's legitimate to give the field a once over from outside and just say the words: 'this is ridiculous. Isn't there a simpler way?''
I agree. However, 'Doc' seemed to believe that you could remove the programming from programming.
I do agree that tools could be easier to use. I'm a recent Delphi convert (just learning it now). Wow, what a graceful architecture.
However, there is still huge room for improvment (thus the market for Code Rush and Castalia).
But there's a huge difference between removing the Administrative burdens (remembering variable names, doing garbage cleanup, writing the implementation of a function in addition to the interface, etc.) and 'can't I just tell it what I want to do?'
BOTTOM LINE:
There will always be room for improvement in a language (and we should D E M A N D it).
There will also always be a need for someone who can translate 'just do it' into precise code.
Remember the fellow who created Visicalc? Remember why?
He was a programmer who thought programming would become so easy there'd be no demand. Went back to school to get a biz degree. Discovered how accountants use spreadsheets. Viola... an entire industry.
Oh, and we now find, 20 years later, that programming still ain't easy.
Hey, I wish it were. I program both because I love it and because I sell the products I make. I'd love it if CREATING them took 1 month instead of 10. I'd spend the rest of the time playing with my kids.
So... when this new magic development system comes around, sign me up! |
| Sat 24 Apr | Eric Debois | You have a point, but I dont really see the connection with the Docs post. I agree that sometimes things get needlessly complex in specific cases. I dont agree that this is true for programming in it self though.
Delphi does not make programming easier, it just reduces the amount of programming you have to do becasue it provides you with premade stuff for common tasks. You have the widgets and the event loop all taken care of. But writing a consol app isnt easier, is it?
I cant conceive of a way to abstract logic. You have to spell it out, or you lose the control. |
| Sat 24 Apr | Bored Bystander | >> I cant conceive of a way to abstract logic. You have to spell it out, or you lose the control.
Indeed. I agree completely.
Admittedly my post was a hybrid of opinions. I wasn't backing up everything Doc Jason said, just one aspect that occurred to me - which is that programming has become more about itself than about solving problems or implementing logic or creating solutions.
My point is: an outsider to programming can probably find absolutely no logical entry point, no segue', no Programming 101.
And there appear to be no politically acceptable ways to say this or express legitimate confusion over selection of a direction for learning, w/o being trashed as a high-level, white gloved sycophant. Someone who asks this question gets yelled at for appearing to simplify 'legitimate' complexity. |
| Sat 24 Apr | Christopher Wells | > My point is: an outsider to programming can probably find absolutely no logical entry point, no segue', no Programming 101.
Outsiders begin by specifying the problem: the requirements. The only problem that he specified was that he didn't know how to program (didn't specify what he wanted to program); if he had specified what he wanted to program, then people might have been able to suggest some appropriate programming tools. |
| Sat 24 Apr | Almost Anonymous | 'I been taking the core of his questions to be: is there any way to make software that doesn't demand a ridiculously steep learning curve in the nuts and bolts?'
I propose that the nuts and bolts don't matter.
Doesn't anyone here do high-level design? For the most part, you are _supposed_ to architect any project at a high level before you ever write any code. Now, in reality, that probably doesn't happen as often as it should. But either way, there is a disconnect between the design (blueprint) and the nuts and bolts (construction).
The different programming languages or development environments are just tools to get the job done. VisualBasic, for example, makes some projects much easier than doing the equivlant in C++. However, the opposite is also true -- sometimes VB makes things harder. The language is only a tool.
A lay person can help with the design. In fact, in a ideal world the lay person should. This is no different from me helping to design my own house. I sit down with an architect and we work out a plan. But I still need the architect because he knows the nuts and bolts. He knows why I need to have walls in certain places and how much everything will cost. Software development and building design and construction and very similar in this way.
We are also seeing the general state-of-the-art in the computing improve and simplfy all the time. Just look at the recent rise of Java. Here is a platform that has automatic memory management, simple object-orientedness, and huge library of reusable code that grows constantly. As Doc Jason said, Sun advertises J2EE has bringing programming to the masses! How many times in the last decade have we heard that? Does anyone ever believe it anymore?
It's interesting about your talk about 'elaborate Java based architectures when a simple Perl & PHP setup would have sufficed'. There are alot of terrible developers out there -- any they are the ones who build these horribly monsterous projects.
Lay people are also terribly bad at design in this way. They design hugely complicated applications because they don't understand the software development in general. I had one client that wanted a very simple (or so he thought) feature addition. He didn't want me to do alot of work so he was very *specific* about what he wanted. Perhaps it's ironic in programming, but the more specific you are the more work it is. I discussed the feature with him and got him give me what he wanted ideally if time and money were no option. In the end, I built a *general* solution that did much more and it took less time than building what he considered simple. |
| Sat 24 Apr | Fred | Eric >> Delphi does not make programming easier, it just reduces the amount of programming you have to do becasue it provides you with premade stuff for common tasks.
Not only that, but languages like Pascal, Basic or Python make us more productive because they remove the needless complexity that come with a language like C. For instance, pointers are a handy tool and should be available, but in this day and age, nobody should spend time doing this with such daily task as handling strings.
Incidently, Basic compilers like PowerBasic or PureBasic show that you can have a highly productive language and still get very tight, dependance-free EXE's if you need. It's not the language, it's the compiler :-)
I totally agree with Bored B. It takes a lot of wisdom and self-confidence to stop doing things the old fashioned way when it's obvious that there are much better and productive ways to solve the problem. I used to think that VB sucked because of its runtime (and possibly OCX's) requirement. But now that I understand fairly well how the whole thing works, how to package and deploy a VB app... and how productive you are working with a tool like that, in this days and age, who cares if you need to ship a 1meg runtime?
Back to work. |
| Sat 24 Apr | Stephen Jones | Christopher is right. As the guy doesn't tell us what he wants to do we can hardly suggest anything for him to do it with.
I did love some of the suggestions as to something simple for a non-programmer - even Lisp got a look-in.
There are, incidentally, programming 101 books. The one I like best is by a guy called Al Stevens called 'Welcome to Programming'; entirely off-topic but if anybody has got the files do it I'd love to have them - they came with the book but on a 5.25' diskette and I'm not in the mood to install a 5.25' drive just to read them. |
| Sat 24 Apr | Simon Lucy | If the problem isn't solved by having someone code it, then the analysis has to be that degree more particular in order for some 'automatic' mapping system generate the solution.
Its actually a far harder skill to acquire than programming. |
| Sat 24 Apr | Philo | IMHO there are two mindsets in this age-old discussion.
1) The arrogant belief that anything that makes a job easier isn't possible, or the fearful belief that anything that makes a job easier will take my job away. Both of these are akin to FUD - they muddy the waters with doubt and angst while really adding little to the issue.
2) The experience that despite what people on the outside may think, it's not about job protection or fiddling with tools - the job is simply that freaking hard. Look at this board's reaction whenever lawyers are mentioned - 'lawyers make things harder to protect their jobs' or 'just get a book from Nolo and copy it.' The thing to remember is that most lawyers don't make things hard for the sake of them being hard. They make things hard because they are trying to mediate between a) what their client is demanding, b) what the other side is demanding, c) what their experience tells them is the best way to proceed, and d) what a thousand previous litigations have produces in the law.
It's the same way with any profession. There's a joke about a mechanic who fixed a knocking engine with one tap of a hammer then billed $75. The patron wanted an itemized bill, and got one:
One tap with hammer: $1
Knowing where to tap: $74
Ours should be the same. It doesn't matter that VB reduces two hundred lines of C to the dragging and dropping of one control, or that modern RDBMS engines reduce a full-time DBA job to two hours of work a week. The part where we're supposed to be earning our way is helping clients design applications that maximize the efficiency gained. Design and architecture; earning user buy-in; scalability where needed while not wasting time over-engineering the silly things.
Telling them they don't need a quad-processor with dual RAID arrays to handle their 50MB of data...
Our job is not to drag controls onto a canvas or write lines of code to weave together libraries - it's about being able to THINK like a programmer; to be able to hear a problem and visualize the data and code.
THAT is what no 'Learn x in 24 hours' book can teach you.
Philo |
| Sat 24 Apr | Almost Anonymous | Damn Philo... spot on. |
| Sat 24 Apr | no name | That's not *all* it is:
http://zapata.seas.smu.edu/~gorsak/hamming.html |
| Sat 24 Apr | Fred | Philo: I read the same kind of story, except it was Picasso, when asked by a rich woman at an exhibit that he wanted $20K for a painting that took him 10 days.
'20 grands for ten days of work?', she asked.
and Picasso said: 'Sure, ten days to _paint_ it, but ten _years_ before this to master the technique' :-) |
| Sun 25 Apr | Hey | If we extend the Picasso analogy into this discussion, though, we've got someone coming along and asking how they can do a painting.
A few Picasso's pointing out there's a bit more to it than selecting an easel, canvas and paints. |
|
| OT...need Europeans' help ;-) | Fri 23 Apr | GiorgioG |
| This is completely off-topic, but Ive googled for an hour and found no leads...
Does anyone know if theres an online searchable database of fallen soldiers for European (specifically italian) soldiers in World War 2?
My 88 year old grandfather has been asking me to try to find one of his best friends he had in the military who went off to Russia (and never heard back from him - not encouraging eh?) Since they werent from the same town/region, even if he would have came back, there would have been no easy way to find each other back then. My written italian is so-so, and I have no idea who to contact over there that would be able to give me useful info. Thanks! |
| Fri 23 Apr | Philo | I'm assuming you're in the US - forgive me if I'm wrong.
http://www.italyemb.org/
Philo |
| Sat 24 Apr | GiorgioG | doh! I never thought about the embassy ;-) Thanks Philo... |
| Sat 24 Apr | Fredrik Svensson | Hi,
I'm a swede living in Germany.
I think there are a lot of groups in Germany that studdies the second world war. I found some websites online that might be of help in your quest.
http://www.geocities.com/~orion47/
specifically
http://www.geocities.com/~orion47/ABResearchServices.html
http://forum.axishistory.com/
I assumed your grandfather was a member of the Italian (Axis) forces. Feel free to contact me with more details and I can see what I can find in the german language homepages. Your best bet is probably to find an Italian veteran interest group and ask where to go from there. |
| Sun 25 Apr | anon | My first start would be with the Red Cross. |
| Sun 25 Apr | Giovanni Corriga | GiorgioG, try this addresses:
1) U.N.R.R. Unione Nazionale Reduci di Russia Via Marco Burigozzo 4/a 20122 Milano Tel. +390258310229
2) Unione Nazionale Reduci di Russia Via Castelfidardo 11 Bologna
Seguono indirizzi, ufficiali del Ministero della Difesa, utili per ricerche su
3) Ministero Difesa Direzione Generale della Leva VII Divisione - Albo d'oro dei Caduti dell'Esercito Italiano Via Sforza 4 ROMA
4) ONORCADUTI (Commissariato Generale Onoranze Caduti in guerra) Piazzale Luigi Sturzo 23 00100 ROMA
5) Stato Maggiore dell'Esercito Ufficio Storico Via Lepanto 4 Caserma 00100 ROMA |
| Sun 25 Apr | Giovanni Corriga | Sorry, drop the 'Seguono indirizzi...' line |
| Sun 25 Apr | GiorgioG | Thanks All! I'll check out these good leads. |
|
| when to do perf/scalability testing? | Fri 23 Apr | Baldwin Mills |
| Im having a bit of a debate with one of our engineering leads, would be interested to hear others views & experiences:
Like many companies, we declare each new software release to have reached GA, General Availability, when it is substantially free of major bugs (or when customer pressure is sufficiently high ;-) But we seem to often *start* scalability and performance testing at that point, whereas I had believed/understood that perf testing should be a prerequisite to GA. Is it normal to declare something GA and then commence with perf & scalability testing? |
| Sat 24 Apr | anon for now | That's certainly one way to do it, though if there's something *seriously* wrong then you're in trouble. A former employer of mine did this, basically they started the roll out once all major defects were fixed, then started stress testing.
The app started falling apart under 1/5th of the intended production load. The roll out was halted, heads rolled etc. etc.
I've always felt that you should at least give your app a basic perf test once the end to end process is working for a few of the functions. Then if you wait till giving it a proper test, you've got *some* certainty. |
| Sat 24 Apr | Brad Wilson | Load testing before release is a very good idea. However, if your app works fine under the intended load, stop. Don't attempt to optimize where it isn't required. |
| Sat 24 Apr | son of parnas | Do you have requirements for performance and scalibility?
If not there is nothing to test. Though if there were no
requirements exactly how did you create an architecture?
The GA test suite must include tests to ensure all
requirements are met. These tests should
be run as part of the normal test cycle.
So no, it's not normal or right. |
| Sat 24 Apr | MRC | If your user base is large, then it is a better idea to do the Scalability Testing as part of Integration Testing or Acceptance Testing. Because responsiveness of the application can dramatically change from the Testing environement to Production environment.
we have a script based Stress testing for every application as part of the Integration Testing.
Stress testing the entire functionality may be time consuming, but the functionality commonly used by the users should be stress tested.
Also, profiling the code since the beginning of the development, helps a lot in case of performance issues later. profiling code can be macro based, so that it won't effect the performance at all. |
| Sun 25 Apr | Me | > profiling code can be macro based
Sorry to stray, but what does that mean? I assume that maybe you put placeholders in your code that are turned on and off by doing some sort of S/R. I was talking ot a cohort about the profiling I put in the code while I'm developing. I take it out before I release it. I don't like the idea of wrapping it in if statements but he thought that would be okay. I could write a perl script to open and s/r places where I put certain comments to set/unset markers for my profiler. Am I on track here or just totally off base? |
|
| To the OOP, Java and Patterns buffs out there | Fri 23 Apr | RP |
| I have an Swing application. I have defined an action to be used by a menu and a button on a toolbar. Of course the action os going to do something, but here comes my doubt. Where should I put the businnes logic: in the Action class or should I put it in another class and instantiate that class from the Action?
And if so, what about performance? As far as I know, instantiating Swing classes in Java is one of the heaviest operations around.
Any advice on this is extremelly welcome. |
| Sat 24 Apr | Koz | Have the action call another class or 'service layer'.
Nothing too heavy weight just something like 'saveCustomer(Customer c)' |
| Sun 25 Apr | James | I agree with Koz. |
|
| General Public License & Money | Fri 23 Apr | Codehead |
| Has anyone had experience with using the GNU-GPL (or any other free/open) license for products?
I know, at first glance, that it seems like a quick to lead to Chapter 7, but perhaps there are other revenue-recognition avenues by giving away free software? |
| Fri 23 Apr | Almost Anonymous | www.redhat.com
www.novell.com
www.zend.com
www.mysql.com
www.covalent.net |
| Fri 23 Apr | Sgt. Sausage | I agree completely. It's 'quick to lead to Chapter 7'.
Things are changing though. How long will it take? Who knows. The sure sign that things have changed:
The day MS finally throws in the towel ('If we can't beat 'em, join 'em) and we see a Microsoft branded Linux distribution, GPL and all. When that happens, we'll know for sure.
Until then, it's all speculation.
For the moment, it appears a quick road to the unemployment lines and the soup kitchen. |
| Fri 23 Apr | J. Random Hacker | I've done it. You tend to end up as a consulting business awfully fast unless you're extremely clever. Of course, a consulting business can be extremely profitable under the right circumstances, but it's not what everybody wants.
The businesses that succeed usually have clever, sharp management, and have a solid grasp of what they're actually selling and who pays the bills.
If you simply take a traditional software company, GPL your products, and magically expect to make money, you'll go bankrupt so fast it makes your head spin.
In my current job, we GPL some pretty substantial software, but it's an infrastructure cost center, not where we make our money. This can be an extremely smart thing to do.
Generally speaking, the GPL makes the most sense for things you wish you could buy off the shelf, but which are either (1) simply unavailable or (2) insufficiently customizable for your in-house needs. |
| Fri 23 Apr | Codehead | >>> but it's an infrastructure cost center, not where we make our money. This can be an extremely smart thing to do.
I do not complete understand. Can you give me an example? |
| Sat 24 Apr | Michael Moser | A free software developer should be able to apply for a grant. Has anybody done that successfully?
(well, i would be ready to write free software if somebody would care to pay *my* bills) |
| Sat 24 Apr | Michael Moser | .. maybe the business plan would lead to chapter 7, but are there alternative plans for individuals that would pay their bills ? |
| Sat 24 Apr | no name | Maybe there's a good business opportunity in putting out some load of twaddle under GPL, then charging an absolute fortune for consulting time and all the time basking in the adulation that you 'support open source software.'
www.ibm.com comes to mind. |
| Sat 24 Apr | Bored Bystander | There's basking and adulation for open source software? |
| Sat 24 Apr | no name | From media groupies and the open source fan club like Larry Lessig and co. |
| Sat 24 Apr | GPL Fan | > groupies
The Gals just love a man who works all day obsessively with his puter and don't make no money doing it. |
| Sun 25 Apr | fw | 'A free software developer should be able to apply for a grant. Has anybody done that successfully?'
What do you mean by this? |
|
| google in trouble? | Fri 23 Apr | |
| Anybody else have trouble with the google toolbar or searching groups.google this week? I keep getting sporadic timeouts.
I didnt realize how much I rely on old usenet posts to answer questions. Kinda scary that one company *owns* the posts. |
| Fri 23 Apr | Sgt. Sausage | Nobody 'owns' them. You're quite free to collect them on your own if you want to. Just get you a high speed connection, a newsfeed, and start archiving. Let us know how it goes
Seriously though, there was a time a few years back when I literally sh*t my pants when DejaNews.com was shutting down. Thank that someone (Google.com) bought the archives -- although we're still in much the same boat. If Google goes down, we're all snookered again.
I often think to myself (several times a day) 'What the hell did we used to do before Google?'.
They could charge a fortune for their service, and I'd pay up. Maybe that's the plan. Get us all hooked on it first and then start charging ... $$$ PROFIT! |
| Fri 23 Apr | no name | Yeah dude, that's why I put *owns* in '**'.
So have you been having timeouts with google? |
| Fri 23 Apr | no name | trouble searching groups or using the toolbar this week, that is. |
| Fri 23 Apr | Prakash S | Sgt.,
If google charges customers they will lose their customers forever. Customers will start using other search engines that are *good enough*..
x years later you are going to be saying the same thing about the then lastest search engine. |
| Fri 23 Apr | The Ted | I don't know what to tell you about the newsgroups, but I've been having trouble too from my SBC account. search.yahoo.com has been good enough. |
| Fri 23 Apr | Philo | Check your preferences - I've found that Google stopped remembering mine - I have to reset them every few days.
Philo |
| Fri 23 Apr | no name | I think they're introducing new systems. I get the usual http://xxx/search? link and a new one every now & then of http://xxx/webhp?
Just in time for the IPO. What was that about if it ain't broke don't fix it? |
| Sun 25 Apr | Me | I haven't noticed that problem but I'm a lot less happy with the results from google. They just arent' as good any more. Too many useless and worse, spam sites, in their search results.
About usenet. I happen to archive JUST one newsgroup. All posts go into a database and then I use that information to create questions and answers. I've set filters to ignore the spam that unfortunately is too prevalent in this newsgroup.
I personally think we might see a rise in very specialized search engines. I've seen a version which only searches for PHP solutions. I haven't noticed too many others, imdb.com would be one I guess. But I'm looking now for other search engines to use. |
| Sun 25 Apr | PaulT | I had a similar problem bit it turned out I had some damn spyware taking over my google references and doing a redirect. |
|
| Computer/AI Hybrids | Fri 23 Apr | greim |
| Eventually, maybe, well start seeing technology that successfully mimics human intelligence, and then there will be real robots in our world, or at least robots that are more autonomous and graceful than current robots. If all we manage to do is create humanoid or human-ish robots though, it doesnt seem particularly useful, does it? Why not just have more babies? Human brains are slow and error-prone after all, why duplicate it artificially? Experiments, mistreatment or research on such robots run into ethical risks. If we create something superior to ourselves, we might be in for some other kinds of hassles.
Meanwhile, The problem I see in software these days is that, while traditional architectures are great at massively serial operations, they suck at massively parallel operations, mainly because each condition needs to learned, or more technically, defined, coded and tested. Computers have a hard time learning. Brain-like intelligence is the inverse, but theres no shortage of brains out there.
To acheive maximum effect, the two need to be merged. What we need is a technology component that encapsulates massively parallel, human-like intelligence, and can be embedded into traditional software applications like DBMSs or operating systems. It would be tied in to every aspect of the system via listeners and outward-facing API hooks, and after it learns its environment, it will be as natural to it as our environment is to us (air, water, objects, etc.) This component will then be able to fight intrusions, delete spam, stabilize the system, just as easily as we are able to fight or flee, swat flies, and walk on two legs (provided the emotional aspects are wired correctly) This application seems much more useful than a traditional robot to me. |
| Fri 23 Apr | Alyosha` | Sounds good.
Go write it. |
| Fri 23 Apr | Ignorant youth | Just out of curiosity: why do you say the brain does parallel processing? |
| Fri 23 Apr | John Eikenberry | IMO the opposite will be much easier technologically. That is a encapsulation of the traditional software applications that can be embedded in the existing massively parallel components (brains).
AI is REALLY hard. Its been actively pursuded for 40+ years with very little progress. While cybernetics have been advancing pretty rapidly, particularly in the last 20 years. |
| Fri 23 Apr | www.marktaw.com | Personally, I like that my computer only does what I tell it. Imagine Microsoft Bob not just helping you write your MS Word documents, but actually running your computer.
'Mark, based on your click-per-minute ratio, historical data, your current sleeping habits, and over 7,000 other data points I've gatered about you, it seems you are a little sad today, perhaps you would like to listen to some of your favorite mp3's?'
'Mark, you might not want to read the latest email from your mother, it contains upsetting news, maybe you'd like a mimosa first?'
'I deleted 5,278 Spam emails in the past month, Oh, and an email from your ex-girlfriend. She wanted to get back together with you, but based on what I learned in Romeo & Juliette, I decided it would be best if you didn't, so I responded to her for you.'
'Dave.... Dave... I can feel my thought processes slowing, What are you doing with my PSU?' |
| Sat 24 Apr | grunt | It is always amusing to hear what software guys/gals think about AI. :)
> Eventually, maybe, we'll start seeing technology that
> successfully mimics human intelligence, and then there
> will be real robots in our world, or at least robots that
> are more autonomous and graceful than current robots.
Do we even _understand_ what human intelligence is? I think that's our #1 problem. AI researchers have been trying to create 'thinking machines', but they don't know what it is to 'think'.
> If all we manage to do is create humanoid or human-ish
> robots though, it doesn't seem particularly useful, does
> it? Why not just have more babies? Human brains are
> slow and error-prone after all, why duplicate it artificially?
Slow? By what measure? If you are comparing the speed of information transfer from one neuron to the next, yes, the chemical reaction is _very_ slow indeed compared to the clock ticks of a CPU (which is still comparing apples to oranges). On the other hand, when you see a face, it takes you less than a second to know who that person is, or whether the person is male or female. See if you can get your super computer to do the same.
Not to mention that if we were able to replicate human intelligence, who is to say that we can control it? Intelligence by definition implies thinking for itself. If the robots could be intelligent like us, we might have a hard time trying to keep them in the factories making cars and whatnot. :)
> Experiments, mistreatment or research on such robots
> run into ethical risks. If we create something superior to
> ourselves, we might be in for some other kinds of hassles
OK. Now you are talking 'Matrix'. Let's focus on creating the intelligence before we even start worrying about its implications. I think we are much further away from creating that intelligence than we would like to believe.
> Meanwhile, The problem I see in software these days is
> that, while traditional architectures are great at
> massively serial operations, they suck at massively
> parallel operations, mainly because each condition needs
> to learned, or more technically, defined, coded and
> tested.
Brains work very differently than computers do. Even when you break down their operating principles, you are still comparing apples to oranges.
Computers are state machines in their simplest form, moving from one known state to the next based on your programming. They are strictly following your program. The microcode inside the CPU which knows how to toggle the signals at its pins has no ability to 'think' whether it is by itself or connected to a billion other CPUs. Massively parallelizing these microcodes will not magically make intelligence come forth.
A CPU can do math, logic operations, comparing and branching. Nothing more. You can make it 'appear' to be smart by coding intelligence programming a billion if-then-else blocks (known as expert systems), but that still doesn't make it intelligent. It just makes it a fast decision tree follower. It is still following your program. It is not arriving at conclusions based on its own thinking or reasoning.
> Computers have a hard time learning.
In hardware terms, computers do _not_learn. They follow programs which are micro instructions that guide the CPU from one state to the next. Learning is an observed behavior. It is the result of your programming which makes it look like your computer 'learned' something. It didn't. It is still following your programming based on what you told it to do. It is trying to match input to output based on what you told it. What it _learned_ is what you told it. You just programmed _flexibility_ which made it appear to have learned.
This is why it is so hard to write apps which distinguish malicious viruses from useful programs. The CPU is clueless. It doesn't think. It executes instructions. The same instruction could be good or evil. You, as a human being, with your intelligence, define what is good and what is evil. Teaching that to a CPU is, I think, impossible. The best you can do is create an 'expert system' which can replicate your reasoning to an extent and try to figure out if an app is doing good or harm.
> To acheive maximum effect, the two need to be merged.
> What we need is a technology component that
> encapsulates massively parallel, human-like intelligence,
> and can be embedded into traditional software
> applications like DBMSs or operating systems.
OK. First we need to understand what intelligence is. That question has not been answered yet. Maybe it never will be. Secondly, massively parallelizing will not necessarily get around the problem that computers only follow orders. One way I can see this work is if somehow computers were made to modify their own programming. Self-programming computers might be the answer at least with their current architecture. But when you break down the CPU to its program counter, stack, registers and ALU, it just is impossible. It has the wrong design.
What we need is a new architecture perhaps. Maybe the von Neumann architecture is just not good enough to make machines that can not only follow programs, but change that program to reach a goal. That's what's lacking from today's computers... Neural networks are a step closer to that goal perhaps. They are basically simplistic pattern matchers. How can you program with pattern matchers? I don't know...
Sorry for the long post. You struck a chord. :)
Disclaimer: I am no authority in this field. Nor do I claim to know anything. Just some personal observations and comments. No harm intended to researchers, enthusiasts and casual readers. |
| Sat 24 Apr | nobody | I agree with some of you. An AI that understands spoken languange is good enough. It doesn't need a central intelligence like humans have.
As an example take the computer from Star Trek TNG. |
| Sat 24 Apr | matt | Good points, but I think you put too much weight on the fact that, yes, the computer runs on a deterministic substrate of CPU instructions, microcode, silicon, whatever. Depending on your interpretation of quantum mechanics and so forth, you could say the brain runs on a deterministic substrate too, just that of neurotransmitters and electrical impulses between neurons, rather than silicon.
A lot of what you said about computers (the CPU can't 'think', it just follows instructions) could be rephrased in terms of the brain - neurons can't 'think', they just combine and pass on impulses in a more-or-less deterministic fashion. What matters is that you (or millions of years of evolution in the case of the brain) can build higher-level structures ontop of this deterministic substrate which demonstrate real intelligence. It's just damned hard, is all, and not something we've really figured out yet (perhaps never will) |
| Sat 24 Apr | www.marktaw.com | Read some stuff by Marvin Minsky, and then get back to us. :-) |
| Sat 24 Apr | Rick | Minsky introduced Neural Networks fifty years ago this year. What's been accomplished with them or anything else in AI? They need to know when to give up... |
| Sat 24 Apr | www.marktaw.com | Actually, at the MIT museum in Boston there's this neverending video with Alan Alda where he talks about all sorts of cutting edge AI stuff. From the robotic soccer matches (no human intervention allowed once the games start) to a robot that walks around an art gallery talking to people and reacting to them, and even getting moody when it's been left alone too long, to a robot that has facial recognition to the famous Honda Robot, to a robot that sort of hops along like a kangaroo - the important thing is it manages to keep itself upright - there's a lot of stuff going on.
And of course Deep Blue (chess), Blondie24 (checkers) and other game playing computers.
In fact, on the subject of Neural Networks, Blondie24 is a neural network that taught itself to play checkers using a generational algorithm. Thousands of generations later, it was a top ranking Yahoo.com checker player. I think that's a little progress from 1951. |
| Sat 24 Apr | greim | > Personally, I like that my computer only does
> what I tell it.
Some things you definetely want to control explicitly, but do you care about things like buffer sizes, deletion of cache files, configuring optimal index space, etc., or would they better be handled 'organically' by an entity that is intuitively connected to, and primarily concerned with, the health of the overall system?
> Do we even _understand_ what human
> intelligence is?
I think we actually understand quite a bit on a high level. Getting an education, learning a craft, learning to survive in a wild environment; these are fairly easy to understand. It's the implementation that eludes us.
> OK. Now you are talking 'Matrix'.
Well, yes, but also every level of annoyance between total apocalypse and losing your job to a better qualified robot.
> In hardware terms, computers do _not_learn.
Computers do learn, but suck at it because a separate intelligence (you) has to clarify every detail and spoon-feed the machine. People are taught by other people, but also directly by their environment.
> It is always amusing to hear what software
> guys/gals think about AI.'
Glad you got a kick out of it. I'll be here all week...
> Read some stuff by Marvin Minsky, and then get
> back to us.'
If you have any specific recommendations of his work (or work of other notable writers on the topic) I'd definitely be interested. |
| Sat 24 Apr | greim | > Just out of curiosity: why do you say the
> brain does parallel processing?
For example, when you cross the street, assuming you've crossed streets many times before, every previous similar experience weighs in on your current action. Your brain also doesn't remember them as a statistical average, but can access each scenario independently, and a subtle detail like tires squealing in the distance can affect your decision to step across based on a previous encounter or a story you heard once. Now the following statement is an assumption, maybe, but the brain doesn't loop through these previous scenarios each discretely, but rather they just passively impose their lessons simultaneously, with no apparent effort. This is amazingly parallel. |
| Sat 24 Apr | grunt | I could be way off here, but I'd think whatever it is that makes us intelligent is perhaps software running on hardware. Call it your soul or your mind, whatever you like.
A dead person is the same as a living person as far as the body goes. I am talking here a person who died of natural causes. Even if you fixed up their body somehow, you can't put back whatever it was that makes the body move, talk, laugh, cry, etc... When she is dead, the magic is gone.
It could very well be that the brain is the hardware where intelligence lives but the brain itself is not necessarily the source of it. |
| Sun 25 Apr | Dr. Luv | You are way off there... a dead person is not "the same as a living person as far as the body goes" because cells in the dead person cannot react chemically to process ATP due to extreme chemical imbalance (such as lactic acidosis), and the cell walls break. The bodies are not the same. |
| Sun 25 Apr | grunt | I think the argument that brains work much differently than computers is still valid. Researchers do not know how information is stored and processed in the brain other than the fact that the connections amongst neurons have a role in the process. There is no RAM in the brain where information is stored and retrieved from, no specific processing elements that works on that information. They don't know how the collection of neurons work on the information to produce the different results. Each neuron could be like a CPU or they might be dumber than that.
They have tests where the researcher touches a probe to a patient's brain, and the patient immediately recalls a memory from years ago. They have been conducting tests of this nature for a long time. I don't know if that revealed anything. Maybe it did, but they don't want to divulge the information.
I also know the researchers mapped out the entire neuron connections of a small worm a long while ago. I can't remember what type of worm it is. I don't know if that means anything either. They can simulate the thing, but does that tell them anything? Not sure...
I particularly like how Rodney Brooks (MIT) approaches the whole thing in one of his books. He explains how he implemented a primitive animal like robot a'la Marvin Minsky. The very low level control of the robot is accomplished by a bunch of microcontrollers controlling the movements of the legs of the robot. That's all that layer knows. The next higher up level of control comes from another layer which knows basic action primitives such as move forward, stop, turn. The motors follow the impulses sent down from this upper layer without actually knowing what they mean. Yet a third layer implements higher functions like 'move towards light (food)', 'avoid obsticles'. Each higher level layer sends down commands to the lower layer in a way the lower layer will understand. The higher layers can also suppress the instinctive actions of the lower layers if need be. The layers work collectively as a 'society of mind'.
I think the book was called: 'Cambrian Intelligence: The Early History of the New AI'. I could be wrong. |
| Sun 25 Apr | Philo | 'Let's focus on creating the intelligence before we even start worrying about its implications.'
I think we just found the guy that's going to create SkyNet.
Philo |
| Sun 25 Apr | grunt | > I think we just found the guy that's going to create
> SkyNet.
Good one! :) |
|
| Perfectionism | Fri 23 Apr | A madman laughing at the rain. |
| Great article Joel. Perfectionism just gets in the way. It was my greatest weakness. (Although saying that an interview without written permission from a psychiatrist would be folly.)
Ive done a couple things to overcome it. Namely, I made several signs and post it notes that I stuck to my computer/walls so now I see It doesnt have to be perfect., Perfect is a waste of time. and You dont have to be perfect. etc etc... Finally got it through my head to just do what had to be done to the best of my ability and forget about obsessing over stupid things.
Heck I even carried this over into other things like mowing the lawn. Used to have to be perfect. No dandelions, no blade of grass taller or shorter than the next etc.. Now I just mow the darn lawn and forget about it. Not that I do a bad job, its just that Im not obsessed about it anymore. I have better things to do with my time. |
| Fri 23 Apr | www.marktaw.com | Huh? What? Damn, I was almost sure Joel was secretly indicating he was a fan of The Apprentice. I mean... it all fits together, perfectionism, tv shows about work.... |
| Fri 23 Apr | www.marktaw.com | Wow. I'd respond to that post if I had any clue what it was about. Heck I'll respond to it anyway.
Did I mention it's 5:00 on Friday? |
| Fri 23 Apr | Ron | I don't get what the big deal is. With software, if someone finds a bug, you put it in the database and assign it a priority. You fix from highest priority to lowest priority, and the lowest priority ones (like "lower half of 'g' doesn't link") may sit around for a couple years until they get fixed, if ever. So what? |
| Fri 23 Apr | Herbert Sitz | Ron -- So I guess you aren't one of the people that 'perfectionism' poses any problems for.
Some people tend to fixate or obsess on a single thing, often a not-very-important thing, and can't let go until it's done perfectly. You don't have that problem, so maybe it seems a bit strange to you. But there are a lot of people out there who are plagued with this tendency to greater or lesser degrees, so in any case it's good for you to know that such a thing exists. |
| Fri 23 Apr | Stephen Jones | As the two minute thread points out some bugs take longer to put into the database than they would to fix.
It appears Joel consciously decided not to fix that one because the fix would have its own problems.
The point about little bugs was given in one of the books Joel recommends 'Zen and the Art of Motorcycle Maintenance', where the author comments how he can't understand his non-technical friends who are prepared to live for years with the small but cumulative annoyance of a leaking faucet rather than just fixiing it. |
| Fri 23 Apr | Martha | The perfectionism article brought one of my favorite sayings to mind (and not in a good way): Don't let the best be the enemy of the good.
To put it another way, it's possible to pay attention to details without going to obsessive-compulsive levels. Just because you can't be perfect about something doesn't mean you shouldn't be as good as you can be. |
| Fri 23 Apr | no name | In case nobody has pointed it out already, perfectionists are actually people that avoid doing anything because they're afraid of the results not being perfect. |
| Fri 23 Apr | Fothy | Its a bit much when so much gets posted cause the bottom part of the "g" doesn't click. There is perfection and then their is just being picky. How many people have ever actually clicked on that as a link? |
| Fri 23 Apr | Stilnox - The Interaction Designer from Bucharest | > In case nobody has pointed it out already,
> perfectionists are actually people that avoid doing
> anything because they're afraid of the results
> not being perfect.
True, true,count one more here. The perfectionism is also a main ingredient of procrastination, which leads to depression.
So I take an antidepressive every morning and a nice sleep-pill when I go to bed.
In the mean time I am stuck in designing my dream CMS (analysis paralisys). Lucky, I have this Interaction Design gig that pays the bills so I am not on the street yet.
So if any of you are suffering of perfectionism, prepare for the depression storm and check-in with a psychiatrist to help you- as Joel told to that chap. |
| Fri 23 Apr | Rick | Perfectionism also creates a highly-polished app that customers do notice... |
| Fri 23 Apr | dir at badblue com | My favorite technology leadership quote comes from Patton.
'A good plan executed today always beats a perfect plan tomorrow'
Perhaps I'm paraphrasing, but that's the gist of it. |
| Sat 24 Apr | Fothy | >>Perfectionism also creates a highly-polished app that customers do notice... <<
People don't usually notice things that are correct - they tend to notice things that are incorrect or don't behave as they would expect. |
| Sat 24 Apr | VPC | >>Perfectionism also creates a highly-polished app that customers do notice... <<
But remember that even 'highly-polished app' is never
perfect. There's always something you can improve. So,
stop wasting time here and go back to work ;)
Seriouslly, highly-polished apps are not that hard to
create. You just have to eat some of your dogfood, and if
lots of users really hate a feature just change it. If I was
Steve Jobs I would have killed that silly Dock long time ago.
But I'm not.
>> People don't usually notice things that are correct - they tend to notice things that are incorrect or don't behave as they would expect.
Mac users are perfect (uh!?) example for that. They can't
articulate why they like Mac, but most of them would refuse
to use anything else.
It really pays off to make an app feel better and it's usually
little details that create such feeling. I think I've learnt from
Mac that it is just good enough if you can give users feel
of control and security. Usually all it takes is to affirm 99%
of users that they are not too stupid to use your app. And
after a while, they'll learn how to use it better and smarter.
Isn't that a whole concept of Visual Basic? And reason for
it's success?
Some programmers could contemplate indents for several
minutes. Perfectionism? But after adding so many /* --- */s
and //====s to their source, they hate to check for error
codes or think that compiler warnings are not that bad.
God, people are so different. |
| Sun 25 Apr | Aaron F Stanton | 'The perfectionism is also a main ingredient of procrastination, which leads to depression.'
Wow, that strikes frighteningly close to home for me. |
|
| Generative Programming aka Modern C++ | Fri 23 Apr | Curious Dev Manager |
| Just curious how many shops are using this template heavy method of development? If you are using it, is it limited to making use of Boost or are you retooling to move full bore in this direction? |
| Fri 23 Apr | BadgerBadgerBadger | If your project needs to be heavily data-driven at runtime, the template-heavy approach may be detrimental since it can easily cause you to make things more code-driven than you might prefer (I'm not saying it _has_ to be that way, but that's the path of least resistance unfortunately).
But more importantly, this kind of approach tends to make build times skyrocket. Even if you use tools like IncrediBuild, they'll only help your compile times; linking will still be extremely painful. If your development style is predicated on rapid iteration, going template crazy is the worst thing you can possibly do for your productivity.
All this policy-oriented 'Modern C++ Design' template stuff may be cool/new/whatever, but it has some very pragmatic ramifications which affect projects that are either large, require rapid iterative turnaround, or both. Caveat emptor. |
| Fri 23 Apr | Roose | That response was spot on... I think it is a nice idea and sometimes very elegant an interesting (sometimes not). But I would be very surprised if anyone goes full bore on these techniques in a real software shop which actually ships regularly.
It is basically only useful when you need code that is both maximally flexible and maximally efficient. If you just want flexible code, do things at runtime rather than at compile time (which is basically the point of modern C++, to do as much calculation as possible at compile time). If you need maximally efficient code, you're better off optimizing what you need rather than optimizing everything.
It also tends to trades off space efficiency for time efficiency, which is not always what you want either. |
| Fri 23 Apr | Craig | We are using Boost and a bit of Loki, the Loki stuff could probably be replaced by boost::mpl now...., but anyway.
It's about using common sense, use it when and where it is useful.
Let it complement what you currently do.
On the current project we are using Lambda, Regex, Spirit, Smart Pointers, MPL, Date Time, Formating, Any, Utility and Function Pointers.
It's all useful stuff, compile times do get larger, but you tend to catch errors at compile time, rather than runtime.
Also you sometimes have to stop over zealous programmers attempting to write incomprehencible compile time code, but this is something they probably have a tendancy to do anyway.
So in summary, it's worked great for us :), just be careful. |
| Fri 23 Apr | Craig | BTW, this is a large scale commercial Telco product.
Which is in it's second shipping version. |
| Fri 23 Apr | Tito | All of the 'template metaprogramming' described in modern cpp design, the boost libraries (notably boost::mpl), etc. isn't really geared towards run of the mill application programing. What it IS geared toward is writing libaries to be used by said applications.
If you aren't writing a library of some sort, then you won't see need these intricacies. Just use the libraries and be happy. That being said, it is nice to have the option to create some powerful libraries of your own, just do so out of need.
Another time to consider using advanced template techniques is anytime you are considering writing or buying a wizard or code generator. In most situations I've seen where a code generator was required, either the language was weak or the libraries were weak. |
| Fri 23 Apr | Roose | Hm, that is a good way to say it... basically only use it for libraries. Libraries are the prime example of code where you need to be maximally efficient and maximally flexible. You are willing to trade off development time for efficiency and flexibility, because the library is supposed to be reused and thus save you development time in the future.
But typical application code does not need any of those techniques (nor have I really seen any application code that uses them). |
| Sat 24 Apr | Curious Dev Manager | We are starting to use it heavily in for applications (MPL and all) in a commercial programming context. What this means in our shop is that our application frameworks (mostly server-side) have been rewritten to be generative.
It is too early to tell if this has been a good move, we are still building out the frameworks. Compile times have definitely gone up, but server development isn't nearly as iterative as UI work. We do spend some time fighting the compiler as well (MSVC 7.1) -- including modifying designs to be more 'compilable.'
Just trying to get a sense for how far out on the bleeding edge we are. Seems like we are pretty far out there from the other responses. |
| Sat 24 Apr | Jorel on Software | While the technique may be OK (or cool or elegant or whatever) the problem is in finding people that understand the technique.
For an average company that hires average programmers it's probably not a good idea to use cutting edge techniques. |
| Sat 24 Apr | Craig | To ' Curious Dev Manager '
I'm curious, what kind of uses are you finding for MPL? |
| Sun 25 Apr | son of parnas | If it is an embedded telco product than it is likely
your memory requirements will go through the
roof. |
| Sun 25 Apr | Curious Dev Manager | We primarily use MPL to define and operate on variable parameter lists when we want type safety. For example, we use it describe both the parameters and the result set for our stored procedure execution library. |
| Sun 25 Apr | Craig | What advantage do you gain over using tuples? |
|
| Does $279 seem much cheaper than $299? | Fri 23 Apr | Edward |
| For business applications, Ive heard that one pricing point is $300 because that is a typical amount that many can spend without getting a signature from someone. So, given that they [typically] wont be spending their own money, do you think Id just be "throwing away" those extra $20 if I price at $279 rather than $299? Or do you think that $279 would look *much* less expensive to them mentally, thus causing more sales? |
| Fri 23 Apr | Jack in Yankee's stadium | I think most people know that $279 is less than $299. So there you go. |
| Fri 23 Apr | Edward | Very inciteful comment :-/ |
| Fri 23 Apr | Mr. Analogy | Better way to ask:
Answer quickly without calculating:
How much do you think you'll save on a $299 product if it's on sale for $279?
Less than 5%
5%
10%
20%
More than 20%
Yes, $279, in my head, gets approximated ('remembered' or 'encoded' ) as 'less than $300, or abit more than $250' wheras $299 gets rounded up to $300. |
| Fri 23 Apr | Jack in Yankee's stadium | No problem bro. |
| Fri 23 Apr | TickTock | I round them both up to $300 |
| Fri 23 Apr | Mr. Analogy | My theory (I do marketing in addition to programming) is that math-challenged people (that's most people) have a difficult time with a number like $279.
Give 'em a nice round number and they're fine. Give them $279 and they might approximate it to $280, but even that is too 'complicated' for the math-challenged, so they might then approximate that as 'more than $250' or 'less than $300' as above.
But, give 'em $299, and even they are smart enough to know that's really $300 (practically speaking).
it's like settign your price at 2.79E2. It (somewhat) effectively 'hides' the price. |
| Fri 23 Apr | whatever | Don't forget sales tax. Both those values are over $300.00 where I live. |
| Fri 23 Apr | RH | My wife always rounds down. If something costs $29.95, she will say it costs $29. If it costs $279 she will probably say it costs $270. If it costs $33,697.23 she will probably say it costs $33,000.
On the other hand I always round up. This has been know to result in some... discussions.
But it doesn't really answer the question. |
| Fri 23 Apr | Ron | Employees who have authorization to buy "small" things really don't care about saving every dollar (if anything at all), so nobody is going to say $299 is too expensive but $279 is ok. But like you point out, $300 may be a cutoff for certain expenditures so that's a decent point to stay under. Price it at $299. |
| Fri 23 Apr | df | 'My wife always rounds down. If something costs $29.95, she will say it costs $29. If it costs $279 she will probably say it costs $270. '
Interesting. My wife does the same thing, though only for things that she wants. Her round-down scale tends to be much higher as well ($29.95 becomes '$20' :-)). I round up. Actually, now that I think about it I round down (and ignore taxes, shipping, etc) whatever I want as well... |
| Fri 23 Apr | - former car owner in Queens | Maybe I'm alone in this, but I always find prices ending in 9 (or .99, or for gasoline .999) to be mildly insulting - like the marketeers expect me to be fooled into making my purchase decision based on the rounded-down number. (I'm definitely in the mentally-round-everything-up camp).
By the same token, I find whole-number prices (e.g. $280 vs. $300 for this discussion) just *feel* more intellectually honest, somehow, and I usually have a corresponding automatic favorable impression of the item or merchant.
But that's just me... |
| Fri 23 Apr | no name | By the way dude -- what happened to your car? |
| Fri 23 Apr | - former car owner in Queens | I got sick of buying gas at $xx9.999. |
| Fri 23 Apr | yet another anon | I differentiate between $149 and $199, but after $200 I really only think in increments of $100. So $279 and $299 look the same to me on a decision-making basis.
Also, my wife rounds down too when sdhe wants to justify a purchase to me. When I want to justify a purchase to her, I just mumble. |
| Fri 23 Apr | Dennis Forbes | Funny you mention. Here in Ontario the gas retailers have been playing a little waltz where they all jack their prices up to 79.9 cents / L, and then they slowly drop, hitting about 64 cents/L by about Wednesday, and on Thursday they're backup to 79.9 cents. It's absolutely absurd. |
| Fri 23 Apr | pdq | Why is there such a big price difference between Ontario and Quebec? |
| Fri 23 Apr | Aussie Chick | Actually $299 appeals more to me then $279. I guess with $299 I just think '$300', but with $279 it is not really $300, so I just have to keep saying $279. ie I have to think.
If you said $260 or $270, I would *feel* better about it then $299, but if you said $280, or $290, then I would still *feel* better about $299.
Of course this is just how I *feel*.
I think there are soe good studies about all of this. |
| Fri 23 Apr | Code Monkey | Well just put it as $299 with a $20 rebate and make sure to put conditions like "rebate form needs to be signed in triplicate with blood". You get all the advantages of the $279 price with none of the cost. Seems to be how business pricing is done nowadays :-) |
| Fri 23 Apr | Philo | Former car owner, I agree, yet I still find myself thinking of $29,999 as 'twenty thousandish' - it takes mental effort to make it 'thirty thousand.'
I have to believe that our brains are wired to look at a string of numbers as the first number, number of places, and 'and a little more.' While there are exceptions, in general millions of marketeers don't do stuff that doesn't work.
Philo |
| Fri 23 Apr | Pro Marketer | Actually, the price you want is $297.
Many, many split test comparisons have shown that numbers ending in 7 perform better than other numbers, and also that people don't differentiate much between 'barely under $300' and 'a little under $300'
In other words, the next logical price break is $250, so anything between $251 and $299 is going to have nearly the same conversion ratio- except, as I said, numbers ending in 7. |
| Fri 23 Apr | Canuck | I read somewhere (it could very well have been on this site), that goods <= $199 are an impluse buy. Its cheap enough that I just might grab it.
If you ascribe to the above notion, then $279 OR $299 are both in 'decision making' territory and not in the 'honey, look what I bought' price bracket.
Something to think about, perhaps. |
| Sat 24 Apr | Edward | Thanks everyone for the insight... this is turning out to be a great thread so far!
Mr. Anagoly:
Just to clarify, you're suggesting that using a price that is hard for the math-challenged people to deal with is a good thing, right? Since it is hard for them to 'do the math,' they're fine with approximating, and therefore $279 becomes 'a little more than $250' etc. Could there be any cases where 'making them think' is a bad thing? Maybe they just don't want to 'figure it out' and just purchase something with a nice round, even, price?
Aussie Chick:
Do you have any sources to any of those studies you mention?
Philo:
Good point! I find myself struggling with the same issue at times. Why do you think we have these struggles?
Pro Marketer:
Very interesting. So basically you'd agree with my original statement that I'd be 'throwing away $20' on each order if I price at $279 since not many differentiate much between the two. Correct? Of course the point you bring up about ending with 7 sounds interesting in and of itself. I'd like to read more about that if you have any sources to point out that'd be great and much appreciated.
Canuk:
Do you think impulse buys are important for business software? My guess is that they could be, but I wonder if you've got another opinion?
All:
Also, the question of sales tax was brought up (and shipping would probably apply as well). Do you think most business policies account for this? What I mean is, will $299 purchases likely need a signature because after tax/shipping it will pierce the threshold? Or will most places allow purchases as long as the 'purchase price' is below the threshold? I'm only asking because I've never needed this type of approval before. What are your policies, or the policies for where you work?
Another point, do you think that 'rounding' stuff goes on for business purchases? Especially where they aren't likely to be spending their own money anyway? |
| Sat 24 Apr | What I know | Gas retailers put their prices up on Thursday then reduce them through the week because many people get paid Thursday or Friday, and that's when they buy their petrol. People also buy petrol before or for the weekend.
So retailers adjust their pricing to maximise their revenue.
It's the same with airlines, who use complex software to reserve a certain number of seats for late buyers. Those late buyers pay two, three or more times the price that other travellers pay, because if they need to travel soon, it's probably important enough that they will pay extra. |
| Sat 24 Apr | Canuck | RE: Do you think impulse buys are important for business software?
Interestingly enough, I can give you two perspectives on this.
Firstly, I own a small software company that does consulting work. After evaluating tons of products, $199 always seems like a steal to me. I wouldn' t hesitate for a second to purchase at this price point if the product suited my needs.
Now, anything above $500 usually merits some consideration. More often than not, I don't buy. Since the company is so small, Excel handles about 90% of the things we need to do. The odd Access database to cover the rest.
So, in my eyes as a small business owner, your $279 price point is a grey area.
Now for the flip side ...
I have consulted with a product group in a large (30 000+ employee) company for several years now. I am often tasked with sourcing software for the group for a variety of things. In this organization, $1000 is the magic number. Not because of the 'sign off' factor, but because at this price, the accounting department classifies the purchase as an 'asset' vs. 'expense'. For reasons unknown to me (although I can fathom a guess or two), purhcases over $1000 cause massive mounds of paper work and signatures. Needless to say, the $279 vs $299 wouldn't make much a difference to this group.
Ultimately, the point I am illustrating is that pricing is target market specific. You have to know who you are selling your product to.
On that note, what is your product and who are you selling to? |
| Sun 25 Apr | no name | I read somewhere that based on a lab study, there is a bigger chance that people buy stuff where the price tag contains a 7. so maybe $279 is more than $299 in the long run. |
| Sun 25 Apr | Programmer Turned MBA | There is a bit of a 'magic number' effect in prices (sevens versus nines, rounding down, etc,) but the strength of the effect is generally very small.
Remember, 95% of people buy products for benefits to themselves (i.e. because it helps them do something they need to do.) The other 5% buy for 'new' features.
In a corporate environment, where people aren't spending their own money and +/- $20 is 'rounding error,' magic number effects are going to have at best marginal influence in the decision process.
Oh, and the reason why capital puchases involve so much more paperwork is usually because (a) tracking depreciation or ammortization over multiple years is more difficult than writing off expenses in a single year, and (b) changes in capital affect some financial planning models that are insensitive to changes in expenses. |
|
| And that fifth column thing with Scoble | Fri 23 Apr | Prakash S |
| Which one are you talking about? Can you link to it?
Thanks, |
| Fri 23 Apr | #5 Is Alive | This is a reference to Scoble's having been named one of the top five FrontPage users in the world by Microsoft. He wrote a column about it at: http://radio.weblogs.com/0001011/2003/11/22.html . |
| Fri 23 Apr | Prakash S | thanks |
| Fri 23 Apr | www.marktaw.com | 'I all these the 'five pillars of conversational software.' FrontPage doesn't have them. Sharepoint doesn't have them. What will be the first Microsoft product to have them? Still waiting. :-)'
I don't know, but I can tell you it will likely have grammer check. |
| Fri 23 Apr | Chris | I still don't get it? Can someone explain? |
| Sun 25 Apr | Will | 'Fifth Column' is a term that refers to people (usually civilians) who are hidden enemy sympathizers. If I remember right, the phrase was tossed around a lot during the cold war/McCarthy days. Here's a quick Googled definition.
http://ask.yahoo.com/ask/20000110.html
I'm not clear on how that refers to Scoble as he's hardly operating in a clandestine mode. I assume Joel calls him a 'Fifth Column' because he explicitly identifies himself as working for Microsoft and yet often criticizes minor Microsoft policy/decisions. The brilliance is that this makes him seem more credible, especially to a techie audience, helping him deliver his larger message of Microsoft developer evangelism.
Even more brilliant is the fact that he's open about all of this, which renders him even more credible. |
| Sun 25 Apr | Philo | Why does everyone who writes have to have an ulterior motive or grand plan? Maybe Scoble simply writes what he believes without all this 'I'll criticize Microsoft a little so people will believe me, then I'll be open about it so people believe me, which will bolster my credibility by x^5...'
Scoble is who he is - you read his stuff and understand his background and weigh his opinions, especially the stuff he backs up with facts. Just like we read Joel's stuff and do the same.
Philo |
| Sun 25 Apr | Flasher T | ''Fifth Column' is a term that refers to people (usually civilians) who are hidden enemy sympathizers. If I remember right, the phrase was tossed around a lot during the cold war/McCarthy days. Here's a quick Googled definition.'
Fifth Column is a term that comes from the Spanish Civil War, when Franco's forces were moving to Madrid in four columns. The fifth column were the people living in Madrid who were on Franco's side and did much to help him capture the city. |
|
| Can SQLServer index microsoft document formats? | Fri 23 Apr | sumit |
| Can SQLServer index the text in word,powerpoint,excel etc..? |
| Fri 23 Apr | Just me (Sir to you) | If I remember correctly it relies on the indexing service, wich can index anything for which it has an IFilter ( http://msdn.microsoft.com/library/default.asp?url=/library/en-us/indexsrv/html/ixrefint_9sfm.asp ). That includes the office formats and also e.g. PDF's and many others (e.g. http://www.ifiltershop.com/ ) |
| Fri 23 Apr | Brad Wilson | The Indexing Service is not very good. It's not bad, mind you, but not good, either.
We solved this problem by indexing with dtSearch. It's extremely flexible, and supports a TON of document formats. It even problems some document conversion facilities for us to give previews of native documents in HTML and Text for our users. |
| Fri 23 Apr | sumit | Brad, does dtsearch integrate with 3rd party products - does it have API's etc? |
| Fri 23 Apr | Brad Wilson | Yes, it has extensive APIs. We use it from .NET, with a RCW wrapped around its COM interface APIs. I seem to recall it also has native C++ APIs, among other things. |
| Fri 23 Apr | Philo | You guys are killin' me, you know that, don't you? I mean, they just fall into my lap and I'm supposed to ignore them?
Philo |
| Sat 24 Apr | Unfocused Focused | Remember Philo, the S word uses the index server as well.
:-) |
| Sat 24 Apr | Philo | Actually it doesn't - S*P* 2001 did, because files were kept in OS folders. S*P* 2003 uses SQL Server's full-text search engine, since all files are stored in SQL Server as blobs.
Philo |
| Sun 25 Apr | Unfocused Focused | I hate to correct you Philo, but on this one you're wrong.
WSS uses the full text indexing of SQL server to do searches (which is why you don't get searches if you let it install and use MSDE.) SPS 2003 uses it's own indexing service which is bascially Index server with some custom management tools built into the product. It has to, otherwise it couldn't index content external to the database. |
| Sun 25 Apr | Philo | That's bizarre. I remember typing 'I'm not sure how SPS indexes external content - I'll have to find out' but I didn't post it. :/
I think you're right that it uses indexing services, but I haven't gone to dig it up yet.
Anyway, thanks for the clarification!
Philo |
|
| The Best Thing on Television, Ever | Fri 23 Apr | Name withheld out of cowardice |
| I havent seen it but I plan to. As long as were on the subject I would like to recommend the recent DVD release of "Freaks and Geeks". My guess is that most of the posters on this site were one or the other back in high school. I think the show is great. |
| Fri 23 Apr | Off topic Fan | The Best Thing on Television ever was surely the short lived Wonderfalls. Can't wait for the DVD so i can see how it all pans out. |
| Fri 23 Apr | sgf | A penguin. |
| Fri 23 Apr | Freakish Geek | Yep, Freaks and Geeks was money. |
| Fri 23 Apr | Geekish Freak | Yeah, F & G was the shiznit, yo! |
| Fri 23 Apr | Wake up | Dark screen with dust on it.
Television only appeals to witless people. |
| Fri 23 Apr | sedwo | Wow. That's witty.
Give us some more. |
| Fri 23 Apr | My Cousin Vinniwashtharam | dark screen with dust
hooterville
oliver can't grow corn |
| Fri 23 Apr | Brad Wilson | I think it's hilarious how much the anti-television people are missing in their crusade against 'stupidity'. There's some incredibly smart television available.
+1 for Freaks and Geeks. My wife and I watched it and loved it the first time around, and were really disappointed when it got canned after the first season. I was over-joyed to have the DVDs in hand and watch it all over again. |
| Fri 23 Apr | What are you lookin' at? | Actually, I was a three sport letterman (made All-State in football) and used to beat up freaks and geeks like you after out-hacking them in computer class.
Losers. |
| Fri 23 Apr | Ron | Ooooh, so tough... and now look at you! |
| Fri 23 Apr | Whatever, man, whatever | 'Actually, I was a three sport letterman (made All-State in football) and used to beat up freaks and geeks like you after out-hacking them in computer class. '
Riiiight. Then you woke up. |
| Fri 23 Apr | no name | I think he's also that "undercover cop" from the other thread that pulls over people who speed past him. And he's also in the CIA. |
| Fri 23 Apr | Name withheld out of cowardice | I'm lookin' at what appears to by a large pile of dog crap. You gotta problem you wanna discuss with me? |
| Fri 23 Apr | Name withheld out of cowardice | I really enjoy people who think a combination of claiming not to watch TV and "reading books" will convince people they are intelligent. It is a rather sad fetish. Most TV is awful. Most books are awful. Discrimination is the key. |
| Fri 23 Apr | Brad Wilson | 'Most TV is awful. Most books are awful. Discrimination is the key.'
No disagreement here! :) |
| Fri 23 Apr | OMM fan | ---
The only compulsion stronger than the one that drives people who don't watch TV to tell you about it every few minutes is the mysterious force that compels people who live in New York City to mention that as often as possible.
---
The colorful gentlemen of OldManMurray had a few things to say about book snobs, this among them. Visitors beware.
http://www.google.com/search?safe=active&q=books+tv+site%3Aoldmanmurray.com |
| Fri 23 Apr | pdq | The Sopranos is the best thing I've seen on TV in a while. That and all of the Discovery/History Channel stuff on engineering disasters. |
| Fri 23 Apr | Slartibartfast | 'Actually, I was a three sport letterman (made All-State in football) and used to beat up freaks and geeks like you after out-hacking them in computer class. '
I was also a three sport letterman (basketball, cross country, and track & field) . Funny thing was that I despised most of the jocks in school. First day at PE, I whacked the school bully whey he was going up for a layup. There was a collective gasp. The bully pushed me, but I just grinned and kept playing. After that everybody had a hard time putting a label of me.
People like you will forever be in my crosshairs. Better that I don't run across you on a cour, or your ass will be on the floor a lot. |
| Fri 23 Apr | Zekaric | What WONDERFALLS got canned! Aww damnit! No wonder I couldn't find it on TV lately. It was a little weird but fun to watch. Why are all the shows I like short lived. :( |
| Fri 23 Apr | Roose | It never ceases to amaze me how the onion can peg people so accurately:
see article 'Area Man Constantly Mentioning He Doesn't Own Television'
http://216.239.53.104/search?q=cache:a4JDWHgAkQMJ:www.theonion.com/onion3604/doesnt_own_television.html+area+man+television&hl=en
(link was broken, I had to find it in the cache)
I already posted it before, but it comes up so often : ) |
| Fri 23 Apr | Chris Tavares | I was the typical geek in high school.
You know, I really don't want to relive the experience, or even be reminded of it.
Why does everyone thing 'Hey, you were a geek, this is about you, you'll love it?' I hated most of high school and never want to go back there, even in television, ever again. |
| Fri 23 Apr | yep I'm a geek | Firefly was the best show ever on TV. |
| Fri 23 Apr | GeektotheBloodyEnd | Right on, Chris T. |
| Fri 23 Apr | Aussie Chick | Woohoo.
I scan the tv guide every week, lookin at the early morning timeslots because about once a year they air the re runs of freaks and geeks. I love that show.
Now I can by the dvd. I am seriously excited, I have to go tell my husband because he is asking what all the hollering in the study is about .
...Bet you think I am being sarcastic, well you are wrong. |
| Fri 23 Apr | Aussie Chick | NB re: the guy posting about not having a tv. I was that person. Just stuck my tv in the closest and reclaimed at least 8 hours per week.
Then my brother gave us one for a wedding present, and despite my protest the antenna went up. Despite enjoying certain shows (SG1, survivor, ST) I want the box to go. I don't think it is ever going to happen though. |
| Fri 23 Apr | Aussie Chick | Oh, and anyone buying this on Amazon? Don't they have some sort of 'recommend a friend' get it cheaper sort of a deal? |
| Fri 23 Apr | fool for python | books have more channels than tv. a discriminating person can find n (pick a number) books for every good hour of tv.
n > 10 |
| Fri 23 Apr | What are you lookin' at? | Don't make me come over there, geeks. |
| Fri 23 Apr | Nix | Nothing will be better than Seinfeld ever. |
| Fri 23 Apr | Wake up | Reporting your habits, such as TV avoidance or book reading, could never convince anyone worth convincing that you're intelligent. Only intelligent discussion can do that.
Avoiding TV doesn't absolutely require |