Wednesday, November 18, 2009

English for Both Sexes...

A Man's Guide to what women actually mean when they say it...!

1. We need = I want
2. It’s your decision = The correct decision should be obvious by now
3. Do what you want = You’ll pay for this later
4. We need to talk = I need to complain
5. You’re...so manly = You need a shave and you sweat a lot
6. You’re certainly attentive tonight! = Is sex all you ever think about?
7. I’m not emotional! And I’m not overreacting! = I’ve got my period
8. This kitchen is so inconvenient = I want a new house
9. I want new curtains = and carpeting, and furniture, and wallpaper ...
10. I need wedding shoes = the other 40 pairs are the wrong shade of white
11. Hang the picture there = NO, I mean hang it there
12. I heard a noise = I noticed you were almost asleep
13. Do you love me? = I’m going to ask for something expensive
14. How much do you love me? = I did something today you’re not going to like
15. I’ll be ready in a minute = kick off your shoes and find a good game on TV
16. Is my butt fat? = Tell me I’m beautiful
17. You have to learn to communicate = Just agree with me
18. Yes = No
19. No = No
20. Maybe = No
21. I’m sorry = You’ll be sorry
22. Do you like this recipe? = It’s easy to fix so you’d better get used to it
23. I’m not yelling! = Yes I’m yelling because I think it’s important
24. All we’re going to buy is a soap dish = It goes without saying that we’re stopping at the cosmetics department, the shoe department, I need to look at a few purses, and those sheets would look great in the bedroom and did you bring your check book?


A Woman's Guide to what men actually mean when they say it...!

1. I’m hungry = I’m hungry
2. I’m sleepy = I’m sleepy
3. I’m tired = I’m tired
4. Do you want to go to a movie = I’d eventually like to have sex with you
5. Can I take you out to dinner? = I’d eventually like to have sex with you
6. Can I call you sometime? = I’d eventually like to have sex with you
7. May I have this dance? = I’d eventually like to have sex with you
8. Nice dress = Nice cleavage!
9. You look tense, let me give you a massage = I want to fondle you
10. What’s wrong? = I don’t see why you’re making such a big deal out of this
11. What’s wrong? = what meaningless, self inflicted psychological trauma are you going through now?
12. What’s wrong? = I guess sex tonight is out of the question
13. I’m bored = Do you want to have sex?
14. I love you = Let’s have sex now
15. I love you, too = Okay, I said it...we’d better have sex now!
16. Yes, I like the way you cut your hair = I liked it better before
17. Yes, I like the way you cut your hair = $50 and it doesn’t look that much different!
18. Let’s talk = I am trying to impress you by showing that I am a deep person and maybe then you’d like to have sex with me
19. Will you marry me? = I want to make it illegal for other men to have sex with you
20. I like that one better (while shopping) = Pick any frigging dress and let’s get out of here.

Tuesday, November 3, 2009

Ten Predictions...

While snooping around online, I came across ten predictions written by Steve Yegge, based on undercurrents that he's felt while reading through some techie stuff, as expected. Most of 'em are pretty obvious prediction and are just to kick-start the creative thought process.

Important Note: The predictions themselves don't matter! Most of them might turn up wrong...! The point of this exercise is to show you things that you'd start thinking...things that you weren't really aware of. Other people might find it an interesting read, even if there are factual errors or whatever...!


Prediction #1:
XML databases will surpass relational databases in popularity by 2011.

Reason for prediction:
Nobody likes to do O/R mapping; everyone just wants a solution.

XML is the most popular vehicle for representing loosely-structured, hierarchical data. Relational databases can't do this very well. Many common types of data are intrinsically hierarchical and loosely structured, so storing them in an RDBMS can be difficult. Examples: books, articles, and most other written documentation. HTML. Search indexes. File systems. Game worlds. Classical music scores. It's just easier to model some things this way.


Prediction #2:
Someone will make a lot of money by hosting open-source web applications.

Reason for prediction:
Most small development shops would pay a monthly fee not to have to administer the apps themselves.

We're rapidly entering the age of hosted web services, and big companies are taking advantage of their scalable infrastructure to host data and computing for companies without that expertise. They're a lot of work that's just overhead. You almost need a full-time administrator for these systems. Backups, performance tuning, branch administration, lots of issues. All you really want is for it to work, so you can focus on your problem domain.


