Archive for March, 2010

Most Indian and Pakistani out-sourcing firms are awful

Wednesday, March 31st, 2010

This is very true:

Indian and Pakistani firms are almost universal in their awfulness- horror stories abound. Part of this is a cultural mismatch- it’s tougher to work with an Indian firm than a European or American firm, simply because the cultures are different. People are less willing to tell you when something is going wrong, far less likely to give reasonable estimates, and generally less competent. India has had wages go up quite a bit, so the people you can get for $10/hour today are not the people you could get for $10 fifteen years ago.

What do teachers teach us?

Wednesday, March 31st, 2010

John Taylor Gatto, New York State Teacher of the Year, 1991, explains what his job entails:

The third lesson I teach you is to surrender your will to a predestined chain of command. Rights may be granted or withheld, by authority, without appeal. As a schoolteacher I intervene in many personal decisions, issuing a Pass for those I deem legitimate, or initiating a disciplinary confrontation for behavior that threatens my control. My judgments come thick and fast, because individuality is trying constantly to assert itself in my classroom. Individuality is a curse to all systems of classification, a contradiction of class theory.

Here are some common ways it shows up: children sneak away for a private moment in the toilet on the pretext of moving their bowels; they trick me out of a private instant in the hallway on the grounds that they need water. Sometimes free will appears right in front of me in children angry, depressed or exhilarated by things outside my ken. Rights in such things cannot exist for schoolteachers; only privileges, which can be withdrawn, exist.

The fourth lesson I teach is that only I determine what curriculum you will study. (Rather, I enforce decisions transmitted by the people who pay me). This power lets me separate good kids from bad kids instantly. Good kids do the tasks I appoint with a minimum of conflict and a decent show of enthusiasm. Of the millions of things of value to learn, I decide what few we have time for. The choices are mine. Curiosity has no important place in my work, only conformity.

Bad kids fight against this, of course, trying openly or covertly to make decisions for themselves about what they will learn. How can we allow that and survive as schoolteachers? Fortunately there are procedures to break the will of those who resist.

This is another way I teach the lesson of dependency. Good people wait for a teacher to tell them what to do. This is the most important lesson of all, that we must wait for other people, better trained than ourselves, to make the meanings of our lives. It is no exaggeration to say that our entire economy depends upon this lesson being learned. Think of what would fall apart if kids weren’t trained in the dependency lesson: The social-service businesses could hardly survive, including the fast-growing counseling industry; commercial entertainment of all sorts, along with television, would wither if people remembered how to make their own fun; the food services, restaurants and prepared-food warehouses would shrink if people returned to making their own meals rather than depending on strangers to cook for them. Much of modern law, medicine, and engineering would go too — the clothing business as well — unless a guaranteed supply of helpless people poured out of our schools each year. We’ve built a way of life that depends on people doing what they are told because they don’t know any other way. For God’s sake, let’s not rock that boat!

Whatever happened to PHP6?

Tuesday, March 30th, 2010

Apparently PHP6 ran ashore on the shoals of Unicode:

Things came to a head on March 11, when Jani Taskinen, fed up with being unable to push things forward, (1) committed some disruptive changes to the stable 5.3 branch, and (2) created a new PHP_5_4 branch which looked like it was meant to be a new development tree. That is when Rasmus stepped in:

The real decision is not whether to have a version 5.4 or not, it is all about solving the Unicode problem. The current effort has obviously stalled. We need to figure out how to get development back on track in a way that people can get on board. We knew the Unicode effort was hugely ambitious the way we approached it. There are other ways.

So I think Lukas and others are right, let’s move the PHP 6 trunk to a branch since we are still going to need a bunch of code from it and move development to trunk and start exploring lighter and more approachable ways to attack Unicode.

And that is where it stands. The whole development series which was meant to be PHP 6 has been pushed aside to a branch, and development is starting anew based on the 5.3 release. Anything of value in the old PHP 6 branch can be cherry-picked from there as need be, but the process of what is going into the next release is beginning from scratch, and one assumes that proposals will be looked at closely. There are no timelines or plans for the next release at this point; as Rasmus explains, that’s not what the project needs now:

We don’t need timelines right now. What we need is some hacking time and to bring some fun back into PHP development. It hasn’t been fun for quite a while. Once we have a body of new interesting stuff, we can start pondering releases…

So timing and features for the next PHP release are completely unknown at this point. Even the name is unknown; Jani’s 5.4 branch has been renamed to THE_5_4_THAT_ISNT_5_4. There has been some concern about all of those PHP 6 books out there; it has been suggested that a release which doesn’t conform to expectations for PHP 6 should be called something else – PHP7, even. There’s little sympathy for the authors and publishers of those books, but those who bought them may merit a little more care. But that will be a discussion for another day. Meanwhile, the PHP hackers are refocusing on getting things done and having some fun too.

Setbacks are the main cause of burnout

Monday, March 29th, 2010

In my experience, setbacks are the main cause of burnout. If you work very long hours, you need a steady stream of success to keep justifying the fact that you are working hard. If you sacrifice a lot of important things in your life, then the only way you can justify it to yourself is with success in that thing that the sacrifices were for. I see this show up in a number of very different scenarios:

1.) A woman gives up her career to focus on child raising. If she ends up great friends with her children, then she may afterwards feel the sacrifice was worth it. If, instead, her kids hate her, then eventually the magnitude of what she sacrificed will come to seem immense.

2.) A male scientist gives up on every form of recreation that he enjoys and instead spends 10 years focused on nothing but his research. If he wins the Nobel Prize, he may feel that those 10 years were well spent. If, instead, his research turns out to be a blind alley, leading no where, the loss of 10 years will certainly strike him as bitter.

3.) A woman decides not to have children but instead to devote herself entirely to leading her design business. If she ends up with an international business with lucrative clients in 80 countries, she may feel that her sacrifice was worth it. If, instead, the company goes bankrupt, she will almost certainly face a crisis of meaning.

