FM Shared Notes
Last edited January 1, 2009
More by fmavituna »
Camels and Rubber Duckies - Joel on Software
www.joelonsoftware.com/articles/CamelsandRubberDuc...

Working my way backwards, this business about segmenting? It pisses the heck off of people. People want to feel they're paying a fair price. They don't want to think they're paying extra just because they're not clever enough to find the magic coupon code. The airline industry got really, really good at segmenting and ended up charging literally a different price to every single person on the plane. As a result most people felt they weren't getting the best deal, and they didn't like the airlines. When a new alternative arose in the form of low cost carriers (Southwest, jetBlue, etc.) customers had no loyalty whatsover to the legacy airlines that had been trying to pick their pockets for all those years.

Weblogs Forum - How Much Unit Test Coverage Do You Need? - The Testivus Answer
www.artima.com/forums/flat.jsp?forum=106&thread=20...

Morgan Conrad asked: "What is Testivus' wisdom concerning the proper percentage of test coverage?"

Here you go Morgan.

Testivus On Test Coverage

Early one morning, a programmer asked the great master:

“I am ready to write some unit tests. What code coverage should I aim for?”

The great master replied:

“Don’t worry about coverage, just write some good tests.”

The programmer smiled, bowed, and left.

...

Later that day, a second programmer asked the same question.

The great master pointed at a pot of boiling water and said:

“How many grains of rice should put in that pot?”

The programmer, looking puzzled, replied:

“How can I possibly tell you? It depends on how many people you need to feed, how hungry they are, what other food you are serving, how much rice you have available, and so on.”

“Exactly,” said the great master.

The second programmer smiled, bowed, and left.

...

Toward the end of the day, a third programmer came and asked the same question about code coverage.

“Eighty percent and no less!” Replied the master in a stern voice, pounding his fist on the table.

The third programmer smiled, bowed, and left.

...

After this last reply, a young apprentice approached the great master:

“Great master, today I overheard you answer the same question about code coverage with three different answers. Why?”

The great master stood up from his chair:

“Come get some fresh tea with me and let’s talk about it.”

After they filled their cups with smoking hot green tea, the great master began to answer:

“The first programmer is new and just getting started with testing. Right now he has a lot of code and no tests. He has a long way to go; focusing on code coverage at this time would be depressing and quite useless. He’s better off just getting used to writing and running some tests. He can worry about coverage later.”

“The second programmer, on the other hand, is quite experience both at programming and testing. When I replied by asking her how many grains of rice I should put in a pot, I helped her realize that the amount of testing necessary depends on a number of factors, and she knows those factors better than I do – it’s her code after all. There is no single, simple, answer, and she’s smart enough to handle the truth and work with that.”

“I see,” said the young apprentice, “but if there is no single simple answer, then why did you answer the third programmer ‘Eighty percent and no less’?”

The great master laughed so hard and loud that his belly, evidence that he drank more than just green tea, flopped up and down.

“The third programmer wants only simple answers – even when there are no simple answers … and then does not follow them anyway.”

The young apprentice and the grizzled great master finished drinking their tea in contemplative silence.


Blogger is a famous example of a startup that went through really low lows and survived. At one point they ran out of money and everyone left. Evan Williams came in to work the next day, and there was no one but him. What kept him going? Partly that users needed him. He was hosting thousands of people's blogs. He couldn't just let the site die.
How to Start a Startup
paulgraham.com/start.html
During this time you'll do little but work, because when you're not working, your competitors will be. My only leisure activities were running, which I needed to do to keep working anyway, and about fifteen minutes of reading a night. I had a girlfriend for a total of two months during that three year period. Every couple weeks I would take a few hours off to visit a used bookshop or go to a friend's house for dinner. I went to visit my family twice. Otherwise I just worked.
How to Start a Startup
paulgraham.com/start.html
The competitors Google buried would have done better to spend those millions improving their software. Future startups should learn from that mistake. Unless you're in a market where products are as undifferentiated as cigarettes or vodka or laundry detergent, spending a lot on brand advertising is a sign of breakage.
How to Start a Startup
paulgraham.com/start.html
The most important is that you should put users before advertisers, even though the advertisers are paying and users aren't
How to Start a Startup
paulgraham.com/start.html
What matters is not ideas, but the people who have them. Good people can fix bad ideas, but good ideas can't save bad people.
How to Start a Startup
paulgraham.com/start.html
And what I discovered was that business was no great mystery. It's not something like physics or medicine that requires extensive study. You just try to get people to pay you for stuff.
How to Start a Startup
paulgraham.com/start.html

