Older blog entries for apenwarr (starting at number 366)

2008-01-16: This post is not about Macbook Air

This post is not about Macbook Air

Yes, this is the so-called "blogosphere," and yes, people in said "blogosphere" tend to start meme-of-the-moment posts with statements like "I promised I wouldn't talk about such-and-such in this blog, but..."

I've done the same.

But not this time.

This time, I simply didn't write a post about the advantages and disadvantages of the feature selection in the Macbook Air. Or whether I plan to buy one, or how cool or not cool it is.

See how much restraint I have?

Syndicated 2008-01-16 17:32:13 from apenwarr - Business is Programming

2008-01-13: DemoCampCUSEC2 in Montreal

DemoCampCUSEC2 in Montreal

If all goes well, I'll be presenting at DemoCampCUSEC2 in Montreal. I was a little late signing up, but the organizers claim there's still time. I hope so.

I should be demonstrating my wild combination of Nitix, VMware, and a few other things, showing how to get an entire database-driven Windows application, including the Windows it runs on, deployed 15 minutes or less. Come watch!

Syndicated 2008-01-14 03:00:48 from apenwarr - Business is Programming

2008-01-09: Why I Never Hire Brilliant Men

Why I Never Hire Brilliant Men

And now for something completely different: an article from 1924 called "Why I Never Hire Brilliant Men."

I find it's a very pleasant read. The soft tone is something we've sadly lost in our modern world of hyper-sensationalized "Top 5 blah blah" blog headlines. I'd like to be able to write like he did; no such luck, but at least I haven't resorted to the "top 5" yet.

As a bonus, the article also makes many good points about hiring.

Syndicated 2008-01-03 23:19:37 from apenwarr - Business is Programming

2008-01-07: More biases

More biases

I've written several times before about different kinds of statistical biases. I care a lot about that since, next to actual incorrect facts, the most common source of wrong decisions seems to be a misguided use of so-called statistics.

Here are two great articles about bias. The first is about the Anchor Bias:

    They spun a roulette wheel and when it landed on the number 10 they asked some people whether the number of African countries was greater or less than 10 percent of the United Nations. Most people guessed that estimate was too low. Maybe the right answer was 25 percent, they guessed.

    The psychologists spun their roulette wheel a second time and when it landed on the number 65, they asked a second group whether African countries made up 65 percent of the United Nations. That figure was too high, everyone agreed. Maybe the correct answer was 45 percent.

Isn't that amazing?

I claim, by the way, that people like Ayn Rand and Richard Stallman *have* to exist simply because they help de-anchor-bias others. "100% of software should be free?! Holy cow, you're crazy. Maybe more like 90%."