The harder you work, the more rewards you need to feel that your sacrifices are justified.

There is no easy way out of this. Every decision has an opportunity cost. Balance is bunk.

Jory Des Jardins writes of her father:

I went to college and missed the complete collapse of not only my Dad’s business, but his attitude toward work. I caught glimpses of change when I came home to visit. His car had stopped running and was left to rot behind our house. The roof on the house was falling apart. His boat had been left in the lake one winter, unclaimed, and had to be confiscated by the city. He rarely ever left the house. He had moments of inspiration and futzed around on his computer, wrote op-eds to the local papers, watched C-Span and called in to talk to Congressmen, took on stints of work with some family members, played bridge online, and read, copiously. But it was clear he no longer had a desire to work like he did when he first became an entrepreneur.

Once her kids had grown my mother started to work full-time. But after 11 years she learned that her position was being relocated, and my Dad knew he had to start looking for a job. He had many strikes against him, a man in his late 50s with a spotty-to-non-existent employment record over the past 15 years, and self-employment before that. He did eventually find a job doing what he’d come to learn by working with his former clients–selling cars.

He dutifully worked his hours and even took pride in the products, insisting to his kids that we really didn’t know just how impressive Buicks could be. When I visited from California, he shared stories of whom he encountered at the dealership, young couples buying their first cars, or older people trading in their beloved 25-year-old vehicles. Some bought cars, some didn’t; but they all were included in his stories. He seemed more sanguine, or content, or maybe he was just punch drunk from years of struggling with work. He’d given up on the idea of proving himself. He was humbled. He was also dying.

When Dad passed away at 60 he left almost nothing. I’d always harbored these hopes that despite his 15-year hiatus from work Dad always had a plan. Things were growing; he just hadn’t shown us where he hid his ambitions. I expected incomplete manuscripts, unfinished business plans, an account opened for the purposes of starting a small-scale venture. But there wasn’t anything, not even savings. He had really died at 45, when he lost his desire to work.

My impression is that this is a classic, timeless statement about someone who tries for something with every iota of energy that their soul possesses, and then fails.

How much does it matter that women receive less VC funding?

Monday, March 29th, 2010

How much does it matter that women receive less VC funding?

For instance, Jane Goodall was relatively untrained in the traditional (read: male) technique of studying primates. Rather than measure their toenails, count their bowel movements, and call it a day, she watched them and took notes, often in narrative form, and often giving the primates’ interactions a storyline. Initially this more intuitive approach was seen as amateurish and dismissible, and yet it’s now much more indicative of how scientists today frame this sort of research. Goodall proved the worth of a “female” perspective in science.

I think of my own industry and of BlogHer: We didn’t invent computers, or the Internet. We didn’t invent blogging; but we provided a larger context for its importance, particularly to women. I guess by some definitions this is a girly-girl approach to technology, akin to Goodall’s approach to her science. But is it any less valuable; any less illuminating or fundable?

Do I care if so few women are being funded in Silicon Valley? No. I care that women’s approach to business is so underfunded, and hence undervalued. I care that those women who are succeeding in it are seen as doing so DESPITE who they are, rather than because of who they are.

Why do people like Sarah Palin?

Monday, March 29th, 2010

Once in a while, I feel completely alienated from some segment of the American public. Smurfs, Cabbage Patch dolls, the Backstreet Boys and Doogie Howser were all crazes that tested the limits of my imagination – try as I might, I could not figure out why they were so popular. Now there is Sarah Palin. No matter how hard I try, I can not figure out why she is so popular.

Dell computers might shift production from China to India

Friday, March 26th, 2010

China may pay a price for its heavy handed tactics. Frankly, I’m surprised that India hasn’t already pulled way ahead of China. India offers a legal environment that is familiar to Western multi-national corporations.

According to the Indian Financial Chronicle, Dell told prime minister Manmohan Singh as much in person, with Singh revealing details of the meeting after speaking to the country’s planning commission about spurring the “development of hardware and parts of the computer industry”.

“This morning I met the chairman of Dell Corporation,” Singh reportedly told the commission. “He informed me that it is buying equipment and parts worth $25 billion from China. It would like to shift to [a] safer environment with [a] climate conducive to enterprise, with [the] security of [a] legal system.”

Why men and women exist

Friday, March 26th, 2010

Interesting bit on how diversity of genes is important to species survival. A conflict of genetic interests is healthy for the long term.

The genes that are most beneficial to males are the most disadvantageous for females, and vice versa. However, this genetic conflict between the sexes is important in maintaining genetic variation within a species, researchers at Uppsala University have shown in a study on fruit-flies published in the open access journal

Males and females of many species often look quite different from one another. These differences are thought to have evolved because the sexes often have needs and strategies that do not coincide. For example, in fruit-flies, females may do best by concentrating their efforts in acquiring resources to lay more eggs, while males benefit by increasing their mating and fertilization success.

Such differences generate a sexual “conflict of interests,” and since as a general rule each characteristic of an organism is regulated by the same set of genes in the two sexes, this conflict takes place at the genetic level. Using a combination of behavioral studies and genomic technology, researchers Paolo Innocenti and Ted Morrow have succeeded in getting a first insight into which genes are influenced by this type of sexual conflict.

An odd thing I learned today

Friday, March 26th, 2010

An odd thing I learned today:

Mutations in the same gene can cause dramatically different effects in humans from those seen in other species. For instance, mutations in the RB1 gene are associated with eye cancer in humans but cause worm genitalia to develop in the wrong place.

Evolutionary psychology is bunk

Thursday, March 25th, 2010

The puns are annoying, but I basically agree with his point:

Communication “experts” tell me that in order to have any success in vanquishing people’s irrational beliefs, one has to fill the void left by said vanquishment with something else. I have, in the past (and will continue in the future), to be very critical of the new field of evolutionary psychology based advice. This advice ranges from business marketing to relationships. What it boils down to is attempting to exploit the evolved stimulus response behaviors of individuals in order to manipulate them like a meat puppet. Sort of a neurolinguistic programming light. The evolutionary psychology relationship advice in particular boils down to attempting to fake having higher fitness in the hopes that other people will want to commit reproductive acts with them. Classy.

Much of so-called “evolutionary psychology” amounts to unprovable stories that people tell to justify whatever they want. If you want to argue that people are greedy, or women want monogamy, or men are hunters, or why do people love the fat and sugar in the meals served at McDonalds, then you can come up with a simple, but unprovable, story, using evolution as a narrative. People who do this are “hyper adaptationist” – they think every observed behavior about humans should have some evolutionary explanation. (Such people have trouble with issues like homosexuality and art – both of which are hard to explain in evolutionary terms.)

Josh Witten says it well:

Biologists have the bad habit of trying to explain every trait in terms of a natural selection narrative. Stephen Jay Gould strongly criticized this hyperadaptationist tendency, a point on which this rugbyologist and notable evolutionary biologist Michael Lynch have both agreed with Gould. The public face of the field of evolutionary psychology unfortunately fully embraces the hyperadaptationist world view.

…While I was reading the Guardian article … I noticed a link to their evolutionary psychology advice column. The shtick of “evolutionary agony aunt” Carol Jahme is to provide all your standard “Dear Abby” advice, but through the perspective of evolutionary psychology. Essentially, Carol is going to explain either how your perceived problem 1) was caused by natural selection in a pre-modern environment, or 2) can be solved by exploiting the formerly adaptive tendencies of others.

There are two problems with this approach. First, there is very little evidence to support the adaptive stories of evolutionary psychology for humans. There is not necessarily contrary evidence, but adaptation is not our null hypothesis. They are not right or wrong. Grain of salt time folks. Second, this presupposes that evolutionary psychology has the answer to every question. Reading Jahme’s column would make you think

And it leads to things like this:

I. . .have applied your guidance to my search for a suitable mate. My profile on a certain online dating site has been written to emphasise my evolutionary advantages (height, intelligence, employment status, alpha-male potential, physical fitness and social skills) and has proved to be successful at attracting attention from females of breeding age and, after carefully sifting out unsuitable candidates, converting that attention into a first date. . .Despite choosing neutral locations with convivial atmospheres and ensuring I am well groomed, I have been unable to secure a second date. . .
-from Valentine’s Day Dating Tips (emphasis mine)

Yo, dog, let me channel some Randy Jackson at you and break this down for you. Your problem is not your application of evolutionary psychology. Your problem is that you are dick who treats women like puppets you can manipulate. And, you probably stink. I for one do not have to make sure I am well groomed before i leave the domicile for a social encounter. Allow me to recommend that you get into the inescapable habit of devoting the first 30 minutes after you wake each day to placing your phenotype in an advantageous state.

You see, fitness (W) can be really hard to define, especially in large animals with long generation times. Its like pornography, one cannot define high fitness, but one knows it when one sees it.4 W is hard to fake, which is essentially what you are trying to do, which the use of the word “convivial” makes completely obvious.

In short, you can’t fake alpha-male potential.

Is MySql a really terrible database system?

Thursday, March 25th, 2010

I was surprised by this headline:

DIGG: 4000% PERFORMANCE INCREASE BY SORTING IN PHP RATHER THAN MYSQL

I thought, “How can that be?” Sorting in a database should always be faster than sorting in PHP. Still the article made a lot of good sounding points:

1.) Precompute on writes, make reads fast. This is an oldie as a scaling strategy, but it’s valuable to see how SimpleGeo is applying it to their problem of finding entities within a certain geographical region. Using Cassandra they’ve built two clusters: one for indexes and one for records. The records cluster, as you might imagine, is a simple data lookup. The index cluster has a carefully constructed key for every lookup scenario. The indexes are computed on the write, so reads are very fast. As reads dominate, this makes a lot of sense. Queries based on time are also precomputed. Joe mentions some special algorithms for spreading out data, which tends to cluster around geographical regions, but does not mention what these are.

3.) The relation tool chain has failed for real-time. The relational database tool chain is not evolving. It has failed for large scale, real-time environments. Building scalable systems on a relational database requires building sharding, load balancing, resharding, cluster management, worrying about consistency, implementing distributed queries, and other layers yourself, so why bother? Cassandra does all that for you out of the box. Shot off a server and Cassandra will handle all the remapping and rerouting automatically.

4.) Scaling practices turn a relational database into a non-relational database. To scale at Digg they followed a set of practices very similar to those used at eBay. No joins, no foreign key constraints (to scale writes), primary key look-ups only, limited range queries, and joins were done in memory. When implementing the comment feature a 4,000 percent increase in performance was created by sorting in PHP instead of MySQL. All this effort required to make a relational database scale basically meant you were using a non-relational database anyway. So why not just use a non-relational database from the start?

6.) Scaling equals specialization. To scale often requires building highly custom, problem specific solutions.

But then Denis Forbes offered this counter-point:

Shocked by the incredibly poor database performance described on the Digg technology blog, baffled that they cast it as demonstrative of performance issues with RDBMS’ in general, I was motivated to create a simile of their database problem.

While they posted that entry six months ago, they recently followed up with more statements on the NoSQL / RDBMS divide, and are now being heavily used as a citation of sorts.

For instance Dare Obasanjo held Digg’s moves as a rebuttal of my prior entry on SQL scaling (though my entry actually explicitly excluded incredibly rare edge cases like Digg’s, and my core point was that the majority of database uses don’t have the needs of a site like Digg, I’m always one to take on a challenge), which then got picked up in other blogs.