Prediction #3:
Multi-threaded programming will fall out of favor by 2012.

Reason for prediction:
Cost/benefit ratio isn't high enough.

When safe alternatives to existing unsafe technologies come along, it takes about ten to fifteen years before everyone's switched over. Not that the unsafe users actually switch; that's just how long, on average, it takes the majority of them to be killed accidentally by their product, leaving only the new, safer programmers behind.

Hence, many programmers prefer to use C++ instead of far safer alternatives such as Java or Objective-C. And many programmers prefer to use Perl instead of far safer alternatives such as Ruby or Python. Many programmers prefer debugging weird problems in production over the much safer alternative of writing unit tests for their own code. And virtually all programmers prefer programming by side-effect over safer alternatives such as functional or declarative programming.

Multi-threaded programming has officially been declared hazardous to your health since, oh, roughly the week after it was invented. Everyone knew it was really tricky from the outset. It provided all sorts of exciting and (if I do say so myself) rather manly new failure modes: deadlocks, livelocks, missed signals, race conditions, read/write conflicts, write/write conflicts, and so on. But it did offer some ease-of-use advantages over IPC. And C++ programs already crash or corrupt data so often that occasional threading errors don't usually make much of a difference.


Prediction #4:
Java's "market share" on the JVM will drop below 50% by 2010. In other words, over half the code written for the Java platform will not be Java. It'll be Python, Ruby, Haskell, Lisp, and a variety of other languages. The Java programming language will become more like "assembly-language for the JVM" — something you use for building frameworks in Java, but most app code will be in higher-level languages compiled into Java bytecode.

Reason for prediction:
The Java core language is the weakest part of the otherwise strong Java platform.

The Java language just isn't cutting it, though. It's really hard to see this if you're coming from a C/C++ background, because Java is so much better than C++ that it feels like you've died and gone to Programmer Heaven. Java has real strings, and real exceptions, and real namespaces, and and real runtime typing, and real pure-virtual interfaces, and a real security model, and real memory management, and a real library system, and fast compilation times, and it's portable, and it doesn't crash. C++ is a miserable, poisoned purgatory, and Java delivers you from it. So as you might imagine, it takes a few years before you start to chafe at Java's limitations.

But Java is verbose and somewhat uncompressible: it lacks a macro system, so it's not extensible in the way XML and Lisp are extensible. What they decide to give you is all you've got. And it has no first-class functions, no preprocessor, no met programming, and no templating system. So it takes forever to say certain complex things in Java, and it's hard to to avoid certain kinds of code duplication. Java code bases tend to be pretty large — smaller than equivalent C++ code bases, possibly, but you still wind up with a lot of code.


Prediction #5:
Lisp will be in the top 10 most popular programming languages by 2010.

Reason for prediction:
Lisp is a keeper. And it's getting a lot of good press these days.

I think it'll be in the top 10, but not in the top 5. If you count all Lisp dialects including Scheme, it might make #6, though. That would include ANSI Common Lisp, Emacs Lisp, Scheme, Guile, Arc, and probably a few other dialects as well. Heck, if you just count lines of code, Lisp is already the fourth most-used language in a RedHat Linux distribution.
There are some other very solid functional-programming languages out there; Lisp isn't the only player in the field. Each of them has its advantages: Erlang has the world's best distributed-computing facilities; Haskell appears to be the world's most elegant and succinct language; OCaml binaries fairly consistently outperform C++. Most functional languages are pretty nice in at least one dimension.

But Lisp has a secret weapon: Paul Graham. Programming languages don't become successful based on their technical merits. The masses of programmers out there don't know or care about technical merit. They just want someone to look up to, someone to tell them what to do. Languages are religions, and religions need a spiritual leader. It's best if it's a person, but a faceless corporation will do in a pinch, if they have a good marketing department. And now Lisp has a new thought-leader and champion in Paul Graham: successful author; influential essayist; inventor of Yahoo! Store; the man who killed Spam. He has an impressive resume, and he appears to be only just getting started. He's creating the next-generation Lisp (called "Arc"), and his essays have been making the world sit up and pay attention. Largely because of Paul's leadership, everyone's talking about Lisp.