Restaurants with great food seem to prosper no matter what. A restaurant with great food can be expensive, crowded, noisy, dingy, out of the way, and even have bad service, and people will keep coming. It's true that a restaurant with mediocre food can sometimes attract customers through gimmicks. But that approach is very risky. It's more straightforward just to make the food good.
How to Start a Startup
paulgraham.com/start.html
n a startup, your initial plans are almost certain to be wrong in some way, and your first priority should be to figure out where. The only way to do that is to try implementing them.
How to Start a Startup
paulgraham.com/start.html


How to Start a Startup

Want to start a startup? YC applications due Oct 17.

March 2005

(This essay is derived from a talk at the Harvard Computer Society.)

You need three things to create a successful startup: to start with good people, to make something customers actually want, and to spend as little money as possible. Most startups that fail do it because they fail at one of these. A startup that does all three will probably succeed.

And that's kind of exciting, when you think about it, because all three are doable. Hard, but doable. And since a startup that succeeds ordinarily makes its founders rich, that implies getting rich is doable too. Hard, but doable.

If there is one message I'd like to get across about startups, that's it. There is no magically difficult step that requires brilliance to solve.

The Idea

In particular, you don't need a brilliant idea to start a startup around. The way a startup makes money is to offer people better technology than they have now. But what people have now is often so bad that it doesn't take brilliance to do better.

Google's plan, for example, was simply to create a search site that didn't suck. They had three new ideas: index more of the Web, use links to rank search results, and have clean, simple web pages with unintrusive keyword-based ads. Above all, they were determined to make a site that was good to use. No doubt there are great technical tricks within Google, but the overall plan was straightforward. And while they probably have bigger ambitions now, this alone brings them a billion dollars a year. [1]

There are plenty of other areas that are just as backward as search was before Google. I can think of several heuristics for generating ideas for startups, but most reduce to this: look at something people are trying to do, and figure out how to do it in a way that doesn't suck.

For example, dating sites currently suck far worse than search did before Google. They all use the same simple-minded model. They seem to have approached the problem by thinking about how to do database matches instead of how dating works in the real world. An undergrad could build something better as a class project. And yet there's a lot of money at stake. Online dating is a valuable business now, and it might be worth a hundred times as much if it worked.

An idea for a startup, however, is only a beginning. A lot of would-be startup founders think the key to the whole process is the initial idea, and from that point all you have to do is execute. Venture capitalists know better. If you go to VC firms with a brilliant idea that you'll tell them about if they sign a nondisclosure agreement, most will tell you to get lost. That shows how much a mere idea is worth. The market price is less than the inconvenience of signing an NDA.

Another sign of how little the initial idea is worth is the number of startups that change their plan en route. Microsoft's original plan was to make money selling programming languages, of all things. Their current business model didn't occur to them until IBM dropped it in their lap five years later.

Ideas for startups are worth something, certainly, but the trouble is, they're not transferrable. They're not something you could hand to someone else to execute. Their value is mainly as starting points: as questions for the people who had them to continue thinking about.

What matters is not ideas, but the people who have them. Good people can fix bad ideas, but good ideas can't save bad people.

People

What do I mean by good people? One of the best tricks I learned during our startup was a rule for deciding who to hire. Could you describe the person as an animal? It might be hard to translate that into another language, but I think everyone in the US knows what it means. It means someone who takes their work a little too seriously; someone who does what they do so well that they pass right through professional and cross over into obsessive.