I would say Digg’s case is an example of a bottom-feeder RDBMS product (apologies for being incendiary, but why does the problem always come down to MySQL? These examples always end up being “we moved from MySQL to NoSQL” rather than “We moved from Sybase ASE to NoSQL”), used arguably suboptimally on unpowered hardware, and it proves nothing of substance about either database technology. Yet it’s held as demonstrative of something, which is why I focus on it. They are different tools in the toolbox, arguably for different purposes, and that isn’t the focus of this entry.

He offers some interesting test results. He also suggests that more companies should take advantage of big servers and cheap RAM:

Database servers really like having a lot of RAM. Ideally you should have more RAM than you have data, allowing it to cache the entirety of your DB (or at least the working-set quantity of DB on that partition) making incredible read performance achievable.

Joining rows is not a hard activity for database servers. It can do it at unfathomable rates if the data can be fed to it at the appropriate pace and in the right form. Even heavily normalized databases can be high performance.

What normally makes joins a performance issue is data locality: if you have to load two rows from different places on the disk, that’s two seeks instead of just one (or three, four, five or more instead of one). When seeks are as costly as they are on a magnetic disk, you avoid it (either by striving for a database that fits in memory, which paradoxical often calls for heavy normalization, or by de-normalizing).

…If I had 48GB of RAM in the test machine (which is fairly pedestrian outside of gerbil-sized cloud instances. Note that you can now add 128GB of RAM to servers for around $4000 in some cases), outside of the initial caching period the select rates would be stratospheric regardless of storage medium, though SSDs would still come in a very, very strong lead when it came to write performance.

For the same $4000 you could chain five Intel X25-E drives for 320GB of intensely high performance – and persistent – storage. Just keep going up until you have more throughput, I/O and storage than you could dream of.

Some high-end enterprise solutions now tier storage and automatically place data as appropriate, choosing between magnetic, SSD, and memory caching systems. The pages of the table that are never touched end up on the magnetic storage while the hot area – say Diggs within the last 6 months – are moved to SSDs or to huge banks of memory caching.

Learning a language means learning the culture

Thursday, March 25th, 2010

This is a great overview of the whole eco-system surrounding Ruby. I like the point he makes that learning a language involves learning the whole culture around the language:

But of course the actual language is only the tip of the iceberg (and finally we come to the actual point of this blog post): where you really face a steep learning curve is, well, everywhere else. Learning a language is a great start, but to be productive in any meaningful sense you also have to learn the libraries, the testing frameworks, the packaging systems, the build tools, the inline documentation systems, the code-hosting services, the documentation-hosting services, and no doubt a bunch of other stuff that I’ve not got around to yet. Let’s look at those in turn, and see how they are panning out for Ruby.

His conclusions, having surveyed some of the diversity of practices within the Ruby community:

None of this the fault of Ruby; all the same issues exist for other languages. I’m gradually coming to the conclusion that they are sort of irreducible: they come with the territory. For Real Work (as opposed to solving interesting puzzles with Prolog or APL), you need a language that has developed a rich culture over time. That’s what enables the language to make all the connections it needs to make in order to do the kinds of things we need to do these days. What it needs, in short, is an ecosystem. And ecosystems are complicated things. They are hard to learn.

Could the Ruby culture be simplified? Well, maybe by fiat. Maybe Matz could decree that all projects must be generated by jeweler, hosted on github, documented in YARD, and must have unit-test using Shoulda. It would, in a way, be nice to have those decisions made for me. But even if the community accepted these diktats, which they wouldn’t, it’s not really what we want. Languages that grow and develop and succeed are those with rich, competitive ecosystems; constrain it too much and it becomes sterile. I’m guessing that in three years, some of the issues I’ve had to make decisions about will be much easier: Darwin will take care of the weaker approaches, and the stronger will survive. That’s how we got the point of Ruby being as good as it is, after all — and by “good” I don’t just mean “elegant” or “fun to use”, but “capable of doing large-scale stuff using many different libraries available from and documented on well-known community sites”.

Why are there such large gaps between species?

Thursday, March 25th, 2010

I’ve always wondered why there are such large gaps between species. Check out the order of Caniformia: dogs, bears, pandas, raccoons, weasels, etc. All these animals started out with a single pair of common ancestors, with a particular male and female who mated and had children. How many differences had to accumulate in the children (and children of children, etc, all through the generations) before the children lost the ability to have sex with each other (or rather, with other children of parents of the same generation as that original male and female) and produce children of their own? What is the exact point when descendants of a particular female end up belonging to different species?

I’ve always assumed there had to be some mechanical reason why the gaps between species tends to be large, and so I’m interested to see that biologists are closing in the exact mechanics of the matching of chromosomes that must occur during reproduction:

The research also casts some interesting light on how species form in plants. CENH3 plays the same crucial role in cell division in all plants and animals. Usually, such important genes are highly conserved — their DNA is very similar from yeast to whales. But instead, CENH3 is among the fastest-evolving sequences in the genome.

“It may be that centromere differences create barriers to breeding between species,” Chan said. Ravi and Chan plan to test this idea by crossing closely-related species.

When you take a shower, how much do you pollute the environment?

Thursday, March 25th, 2010

So gross. Here is a study that says when we take a shower any drugs and chemicals we may be using, help to cause water pollution:

“We’ve long assumed that the active ingredients from medications enter the environment primarily as a result of their excretion via urine and feces,” said Dr. Ruhoy. She directs the Institute for Environmental Medicine at Touro University in Henderson, Nev., and did the research with Christian Daughton, Ph.D., of the U.S. Environmental Protection Agency’s National Exposure Research Laboratory in Las Vegas. “However, for the first time, we have identified potential alternative routes for the entry into the environment by way of bathing, showering, and laundering. These routes may be important for certain APIs found in medications that are applied topically, which means to the skin. They include creams, lotions, ointments, gels, and skin patches.”

A comparison of Java and Ruby

Wednesday, March 24th, 2010

Interesting comparison of Java and Ruby:

But now I’ve conveniently landed on an actual conclusion. And here it is. Remember in that Elements of Programming Style review, I drew special attention to the first rule in the first proper chapter — “Say what you mean, simply and directly”? The more that runs through my mind, the more convinced I am that this deceptively simple-sounding aphorism is the heart of good programming. Seven short words; a whole world of wisdom.

And how can I say what I mean simply and directly if I’m spending all my time allocating temporary arrays and typing public static void main? My code can’t be simple if the functions I’m calling have complex interfaces. My code can’t be direct if it has to faff around making places to put intermediate results. If I am going to abide by the Prime Directive, I need a language that does all the fiddly stuff for me.

You do not need to know math to be a programmer, but it opens some doors

Wednesday, March 24th, 2010

I’ve been going through something similar. I’ve done programming for years and I’ve never needed math skills. But recently, I’ve been thinking of all kinds of data mining projects that I’d like to do, so I’ve been reteaching myself algebra, and next year I hope to learn statistics. So I resonate with this:

A little while ago I started thinking about math. You see, I’ve been writing software for quite a few years now and to be totally honest, I haven’t yet found a need for math in my work. There has been plenty of new stuff I’ve had to learn/master, languages, frameworks, tools, processes, communication skills and library upon library of stuff to do just about anything you can think of; math hasn’t been useful for any of it. Of course this is not surprising, the vast majority of the work I’ve been doing has been CRUD in one form or another, that’s the vast majority of the work most developers do in these interweb times of ours. You do consulting – you mostly build websites, you work for a large corporates – mostly build websites, you freelance – you mostly build websites. I am well aware that I am generalising quite a bit, but do bear with me, I am going somewhere.

Eventually you get a little tired of it, as I did. Don’t get me wrong it can be fun and challenging work, providing opportunities to solve problems and interact with interesting people – I am happy to do it during work hours. But the thought of building yet more websites in my personal time has somewhat lost its luster – you begin to look for something more interesting/cool/fun, as – once again – I did. Some people gravitate to front-end technologies and graphical things – visual feedback is seductive – I was not one of them (I love a nice front-end as much as the next guy, but it doesn’t really excite me), which is why, when I was confronted with some search-related problems I decided to dig a little further. And this brings me back to the start of this story because as soon as I grabbed the first metaphorical shovel-full of search, I ran smack-bang into some math and realized exactly just how far my skills have deteriorated. Unlike riding a bike – you certainly do forget (although I haven’t ridden a bike in years so maybe you forget that too :)).

Broadening Horizons

Learning a little bit about search exposed me to all sorts of interesting software-y and computer science-y related things/problems (machine learning, natural language processing, algorithm analysis etc.) and now everywhere I turn I see math and so feel my lack of skills all the more keenly. I’ve come to the realization that you need a decent level of math skill if you want to do cool and interesting things with computers. Here are some more in addition to the ones I already mentioned – cryptography, games AI, compression, genetic algorithms, 3d graphics etc. You need math to understand the theory behind these fields which you can then apply if you want to write those libraries and tools that I was talking about – rather than just use them (be a producer rather than just a consumer – to borrow an OS metaphor :)). And even if you don’t want to write any libraries, it makes for a much more satisfying time building software, when you really understand what makes things tick, rather than just plugging them in and hoping they do whatever the hell they’re supposed to.

What does programming work entail?

Wednesday, March 24th, 2010

Interesting criticism of the type of work that is nowadays common for computer programmers. Good quote from Don Knuth:

“There’s the change that I’m really worried about: that the way a lot of programming goes today isn’t any fun because it’s just plugging in magic incantations — combine somebody else’s software and start it up. It doesn’t have much creativity. I’m worried that it’s becoming too boring because you don’t have a chance to do anything much new. Your kick comes out of seeing fun results coming out of the machine, but not the kind of kick that I always got by creating something new. The kick now is after you’ve done your boring work then all of a sudden you get a great image. But the work didn’t used to be boring.” (page 594)

“The problem is that coding isn’t fun if all you can do is call things out of a library, if you can’t write the library yourself. If the job of coding is just to be finding the right combination of parameters, that does fairly obvious things, then who’d want to go into that as a career?” (page 581)

Revolutions cause economic growth

Wednesday, March 24th, 2010

There is no economic growth without revolution. There is a lapse of a few decades, but the link is solid. The English speaking countries had their revolution 1641 to 1660 and then England ruled the world during the 1700s. Japan saw a dramatic political overhaul during the 1860s and in 1932 Japan became the fastest growing nation on Earth. China had a revolution in 1949, and now it is the fastest growing nation on Earth.

The world has 14 women who are self-made billionaires, and half of them are in China. Perhaps one advantage of revolution is the extent to which is tears away old ideas about who should be allowed to succeed.

A variety of circumstances has led to the increasing success of female entrepreneurs, says Linda Xinrong Kausch, a Shenzhen-based writer who is writing about a book about how 12 Western businesswomen achieved success in China. The development of a hospitable social and economic environment has been crucial, she says, which not only allows but also encourages women to get an education and start their own companies. Another factor is the constantly changing market regulations of a developing economy, which afford more flexibility and less red tape than a place like Europe. Plus, she adds, it’s a matter of pride for these women to make a tangible contribution to their family and to the nation.

“Most of the Chinese working women will say, ‘I’m proud that I work,’” Kausch says. “Chinese women are always very ambitious, and it’s in their nature to be hard-working people. And they are finally being rewarded for it.”

…In China female workers make up about nearly 50% of the enrollment at universities and 36% of the total labor force, according to state media. Women now contribute about half of household income, up from 20% in the 1950s, says Shaun Rein, founder of the Shanghai-based China Market Research Group.

Dumb start-up ideas

Wednesday, March 24th, 2010

Y-Combinator announced their new start-ups. Some of these ideas sound really tired, or very small scale and not worth trying:

LaunchHear
Founders: Alex Krupp, Allan Young
LaunchHear is a platform for introducing new & unreleased products to digital influencers. We reduce the cost of sending free products to bloggers and tweeters by 10x. We also host Swagapalooza, the first invitation-only event for only the most-followed bloggers and tweeters from across the country.

That sounds really boring.

NewsLabs
Founders: Paul Biggar, Nathan Chong
NewsLabs turns an experienced offline journalist into VentureBeat or TechCrunch for their niche. We provide tools, traffic, monetization and community to allow journalists to succeed as personal brands online, while allowing them to focus on the writing and reporting.

News is dead. People need to stop trying to save it. Anyway, what are they offering other than a blog? Blogging was cutting edge in 2001.

Seeing Interactive
Founders: Lloyd Armbrust, Jason Novek
A white-label Yelp for newspapers: Think Yellow Pages + Cars + Homes + Craigslist all launched as one package for small US markets. We work through local newspapers, TV or Radio stations to brand the product as their own and make money through monthly fees and upsells.

News is dead. People need to stop trying to save it.

Zencoder
Founders: Jon Dahl, Brandon Arbini, Steve Heffernan
Cloud services for video encoding, delivery, and monetization (AWS for video)

Good luck. The video market gets a lot of VC money, and other than YouTube, it is hard to see a big winner.

Nowmov
Founders: Thomas Pun, James Black, David Kelso
Nowmov shows you the hottest videos on Twitter RIGHT NOW. We discover the most talked about videos well before our competitors do (YouTube, Redux and Bitly.tv). Our user experience intentionally mimics TV watching — discovery is passive, rather than requiring the user to click around. Videos are presented continuously in an elegant user interface. Users can skip and replay clips at any time just like surfing TV channels.

Seriously?

I have trouble remembering web sites

Wednesday, March 24th, 2010

I just looked at this list of top 50 web sites from 1998. My friends think I have a good memory. My memory is especially good when I’m traveling – places I’ve been, conversations with friends, people I’ve met. I arrange things by dates. However, I find I have no memory for websites. I have only vague memories of the websites on this top 50 list, despite the fact that I spent a lot of time on them. I spend a huge portion of my life online, but I have few vivid memories of particular websites. I find this worrisome.

The best clients are the ones who want to make money

Wednesday, March 24th, 2010

To my surprise, I’ve found that clients who truly want to make money are the best clients. I guess at some point I might have worried that such people would be ruthless, but I have not found it so. Clients who want to make money accept my best ideas. Clients who want to make money tend to be honest about what they want. Clients who want to make money tend to stay calm when things are bad – they are less emotional. Clients who want to make money do not sabotage their most successful projects.

However, clients who want to make money are rare. Sad to say, most of the clients I’ve had have been interested in acclaim. Most of my clients have been born into wealth. They grew up rich, so money is not much of a draw for them. What does appeal to them is becoming a little bit famous. During this last decade a certain amount of glamor attached to web startups, so they were drawn in – not so much to get rich, but to become famous. I found that these people lie about their motives – they will hire you and they will tell you they want to make money, but they will focus on areas, like music, which are glamorous but which get way too much investment. They avoid boring industries that might be highly profitable. They stifle money making ideas, and they never give an honest reason for doing so.

For all these reasons, I found this bit interesting:

You see, there are three types of people who want to make money:

- Those who want to be looked up to

These are the people who talk about having expensive cars, living in a big house, or having a hot model girlfriend. I will never do business with these type of people, because they don’t really want money. They are insecure and unsure of themselves and they think that having money is going to change this. The problem is that these people, once they get into a position of power, they will lose their hunger for money. Once they are being looked up to, they will lose their interest in the money and they will fail you.

You can see these people in that they want people to recognize them, they want people to ask their advice, they want people to pay attention to them. Fame and popularity will always be first for these people, and money will take a secondary role.

- Those who want to be comfortable

These people are even more dangerous because there are so many of them. They are poor, they are broke, and all they want is not to be broke. They say that they want to be rich, but once they start making $6000 a month and they can buy all the toys they want, and can have a kid comfortably, they are going to get incredibly lazy. These people are employees masquerading as entreprenuers. They don’t want to be rich, they just don’t want to be poor.

You can recognize these people in that they dream of getting rich and then retiring to some beach to drink cocktails and doing nothing. They work so that they don’t have to work, but that doesn’t work.

- Those who want to have more money

These are the people who see making money as a game, and can’t ever stop. All they want to do is make more and more money, and the toys and the fame are completely incidental to this. Do business with these people, partner with them, because when there is an opportunity, they will go along with it. They will not drop out of the game because they have got enough, and they will not drop out once they make a certain amount.

These are the people who don’t care about their dress or about what car they drive or that people know their name. And these are the people that you do business partnerships with.”

Say no to socialism

Tuesday, March 23rd, 2010

This is funny. Say no to socialism.

Why did Friendster fail?

Monday, March 22nd, 2010

Jonathan Abrams talks about why his company failed:

Ask Abrams what he’s learned and you’re confronted with a torrent of mea culpas, disclaimers, and recriminations from a man who is at once bitter and resigned. “I take responsibility,” he says. “I was naive. I thought these big-shot guys were going to help Friendster.” His biggest regret, he says, was turning the company over to Silicon Valley’s best and brightest. As Friendster sputtered, Abrams says, he suppressed his entrepreneurial instincts, keeping quiet when he probably should have been lashing out.

With Socializr, Abrams is doing what he would have done at Friendster if he’d stayed in control. “Friendster was never finished–it was a prototype that I stopped having the ability to develop,” he says. Like Evite, Socializr helps concert promoters, bars, and anyone else who likes to host gatherings invite people to their events. Abrams hopes that lay users who receive invitations through Socializr will create profile pages on the service as well, which could develop into a full-fledged social network.