Meanwhile, Peter Norvig, who is (if I understand correctly; I'm offline as I write this) one of the Google researchers working on their PageRank statistics, wrote a great article about different kinds of bias in both experimental design and the interpretation of results.

It's long, but scroll down to section I4 and find the surprising answer to this question (via Eliezer Yudowsky):

    1% of women at age forty who participate in routine screening have breast cancer. 80% of women with breast cancer will get positive mammograms. 9.6% of women without breast cancer will also get positive mammograms. A woman in this age group had a positive mammography in a routine screening. What is the probability that she actually has breast cancer?

It is not a trick question, but my answer was completely wrong. Think about it, then follow the link and check your answer in section I4.

Syndicated 2008-01-03 23:19:36 from apenwarr - Business is Programming

2008-01-05: Welcome to 2008, Part 3: Environmentalism Update

Welcome to 2008, Part 3: Environmentalism Update

Please note the following changes in environmental terminology. Remember, if you get these mixed up, you'll look old-fashioned.

We used to refer to "the hole in the ozone layer." This hole was reputedly caused by certain chemicals (like our dear departed otherwise-non-toxic freon, now replaced by mildly toxic alternatives) which, when released into the atmosphere, would bind with ozone particles and take them out of circulation. The ozone layer is responsible for "absorbing" certain kinds of dangerous radiation from the sun and turning them into "harmless" heat.

At the same time, there were warnings about an excess of "greenhouse gases" and the related problem of acid rain. At the time, the majority of activism was toward reducing emissions of various nasty particles like carbon monoxide, methane, and sulphur. Natural Gas was described as the "clean alternative fuel", because all it releases (when burned efficiently) is carbon dioxide.

Greenhouse gases work like this: the sun's radiation is partly absorbed by the earth, and partly reflected back. Greenhouse gases tend to absorb more of the reflected light, trapping it in the atmosphere instead of letting it escape, thus increasing the temperature.

Ironically, ozone is a greenhouse gas. The "hole in the ozone layer" prevents certain types of radiation from being absorbed and safely converted into harmless heat. Other greenhouse gases absorb other wavelengths of radiation, converting it into dangerous heat. Got it? Good.

We don't talk about the ozone layer or greenhouse gases anymore. Instead, we talk about "carbon emissions," by which we mostly mean "carbon dioxide emissions." Carbon dioxide is what you produce when you breathe. After you clean up your artificial pollution-spewing devices, carbon dioxide is pretty much all that comes out. Other than its contribution as a greenhouse gas, it is harmless.

So the question is: why do we hear so much now about "carbon emissions" instead of "greenhouse gases" in general, or acid rain, or the ozone layer? Is it good news, and the other problems are mostly solved? Or do we as a society just fixate randomly on the most recent problem that someone famous has made a movie about?

Syndicated 2008-01-03 23:19:35 from apenwarr - Business is Programming

2008-01-04: A thinly veiled rant

A thinly veiled rant

Some of the best advice I've ever heard was ostensibly to women about dating, but applies equally to everybody and all their relationships.

If you want to know how a person will treat you once he gets to know you, look at how he treats other people. If you want to know how someone talks about you behind your back, look at how he talks to you about other people.

It's really as simple as that, in life or in business. Don't ignore the signs. Sometimes understanding people is so easy that you can't believe what's obviously true is true.

Syndicated 2008-01-03 22:57:48 from apenwarr - Business is Programming

3 Jan 2008 (updated 3 Jan 2008 at 19:03 UTC) »

2008-01-03: Welcome to 2008, Part 2: Dietary Information

Welcome to 2008, Part 2: Dietary Information

Please note the recent important changes in dietary advice.

Red meats, which were previously associated with high blood pressure leading to heart conditions, are now okay. It's carbohydrates that are bad. Eat meat, but leave the potatoes at home.

Note that milk no longer "does a body good." In fact, it is now widely believed that people over the age of about 5 years lack the enzymes to digest it properly.

Corn syrup is not, apparently, at the heart of the American obesity problem. This and other exciting "facts" ("Contrary to its name, high fructose corn syrup is not high in fructose") can be found at the Corn Syrup Website.

Saturated fats, the so called "bad" fats that are found in various greasy things like the no-longer-evil red meat, are no longer anything to worry about. Well, maybe they are, but we don't worry about them, because...

"Trans" fats must certainly be much worse, as evidenced by the large number of food packages which now proclaim that they don't contain any. Nobody knows what trans fats are or if they even exist, but because your favourite foods don't contain them, you should feel secure. Phew.

Update: My dad sends this critical additional information:

Syndicated 2007-12-30 20:02:43 (Updated 2008-01-03 19:03:36) from apenwarr - Business is Programming

2008-01-01: Welcome to 2008

Welcome to 2008

I am now officially part of the "previous" generation of programmers. I know this because the new generation no longer has "vi vs. emacs" editor wars, while mine still does.

The new generation's wars are vi/emacs vs. IDEs.

Carry on then.

Syndicated 2007-12-28 20:21:10 from apenwarr - Business is Programming

2007-12-21: Thread-free coroutines in C# 3.0

Thread-free coroutines in C# 3.0

As I suspected, C# 3.0 has everything we need to accomplish a clone of WvCont from WvStreams in C++. It took a bit of fiddling to figure it out, but the final answer is simple and elegant.

The code below shows a ToAction() extension method that lets you convert any iterator into an Action, so that anywhere a "normal" callback is expected, you can provide a coroutine instead.

We do some non-obvious tricks with variable scoping in ToAction(), but that only has to be written once. The syntax for *using* it is simple.

using System;
using System.Collections;
using System.Linq;

public static class Example { public static Action ToAction(this IEnumerable aie) { bool must_reset = false; IEnumerator ie = aie.GetEnumerator(); return new Action(delegate() { if (must_reset) ie = aie.GetEnumerator(); must_reset = !ie.MoveNext(); }); }

static IEnumerable demofunc(string prefix, int start, int end) { for (int i = start; i

And the output looks like this:

 *   : 1
   * : 100
 *   : 2
   * : 101
 *   : 3
   * : 102
   * : 103
 *   : 1
   * : 104
 *   : 2
   * : 105
 *   : 3
   * : 106
   * : 107
 *   : 1
   * : 108
 *   : 2
   * : 109

The above program requires Mono 1.2.6 or higher (compile with "-langversion:linq") in Linux, or .NET 3.5 or higher in Windows.

Syndicated 2007-12-21 03:59:23 from apenwarr - Business is Programming

2007-12-19: On the efficiency of using auto-refactoring IDEs

On the efficiency of using auto-refactoring IDEs

    Imagine that you have a tool that lets you manage huge Tetris screens that are hundreds of stories high. In this scenario, stacking the pieces isn't a problem, so there's no need to be able to eliminate pieces. This is the cultural problem: they don't realize they're not actually playing the right game anymore.

    -- Steve Yegge

Syndicated 2007-12-20 01:20:40 from apenwarr - Business is Programming

357 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!