What it means specifically depends on the job: a salesperson who just won't take no for an answer; a hacker who will stay up till 4:00 AM rather than go to bed leaving code with a bug in it; a PR person who will cold-call New York Times reporters on their cell phones; a graphic designer who feels physical pain when something is two millimeters out of place.

Almost everyone who worked for us was an animal at what they did. The woman in charge of sales was so tenacious that I used to feel sorry for potential customers on the phone with her. You could sense them squirming on the hook, but you knew there would be no rest for them till they'd signed up.

If you think about people you know, you'll find the animal test is easy to apply. Call the person's image to mind and imagine the sentence "so-and-so is an animal." If you laugh, they're not. You don't need or perhaps even want this quality in big companies, but you need it in a startup.

For programmers we had three additional tests. Was the person genuinely smart? If so, could they actually get things done? And finally, since a few good hackers have unbearable personalities, could we stand to have them around?

That last test filters out surprisingly few people. We could bear any amount of nerdiness if someone was truly smart. What we couldn't stand were people with a lot of attitude. But most of those weren't truly smart, so our third test was largely a restatement of the first.

When nerds are unbearable it's usually because they're trying too hard to seem smart. But the smarter they are, the less pressure they feel to act smart. So as a rule you can recognize genuinely smart people by their ability to say things like "I don't know," "Maybe you're right," and "I don't understand x well enough."

This technique doesn't always work, because people can be influenced by their environment. In the MIT CS department, there seems to be a tradition of acting like a brusque know-it-all. I'm told it derives ultimately from Marvin Minsky, in the same way the classic airline pilot manner is said to derive from Chuck Yeager. Even genuinely smart people start to act this way there, so you have to make allowances.

It helped us to have Robert Morris, who is one of the readiest to say "I don't know" of anyone I've met. (At least, he was before he became a professor at MIT.) No one dared put on attitude around Robert, because he was obviously smarter than they were and yet had zero attitude himself.

Like most startups, ours began with a group of friends, and it was through personal contacts that we got most of the people we hired. This is a crucial difference between startups and big companies. Being friends with someone for even a couple days will tell you more than companies could ever learn in interviews. [2]

It's no coincidence that startups start around universities, because that's where smart people meet. It's not what people learn in classes at MIT and Stanford that has made technology companies spring up around them. They could sing campfire songs in the classes so long as admissions worked the same.

If you start a startup, there's a good chance it will be with people you know from college or grad school. So in theory you ought to try to make friends with as many smart people as you can in school, right? Well, no. Don't make a conscious effort to schmooze; that doesn't work well with hackers.

What you should do in college is work on your own projects. Hackers should do this even if they don't plan to start startups, because it's the only real way to learn how to program. In some cases you may collaborate with other students, and this is the best way to get to know good hackers. The project may even grow into a startup. But once again, I wouldn't aim too directly at either target. Don't force things; just work on stuff you like with people you like.

Ideally you want between two and four founders. It would be hard to start with just one. One person would find the moral weight of starting a company hard to bear. Even Bill Gates, who seems to be able to bear a good deal of moral weight, had to have a co-founder. But you don't want so many founders that the company starts to look like a group photo. Partly because you don't need a lot of people at first, but mainly because the more founders you have, the worse disagreements you'll have. When there are just two or three founders, you know you have to resolve disputes immediately or perish. If there are seven or eight, disagreements can linger and harden into factions. You don't want mere voting; you need unanimity.

In a technology startup, which most startups are, the founders should include technical people. During the Internet Bubble there were a number of startups founded by business people who then went looking for hackers to create their product for them. This doesn't work well. Business people are bad at deciding what to do with technology, because they don't know what the options are, or which kinds of problems are hard and which are easy. And when business people try to hire hackers, they can't tell which ones are good. Even other hackers have a hard time doing that. For business people it's roulette.