…But the most important lessons from Friendster have less to do with what Socializr does than with how Abrams plans to run it. Abrams was seduced by the experience of his “all-star team,” assuming that talented people would come up with the right solutions. This time, he plans to favor quick and dirty engineering solutions over the elegant but not necessarily practical ideas that were imposed by Friendster’s management. Having only two employees helps–as does making do with less than $1 million in angel funding. The idea is to grow slowly, have fun–and, above all, avoid hot-shot venture capitalists. “I’m hoping it’ll be like 2002 and 2003, when I didn’t have a lot of money and I got a lot done,” he says.

Create a culture of openness and welcome dissent

Sunday, March 21st, 2010

Create a culture of openness and welcome dissent:

Internal constructive critics are your best friends — too often, founders are blinded by their own enthusiasm for their creative vision and then are surrounded by sycophants, kissing up. Founders who fall out of touch rapidly lose their ethical bearings. At Intel, founder Robert Noyce and Gordon Moore did not look for sycophantic followers in selecting the brilliant, contentious, but relentlessly honest Andy Grove as their colleague and successor. Similarly, Craig Barrett and Paul Otellini have consistently fought for different points of view internally — without undermining the enterprise, and always reinforcing Intel’s self-critical core ethic.

A Halo gamer and a geneticist walk into a bar

Saturday, March 20th, 2010

From the point of view a computer programmer, this is an overly obvious conversation:

Our genes may not be the basis for human individuality, according to new studies in Science and Nature. The key may actually lie in the sequences that surround and control our genes.

The interaction of those sequences with a class of proteins, called transcription factors, can vary significantly between two people and are likely to affect our appearance, our development and even our predisposition to certain diseases.

I might write, sarcastically, it’s almost as if the software that allows us to exist has a working state in which you can record variables that hold different values. On a more serious note, the comparison seems so obvious to me, I’m unclear why this seems like a surprise for geneticists. What is their working model of what goes on in the chromosomes?

The tone of surprise has me imagining some scene such as some geneticist sitting down next to some dude who plays Halo a lot. The geneticist asks how its going and the Halo gamer says “Pretty good. I lost the last game but this game I’m winning and I just got more grenades and more ammo” and the geneticist says “But that’s impossible. Microsoft hasn’t changed the software since the last time you played. If the source code is still the same, then whatever happened to you last time should also happen to you this time.”

In 2008 I recall reading that a group cloned pigs were growing up with as much diversity as any group of pigs. Which makes me think this idea should have been settled a long time ago.

Deliberate practice accounts for success far more than raw talent does

Saturday, March 20th, 2010

What is deliberate practice?

“Deliberate practice is designed specifically to improve performance with the key word being ‘designed.’ The essence of deliberate practice is continually stretching an individual just beyond his or her current abilities. By contrast, deliberate practice requires that one identify certain sharply defined elements of performance that need to be improved, and then work intently on them. The great performers isolate remarkably specific aspects of what they do and focus on just those things until they’re improved; then it’s on to the next aspect.”

“Deliberate practice can be repeated. High repetition is the most important difference between deliberate practice of a task and performing the task for real, when it counts. One is the choice of a properly demanding activity just beyond our current abilities. The other is the amount of repetition.”

“Feedback on results is continuously available.” Though this is obvious, it is “not nearly as simple as it might seem, especially when results require interpretation. In many important situations, a teacher, coach, or mentor is vital for providing crucial feedback.”

There is a definitive ‘before the work’ component. “Self-regulation begins with setting goals – not big, life-directing goals, but more immediate goals for what you’re going to be doing today. In the research, the poorest performers don’t set goals at all; they just slog through their work. Mediocre performers set goals that are general and are often focused on simply achieving a good outcome. The best performers set goals that are not about the outcome but rather about the process of reaching the outcome.”

There is a ‘during the work’ phase. “The most important self-regulatory skill that top performers in every field use during their work is self-observation. Even in purely mental work, the best performers observe themselves closely. They are able to monitor what is happening in their own minds and ask how it’s going. Researchers call this metacognition – knowledge about your own knowledge, thinking about your own thinking. Top performers do this much more systematically than others do; it’s an established part of their routine.”

There is an ‘after the work’ component as well. “Practice activities are worthless without useful feedback about the results. These must be self-evaluations” and “the best performers judge themselves against a standard that’s relevant for what they’re trying to achieve. Sometimes they compare their performance with their own personal best; sometimes they compare it with the performance of competitors they’re facing or expect to face; sometimes they compare it with the best known performance by anyone in the field.”

If() statements in DNA

Saturday, March 20th, 2010

I find it interesting that they might be close to figuring how if() statements are written in DNA:

“We developed a new approach which enabled us to identify cases where a protein’s ability to turn a gene on or off can be affected by interactions with another protein anchored to a nearby area of the genome,” Korbel explains. “With it, we can begin to understand where such interactions happen, without having to study every single regulatory protein out there.”

DNA, combined with the proteins that make up our chromosomes, resembles a solid state computer, in that the software and the working memory share the same medium. The genes make up the “software” that begins the process of creating us, but the rest of our DNA is given over to recording the working state of who we are:

A group of scientists led by Jan Korbel at EMBL and Michael Snyder initially at Yale and now in Stanford were the first to compare individually sequenced human genomes to look for what caused differences in gene regulation amongst ten different people. They focused on non-coding regions – stretches of DNA that lie between genes and, unlike genes, don’t hold the instructions for producing proteins. These DNA sequences, which may vary from person to person, can act as anchors to which regulatory proteins, known as transcription factors, attach themselves to switch genes on or off.

Korbel, Snyder, and colleagues found that up to a quarter of all human genes are regulated differently in different people, more than there are genetic variations in genes themselves. The scientists found that many of these differences in how regulatory proteins act are due to changes in the DNA sequences they bind to. In some cases, such changes can be a difference in a single letter of the genetic code, while in others a large section of DNA may be altered. But surprisingly, they discovered even more variations could not be so easily explained. They reasoned that some of these seemingly inexplicable differences might arise if regulatory proteins didn’t act alone, but interacted with each other.