Prediction #6:
A new internet community-hangout will appear. One that you and I will frequent.

Reason for prediction:
People like to socialize.

Where's the internet community? I don't see it. People don't hang out on Amazon's website, or Google's, or eBay's, or Microsoft's. Not anywhere, really. There are little chat rooms here and there, and some static link-in sites where you can answer a bunch of questions about your hair color and favorite taco sauce. Yawn.


Prediction #7:
The mobile/wireless/handheld market is still at least 5 years out.

Reason for prediction:
My spider-sense isn't tingling yet.

Every year for at least the past decade, pundits have been predicting that next year will be the Year of Wireless Mobile Computing. They say every human being and most pets on the planet will spend the majority of their disposable income on mobile wireless services for their tiny handheld supercomputer phones. These devices will have 1900x1200 resolution, 1500-hour battery lives, T1 connection speeds, microsecond latency, a reception range that covers the planet surface to a depth of six miles, and will cost less than a pack of Mentos.
Every year, it's next year. Every next year, it doesn't happen. And you know what? Frankly, I'm getting tired of hearing about it. When I go to Best Buy or Costco or Rat Shack, I don't see tiny handheld devices and service plans that are "almost" tempting. What I see is crap that I wouldn't buy with someone else's money.

Don't get me wrong: it will happen someday. But I think it's not going to be any time soon. Betcha!


Prediction #8:
Someday I will voluntarily pay Google for one of their services.

Reason for prediction:
They're putting technological heroin in their services, and someday they're going to start charging.

I've never paid Google a dime, as far as I know, and I'd venture to guess that I've spent a lot more time on their website than on Amazon's. Or Starbucks'. I do a lot of Googling for free, and so do you. Google has changed my life. If I can't find what I'm looking for in Google in 3 tries, looking no further than the first 10 search results on each try, then it probably doesn't exist. Google is every bit as important a programmer-tool for me as my compiler is. And it's pretty darn important for my day-to-day life, too. As one example, I never use a phone book anymore. Want Uwajimaya's number? Type "Uwajimaya" into Google. You can even find it by spelling it incorrectly as "Uwajamaya". I just tried it.
And I still haven't ever paid Google a dime. But I'm convinced — someday, I will. As soon as they want me to.


Prediction #9:
Apple's laptop sales will exceed those of HP/Compaq, IBM, Dell and Gateway combined by 2010.

Reason for prediction:
Macs rule. Windows laptops are as exciting as a shiny disco ball in the ceiling.

I bought a Powerbook for my wife Linh about 8 months ago, and she uses it so much that I can't even sneak a peek at it once in a while. I just looked over at its little spot on our desk, and it's not there. She's using it right now. I bet she's on that thing for 3 hours a day at least, maybe more — playing games, reading mail, surfing the web, sharing pictures with her sisters. Doing Google searches, and I didn't tell her about Google. She just sorta found it. Before I bought her that Powerbook, her average computer usage was around an hour a year.

Macs are a triple-threat right now: they're trendy (which rarely correlates with quality; it's simply a marketing feat), they're actually easy to use for non-computer users, and they're a powerful platform for developers and power-users. There's something there for everyone.

But now the open-source community likes Macs just as much as you and I do. So before long, maybe even now, Macs will be a better choice for the majority of my computer activities, including programming. And when that happens, who would buy a PC laptop? Not me, that's for sure. My next one will be a Mac.

Prediction #10:
In five years' time, most programmers will still be average.

Reason for prediction:
That's just how the math works out.

Of course most programmers will still be average, by definition. The problem is that the average level of quality and productivity probably won't have changed all that much. The difference between great hackers and average plodders is a hundred-fold, which implies great potential for improving the average. But I doubt the industry average productivty/quality per-capita output will go up even 50% over the next 5 years, let alone 2 orders of magnitude. Partly because there are too many J2EE consultants out there ruining the numbers. But more importantly, most people are just doing this gig for a living. So most people will still be average, and average will still be ho-hum.

PS: Find the complete story here: http://steve.yegge.googlepages.com/ten-predictions