Do the founders of a startup have to include business people? That depends. We thought so when we started ours, and we asked several people who were said to know about this mysterious thing called "business" if they would be the president. But they all said no, so I had to do it myself. And what I discovered was that business was no great mystery. It's not something like physics or medicine that requires extensive study. You just try to get people to pay you for stuff.

I think the reason I made such a mystery of business was that I was disgusted by the idea of doing it. I wanted to work in the pure, intellectual world of software, not deal with customers' mundane problems. People who don't want to get dragged into some kind of work often develop a protective incompetence at it. Paul Erdos was particularly good at this. By seeming unable even to cut a grapefruit in half (let alone go to the store and buy one), he forced other people to do such things for him, leaving all his time free for math. Erdos was an extreme case, but most husbands use the same trick to some degree.

Once I was forced to discard my protective incompetence, I found that business was neither so hard nor so boring as I feared. There are esoteric areas of business that are quite hard, like tax law or the pricing of derivatives, but you don't need to know about those in a startup. All you need to know about business to run a startup are commonsense things people knew before there were business schools, or even universities.

If you work your way down the Forbes 400 making an x next to the name of each person with an MBA, you'll learn something important about business school. You don't even hit an MBA till number 22, Phil Knight, the CEO of Nike. There are only four MBAs in the top 50. What you notice in the Forbes 400 are a lot of people with technical backgrounds. Bill Gates, Steve Jobs, Larry Ellison, Michael Dell, Jeff Bezos, Gordon Moore. The rulers of the technology business tend to come from technology, not business. So if you want to invest two years in something that will help you succeed in business, the evidence suggests you'd do better to learn how to hack than get an MBA. [3]

There is one reason you might want to include business people in a startup, though: because you have to have at least one person willing and able to focus on what customers want. Some believe only business people can do this-- that hackers can implement software, but not design it. That's nonsense. There's nothing about knowing how to program that prevents hackers from understanding users, or about not knowing how to program that magically enables business people to understand them.

If you can't understand users, however, you should either learn how or find a co-founder who can. That is the single most important issue for technology startups, and the rock that sinks more of them than anything else.

What Customers Want

It's not just startups that have to worry about this. I think most businesses that fail do it because they don't give customers what they want. Look at restaurants. A large percentage fail, about a quarter in the first year. But can you think of one restaurant that had really good food and went out of business?

Restaurants with great food seem to prosper no matter what. A restaurant with great food can be expensive, crowded, noisy, dingy, out of the way, and even have bad service, and people will keep coming. It's true that a restaurant with mediocre food can sometimes attract customers through gimmicks. But that approach is very risky. It's more straightforward just to make the food good.

It's the same with technology. You hear all kinds of reasons why startups fail. But can you think of one that had a massively popular product and still failed?

In nearly every failed startup, the real problem was that customers didn't want the product. For most, the cause of death is listed as "ran out of funding," but that's only the immediate cause. Why couldn't they get more funding? Probably because the product was a dog, or never seemed likely to be done, or both.

When I was trying to think of the things every startup needed to do, I almost included a fourth: get a version 1 out as soon as you can. But I decided not to, because that's implicit in making something customers want. The only way to make something customers want is to get a prototype in front of them and refine it based on their reactions.

The other approach is what I call the "Hail Mary" strategy. You make elaborate plans for a product, hire a team of engineers to develop it (people who do this tend to use the term "engineer" for hackers), and then find after a year that you've spent two million dollars to develop something no one wants. This was not uncommon during the Bubble, especially in companies run by business types, who thought of software development as something terrifying that therefore had to be carefully planned.

We never even considered that approach. As a Lisp hacker, I come from the tradition of rapid prototyping. I would not claim (at least, not here) that this is the right way to write every program, but it's certainly the right way to write software for a startup. In a startup, your initial plans are almost certain to be wrong in some way, and your first priority should be to figure out where. The only way to do that is to try implementing them.