Here is an oddly conservative statement:

Finally, Korbel, Snyder and colleagues compared the information on humans with that from a chimpanzee, and found that with respect to gene regulation there seems to be almost as much variation between humans as between us and our primate cousins – a small margin in which may lie important clues both to how we evolved and to what makes us humans different from one another.

In a study published online in Nature yesterday, researchers led by Snyder in the USA and Lars Steinmetz at EMBL in Heidelberg have found that similar differences in gene regulation also occur in an organism which is much farther from us in the evolutionary tree: baker’s yeast.

Do they simply not understand what they are looking at? Are they unaware that software has both code and state? As a point of comparison, If a friend of mine is playing a game of Halo, and Microsoft suddenly gave me the complete source code to Halo, would I know what was happening to my friend in the game? Of course not – how many times he’s been killed, how much ammo he has left, that would all be state, that would all be recored in working memory, it wouldn’t be in the source code. Or, another example, if I’m given the complete source code for Adobe Photoshop, I still know nothing about what images people, all across the world, might be editing at any given moment. Having source code doesn’t tell me state.

Why is this obvious to me and yet seemingly confusing to the biologists?

Brandon Savage: learning the Zend framework

Thursday, March 18th, 2010

Brandon Savage has some advice for anyone learning the Zend framework:

Various frameworks out there have varying degrees of integration with one another. While an argument can be made as to whether or not tightly integrated frameworks are better or worse than loosely integrated frameworks, when starting a new framework it’s best to accept it lock, stock and barrel (in other words, accept it completely).

This isn’t always easy for developers. They have a particular problem they want to solve and often times solving it with a framework they haven’t used requires a lot of setup, a lot of learning, and a lot of banging their heads against a wall. I know for me this is true whenever I start working on a new framework or product. But this is an important component of using the framework. When we try and go around the framework, when we fight the framework, we ultimately end up doing a lot of the things that the framework is aimed at keeping us from having to do.

Embrace the framework. Once you’ve learned it and mastered it, you can go around it, fight it, and ignore it if you want. But until that point, ignoring it will only lead to more headache and frustration – especially when you discover the framework was doing something you were trying to do all along.
….

Learning a framework is much like learning a new language. Have patience for it. The reward is great – framework knowledge can be reused over and over again. Being patient and taking the time to learn means that the knowledge will be valuable, rather than being bits and pieces of a hurried experience (which is far less valuable). A holistic understanding of the framework will serve you well, as a developer.

Why do people use the word “uh” in verbal communications?

Thursday, March 18th, 2010

Over on LinkedIn someone asked why the word “uh” is so common in people’s speech. I offered this answer:

At one point I did a series of interviews with actors and actresses about their careers. When I transcribed the conversations, I was stunned to realize how far spoken language departs from written language.

In my innocence, I first set out to create a “literal” transcription. I thought I would just write down what people said. But I soon realized this was a misguided notion. People do not speak in full sentences. I offer you this one example:

Question: What first interested you in dance?

Answer: I was at North Carolina, I mean Chapel Hill, and uh, we, I mean Mark and Jeffery and I, ah, we were going to meet, ah, we met with Alex and we, Alex is the professor, and um, we met with Alex and, okay, I should add this was after we’d begun to rehearse, and uh, but the thing was the words we were speaking sounded false, I mean, when I said them, when Mark said them, the other people in the class, I was watching their bodies, and uh, it was all false, I had trouble believing anything people said, and I said this to Alex, but uh, he, uh, he, he, he kept insisting that we just needed to get more into the roles, but that wasn’t working for me, for me, and I, uh, I can’t remember why, but, I started to doubt that approach, even Stanislavski, that whole approach, uh, and, for me, it came back to the body, to body language, cause, because, there is so much there, in the shoulder and the face and the spine and the pose and your gestures, right? And, I just, I felt, I thought, uh, I was thinking that we needed to focus more on the body, on body language, because if your mouth is saying one thing but your body is saying something else, uh, then I have trouble believing you, believing that kind of acting, that kind of acting, that kind of interaction. So I started taking dance classes and, uh, pretty soon Mark commented, Mark and Jeffery, they both noticed the difference and when for the second class, I mean the second semester, they took the dance class too, and, uh, we saw, we saw how much of a dramatic change it brought to our acting, because now we were acting with both our bodies and our words.

- – - –

The above is from my one attempt at a “literal” transcription. If you ever try to transcribe a conversation, you realize early on that you need to edit the thing rather heavily, because your readers are going to expect full sentences, and no one (absolutely no one) talks in full sentences. Verbal communication depends on the ability of the speaker to correct what they are saying. They can edit as they speak. If they start a sentence, and then realize they are phrasing things the wrong way, they can simply re-start the sentence, which is what people often do. In such situations, people tend to use a neutral sound such as “uh” to fill the void, and also to indicate that there is about to be a transition, or possibly the statement is going to start over again. A speaker can listen to the words coming out of their mouth and correct or qualify whatever seems wrong to them, for this reason, there is less need to get things right the first time. With written communication, one needs to get the communication correct before sending it to the audience.

Is Apostrophe the best CMS written in PHP?

Thursday, March 18th, 2010

Robert Speer has a great write up of Apostrophe:

Apostrophe is the easiest to use content management system (CMS) available to the open source community. An easy CMS means that content managers are more likely to use it, which means consumers will get better information and be more likely to follow the sites profit funnel.

For web solutions providers Apostrophe is a CMS solution that bypasses the commodity hell of Wordpress, Drupal, and Joomla by providing a unique value differentiation. Apostrophe also has the advantage of being built on an enterprise grade web framework used by sites like Delicious, Dailymotion, Yahoo! Answers, and Yahoo! Bookmarks. Symfony provides a consistent structure that encourages collaboration, and the large community of developers already familiar with Symfony mean help is available.