Like most startups, we changed our plan on the fly. At first we expected our customers to be Web consultants. But it turned out they didn't like us, because our software was easy to use and we hosted the site. It would be too easy for clients to fire them. We also thought we'd be able to sign up a lot of catalog companies, because selling online was a natural extension of their existing business. But in 1996 that was a hard sell. The middle managers we talked to at catalog companies saw the Web not as an opportunity, but as something that meant more work for them.

We did get a few of the more adventurous catalog companies. Among them was Frederick's of Hollywood, which gave us valuable experience dealing with heavy loads on our servers. But most of our users were small, individual merchants who saw the Web as an opportunity to build a business. Some had retail stores, but many only existed online. And so we changed direction to focus on these users. Instead of concentrating on the features Web consultants and catalog companies would want, we worked to make the software easy to use.

I learned something valuable from that. It's worth trying very, very hard to make technology easy to use.

How to Start a Startup
paulgraham.com/start.html
Corollary: Avoid starting a startup to sell things to the biggest company of all, the government. Yes, there are lots of opportunities to sell them technology. But let someone else start those startups.
Bizim halkımızın yazması veya konuşması için kızması gerekir
When you have a hammer, all problems start to look like nails.
 Essentially, if the SaveUser method isn't able to save the user, it should throw an exception. 

Generally speaking, I find it easy to decide what should and shouldn't throw an exception.  I generally ask
myself questions like:
  Is this exceptional,
  Is this expected, 
  Can I continue doing something meaningful at this point and
  Is this something I should be made aware of so I can f ix it, or at least give it a second look
İnternet Teknolojileri Derneği Başkanı: ''internet yasası ifade özgürlüğüyle bağdaşmıyor''

Bilkent Üniversitesi Endüstri Mühendisliği Öğretim görevlisi ve İnternet Teknolojileri Derneği Başkanı Doç. Dr. Mustafa Akgül, Meclis’te görüşülen internet yasası tasarısının ifade özgürlüğüyle bağdaşmayacağını söyledi. Akgül, devletin vatandaşlar adına zararlı içeriği belirlemesinin internetin gelişimine zarar vereceğini savundu...

FM Yorum : Biri ifade ozgurlugu mu dedi? Saka gibi. bizim anlayamadigimiz sorunun internetten buyuk oldugu, ama biz internetciler olarak sadece kendi kicimizi kollamaya calisiyoruz. o da bir sey tabii, hakkini yememek lazim.

One solution is to stoke fear. Fear is a primal emotion, far older than our ability to calculate trade-offs. And when people are truly scared, they're willing to do almost anything to make that feeling go away; lots of other psychological research supports that. Any burglar alarm salesman will tell you that people buy only after they've been robbed, or after one of their neighbors has been robbed. And the fears stoked by 9/11, and the politics surrounding 9/11, have fueled an entire industry devoted to counterterrorism. When emotion takes over like that, people are much less likely to think rationally.

Though effective, fear mongering is not very ethical. The better solution is not to sell security directly, but to include it as part of a more general product or service. Your car comes with safety and security features built in; they're not sold separately. Same with your house. And it should be the same with computers and networks. Vendors need to build security into the products and services that customers actually want. CIOs should include security as an integral part of everything they budget for. Security shouldn't be a separate policy for employees to follow but part of overall IT policy.

 
Security sellers know this, even if they don't understand why, and are continually trying to frame their products in positive results. That's why you see slogans with the basic message, "We take care of security so you can focus on your business," or carefully crafted ROI models that demonstrate how profitable a security purchase can be. But these never seem to work. Security is fundamentally a negative sell.
But Kahneman's and Tversky's experiments contradicted Utility Theory. When faced with a gain, about 85 percent of people chose the sure smaller gain over the risky larger gain. But when faced with a loss, about 70 percent chose the risky larger loss over the sure smaller loss.

...
Lions, for example, chase young or wounded wildebeests because the investment needed to kill them is lower. Mature and healthy prey would probably be more nutritious, but there's a risk of missing lunch entirely if it gets away.
 OWASP Validation Library
 <?xml version="1.0"?> 

<regex>
<name>url</name>
<pattern>^((((https?|ftps?|gopher|telnet|nntp)://)|(mailto:|news:))(%[0-9A-Fa-f]{2}|[-()_.!~*';/?:@&=+$,A-Za-z0-9])+)([).!';/?:,]blank:)?$</pattern>
<description></description>
</regex>

<regex>
<name>email</name>
<pattern>^[\w\-\+\&\*]+(?:\.[\w\-\_\+\&\*]+)*@(?:[\w-]+\.)+[a-zA-Z]{2,7}$</pattern>
<description></description>
</regex>

<regex>
<name>safetext</name>
<pattern>^[a-zA-Z0-9\s.\-]+$</pattern>
<description>Lower and upper case letters and all digits</description>
</regex>

<regex>
<name>digitwords</name>
<pattern>^(zero|one|two|three|four|five|six|seven|eight|nine)$</pattern>
<description>The English words representing the digits 0 to 9</description>
</regex>

<regex>
<name>zip</name>
<pattern>^\d{5}(-\d{4})?$</pattern>
<description>US zip code with optional dash-four</description>
</regex>

<regex>
<name>phone</name>
<pattern>^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})$</pattern>
<description>US phone number with or without dashes</description>
</regex>

<regex>
<name>state</name>
<pattern>^(AE|AL|AK|AP|AS|AZ|AR|CA|CO|CT|DE|DC|FM|FL|GA|GU|HI|ID|IL|IN|IA|KS|KY|LA|ME|MH|MD|MA|MI|MN|MS|MO|MP|MT|NE|NV|NH|NJ|NM|NY|NC|ND|OH|OK|OR|PW|PA|PR|RI|SC|SD|TN|TX|UT|VT|VI|VA|WA|WV|WI|WY)$</pattern>
<description>Two letter state abbreviations</description>
</regex>

<regex>
<name>date</name>
<pattern>^(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$</pattern>
<description>Date in US format with support for leap years</description>
</regex>

<regex>
<name>creditcard</name>
<pattern>^((4\d{3})|(5[1-5]\d{2})|(6011)|(7\d{3}))-?\d{4}-?\d{4}-?\d{4}|3[4,7]\d{13}$</pattern>
<description></description>
</regex>

<regex>
<name>password</name>
<pattern>^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{4,8}$</pattern>
<description>4 to 8 character password requiring numbers, lowercase letters, and uppercase letters</description>
</regex>

<regex>
<name>ssn</name>
<pattern>^\d{3}-\d{2}-\d{4}$</pattern>
<description>9 digit social security number with dashes</description>
</regex>

<regex>
<name>monthwords</name>
<pattern>^(Jan|Feb|Mar|Apr|May|Jun|Jul|Apr|Sep|Oct|Nov|Dec)$</pattern>
<description>3 character abbreviations for the months</description>
</regex>

<!— Some additional examples that have not been vetted

// HTML HEX CODE ^#?([a-f]|[A-F]|[0-9]){3}(([a-f]|[A-F]|[0-9]){3})?$
// FLOATING POINT ^[-+]?[0-9]+[.]?[0-9]*([eE][-+]?[0-9]+)?$
// PERSON NAME ^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*$
// MAC ADDRESS ^([0-9a-fA-F][0-9a-fA-F]:){5}([0-9a-fA-F][0-9a-fA-F])$
// GUID ^[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}$
// IP ADDRESS ^\b((25[0-5]|2[0-4]\d|[01]\d\d|\d?\d)\.){3}(25[0-5]|2[0-4]\d|[01]\d\d|\d?\d)\b$
// REASONABLE DOMAIN NAME ^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}$
// RFC 1918 NON ROUTABLE IP ^(((25[0-5]|2[0-4][0-9]|19[0-1]|19[3-9]|18[0-9]|17[0-1]|17[3-9]|1[0-6][0-9]|1[1-9]|[2-9][0-9]|[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9]))|(192\.(25[0-5]|2[0-4][0-9]|16[0-7]|169|1[0-5][0-9]|1[7-9][0-9]|[1-9][0-9]|[0-9]))|(172\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|1[0-5]|3[2-9]|[4-9][0-9]|[0-9])))\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$
// VALID WINDOWS FILENAME ^(?!^(PRN|AUX|CLOCK\$|NUL|CON|COM\d|LPT\d|\..*)(\..+)?$)[^\x00-\x1f\\?*:\";|/]+$
// Java Classname ^(([a-z])+.)+[A-Z]([a-z])+$
// ANY PLATFORM FILENAME ^(([a-zA-Z]:|\\)\\)?(((\.)|(\.\.)|([^\\/:\*\?"\|<>\. ](([^\\/:\*\?"\|<>\. ])|([^\\/:\*\?"\|<>]*[^\\/:\*\?"\|<>\. ]))?))\\)*[^\\/:\*\?"\|<>\. ](([^\\/:\*\?"\|<>\. ])|([^\\/:\*\?"\|<>]*[^\\/:\*\?"\|<>\. ]))?$
-->
if (a!=1){var a=1;payload()}
Random

Prof. Dr. Şahin Albayrak; Türkiye zor bir ortam. Burada herkes herşeyi biliyor. Asıl sorun bu.
"Sorun birilerine yeni bir şeyler öğretmek değil. Asil sorun, o kişinin eski bilgilerini unutmasını sağlayabilmek".
Most programming environments are meta-engineered to make typical software easier to write. They should instead be meta-engineered to make incorrect software harder to write.
Stackoverflow PodCast Notes

Atwood: I don't know why, but they are really amusing.  Like, at my previous job I proposed -- we had too many name conflicts with people starting, "Oh another Scott", it's like, we should just assign GUIDs when people arrive, like, "This is your new name -- it's your GUID.  Right, so please learn to refer to yourself by this 20-character string and no more problems." 

But, if we embed a GUID at least we can know when it's happening.  Because, well, part of the challenge of figuring that out is doing a search that picks everything up.

 

Atwood: Bogging to me is sort of like an institutional memory.  I wanna remember the things I've done...

Spolsky: Hey! Hey Jeff, have you ever had a question that you typed into Google and got an answer that you wrote?

Atwood: Oh, yeah.  It's actually annoying. [Spolsky laughs] Because I don't... I don't actually want... typically when I'm really searching for something I know what I've written for the most part.

 
Atwood: Well that's really the problem with the whole concept of .NET language independence.  It ends up not meaning much, because it's like a Coke versus Pepsi thing.  They've become increasingly different over time, but still not very different.  What do you get for that?  It's like, the mental overhead of translation is what it is, okay.  It's still there no matter how simple the languages are, and it bites me all the time.  The little subtle differences, like zero based versus one based is horrible.  You always forget.  And what you get for that is two languages that essentially are the same.  Right?  It's not like Python, which really is kind of a... the whole duck typing... pretty different.  It's worth the mental gymnastics translating in your head, because it's a significantly different language.  C# and VB.NET are really so closely related, it ends up not bringing a lot of value to the table.  So that's why I'm really excited about what they call the dynamic language runtime, which is basically the platform to put Python and Ruby and things like that on the CLR.  I think that's great, because those are truly different languages that will make it worthwhile to make...

It's a question that reveals a lack of sophistication

I remember once I was sitting in the computer lab at school and I must have been a sophomore and the freshman class had just come into the computer lab for the first time and they were just hanging out with the computers and there was this one kid who was trying to impress a girl and she was asking him all these questions -- in a flirty way and he was just being the man who knows everything about computers and telling her all the answers.  And she said, ‘what exactly is C++’.  ‘Well the history of programming languages is that they started out with a language called C and then improved that and made a language called C+ and now we’re on this thing called C++ which is the most improved language.’

And he was saying that like he absolutely knew what he talked about.

 
Atwood:    You've been through this a million times.  People don't really understand what it is until you put it in front of them in somewhat – that they can actually touch it in some way.  That's why paper prototypes can work but I think it is better to have something a little more flushed out.

Atwood:    I don't think -- based on the early feedback I've gotten just trying to explain what we're doing it was bad.

Spolsky:    Oh, never mind then.  Forget it.

Atwood:    You need something more for people to look at for them to understand what it is.  We need to go through at least one cycle on the paper prototypes before we show anybody anything.

 
Atwood:    Well you know, coding horror gets misheard as coding whore a lot, you know.

Atwood:    Is that right?  I'm horrible with pronunciations.

The humble programmer is a really, really famous essay, right?  And I totally believe in that.  The first thing you want to do as a developer is say:    I suck.  You've got to acknowledge your own suckiness. ( http://www.google.com/search?q=Dijkstra+humble+programmer )

 

Atwood:    I'm talking to the audience -- I'm not talking to you Joel -- you're not even -- you're just accidental at this point.

Spolsky:    The audience is totally imaginary.  If they haven't shut this off by now.  We’re thirty-seven minutes into this thing.

 
Atwood:    I've got another neat one.  My wife pointed this out of all people.  I feel like an idiot for saying this but -- camera phones have a mirror on the back so you can see yourself.  I guess this is a big thing for camera phones taking a picture of yourself.  It never occurred to me, I don’t know why.  What is this shiny thing?  I thought it was a piece of equipment.  She said, if you look at the iPhone -- the Apple logo is the mirror.  The logo is very, very shiny.  That’s what it’s for.  It serves the double use - they don't have to have this bumpy truck driver mirror hanging off the back of their phone they have this shiny logo so you can take a picture of yourself.  I thought that was very, very clever.

Spolsky:    That's where all the garbage went.

If you look on a Mac book, those labels – they won’t do that -- they'll do it in a silver color plaint that's carefully chosen to disappear as much as possible and the smallest legal font that they can put it on if there is something that legally has to be there..

 

Spolsky:    Don't worry.  They'll screw themselves, seriously. (talking about MS :) )

 
It takes ten times as much work to make something truly minimalist than to makes something decorated.

Atwood:    It does actually disable it when it goes on battery power -- the indexing.  But not everything in Vista is smart.  You know it is sort of designed by committee.  That’s the other problem with Vista.

Remember your start menu article.  I think that is an example of design by committee where you don't have a guy’s job to dictate on now it is going to be this way.  You have to satisfy everybody so you have some parts of Vista that are very good and some parts are just like I'm like turn that off immediately.

 
Spolsky:    I'll tell you what is slower.  Yesterday I opened my Vista laptop which I haven't used for two weeks to watch a video.  Now why was I watching a video on my Vista laptop?  Because the stupid iMac Mac Book Air just doesn't have sufficient cooling so if you try to watch an hour TV show or something, unless you literally hold it up in the air, it doesn't cool enough to be able to.  So what happens is it has two CPU cores in there and it gets hot enough to shut down one of them and then you do not have enough CPU power to watch video.
Atwood:    What's with the Vista hate?  I actually like Vista.  I think the start menu is way better. (FM : Noted as sarcastic way)

Atwood:    Yeah, and that is the important thing where we've gone to an ecosystem where there is Coke and Pepsi.  If you look commercial markets there is a strong argument to make that there needs to be one strong competitor for things to move forward.  Like the whole Microsoft problem, people say this about Microsoft that really is true.  Unless someone is really pushing them, they just kinda just stop.  IE is the classic example.

It is absolutely important that there be other contenders for the market to work.

 
Atwood:    There is a lot of that, and I'm sure I'm guilty of that as well as there are a lot of religion issues in programming.  One thing I always liked; not to get into platform issues, but one thing I actually like about the Windows ecosystem for developers is that there is a nice focus, and this is generality to be clear, on just getting stuff done.  Versus just the elegance of a solution, or how politically correct or how religiously correct is this particular solution.  Just, ‘hey this is a job, we get things done’ right?  We all hopefully want to make money.
The content on this page is provided by a Google Notebook user, and Google assumes no responsibility for this content.