Archive for May, 2006

Silicon Valley outside America

Paul Graham wrote another essay this month! Two in a month, these are some exciting times :) Once again, the subject is “How to be Silicon Valley”.

In the first version Paul had concentrated mostly on how to do it in the US. Now he talks about making a SV outside the US and why one is more likely to happen here, at least for now. Very good stuff.

In sum, these are the reasons:

1. The US Allows Immigration. — I’ve lived in many countries, and I concur. It might not be easy to get in the US, but there’s a known algorithm you can follow to do so. Illegal immigration is not the only alternative.

2. The US Is a Rich Country.

3. The US Is Not (Yet) a Police State.

4. American Universities Are Better. — Bold, but he makes some excellent points.

5. You Can Fire People in America. — Yes! I always thought this was *the* reason, but I’m happy having it at least as *a* reason.

6. In America Work Is Less Identified with Employment.

7. America Is Not Too Fussy. — This one is a little weaker I thought. My experience is that the US is more strict than some of the countries I lived in, though I never lived in Switzerland. Maybe he has a point when it comes to business laws though.

8. America Has a Large Domestic Market.

9. America Has Venture Funding. — And we learned, that they don’t like to drive very far ;)

10. America Has Dynamic Typing for Careers. — I imagined this to be true everywhere, not just here though I may have been wrong. Last week I went to a meeting here in the Bay Area, with the purpose of having foreign PhD and post-doc students to meet people already working here. It seemed clear to me that most of these students where really interested in going back to the old country and work in the academia forever since. I now see what Paul Graham is talking about.

I think it also helps to have billboards such as this

Comments

Top 15 lies of programmers

Guy Kawasaki has blogged about lies from CEOs, engineers, VCs and even his own.

Though he already covered the lies of engineers, those lies seemed more like something an engineering team as a whole, would tell to outsiders (customers, suits, whatever) but not a list of lies programmers tell each other. Here’s my list of top lies individual programmers tell. Some I’ve used, some I hate to hear, some are just sad.

1- I can do this in 3 weeks
Translation: I have no idea how long it’s going to take, but it seems hard enough so it’s going to take *at least* three weeks for me to understand it, then I’ll have a better idea of how long *it’s going to* take…maybe.

2- I program better when I program alone, no need no stinking pair programming or code reviews
Translation: I’m afraid of exposing my thought process to my peers. Maybe they’ll see I’m not as smart as I like to pretend I am.

3- I’m not afraid of offshoring
Translation: I’m scared shitless of offshoring, and of open source, and anything that forces me to evolve or become obsolete.

4- I don’t need to test my code, that’s why we have a QA department
Translation: I don’t like to test my code

5- I would never work for Microsoft
Translation: Microsoft never made me a good enough offer

6- I enjoy working in a team
Translation: I have no choice but work in a team. I hate people, that’s why I chose a profession that involves spending 12 hours a day staring at a screen.

7- I’m 90% done with this feature
Translation: I’m starting to see what this feature is about, code is even compiling now.

8- I’m done with this feature
Translation: I’m done with the fun part of coding. Now I only need to document it, refactor, test, update designs, check for leaks, and all that other stuff.

9- It’s a feature
Translation: It’s a bug

10- There’s no way that feature can be done
Translation: That feature seems boring

11- My code editor/OS/language is the best
Translation: I only know how to use my code editor/OS/language

12- I rather code than go on a date
Translation: I have no hope of getting a date

13- Interview questions at Google are stupid
Translation: I failed most interview questions they ask at Google

14- I’ve been programming since I was 7
Translation: When I was a pre-teen, I used to go to the local Radio Shack, and type on one of them TRS-80’s they had on display:

10 PRINT "YOU SUCK"
20 GOTO 10
RUN

15- Good idea boss, I’ll start right away
Translation: Whatever

Comments (2)

Book: Lean Software Development

Just finished reading Mary and Tom Poppendieck’s “Lean Software Development - An Agile Toolkit”, a book on agile development. This is an *incredibly good book*. As a so-called “agile enthusiast”, I had never read it and that was a shame. I’m glad I did now as I learned many new things, or reinforced things I already knew or suspected.

The book basically debunks two commonly accepted (and often repeated) ideas:

a) Software is a different type of engineering. Agilists argue that we should not try to learn lessons from manufacturing, since software is not the assembly line (which is true) and the way things are done in the manufacturing world, only make sense there (which is not true, as it turns out).

b) Manufacturing is still using the same scientific management technique Frederick Taylor invented almost a century ago. As it turns out, manufacturing came a long way, and it has been demonstrated that Lean Manufacturing works better than you thought. Okay, better than *I* thought.

The book is laid out as toolkit (the book’s subtitle really makes a lot of sense) taking ideas from Lean Manufacturing, and adapt those ideas to Software Development. I’m a big believer in “agile is not just for software” so whenever I come across examples where agility is used elsewhere, I tend to get very excited about it.

With this book you will not only learn that manufacturing is not the sequential and predictive process you thought it was, but you will also learn that software development can borrow from many of the lean manufacturing ideas (as opposed to borrowing from more traditional ways, and therefore getting stuck with waterfall)

Toyota has a long history of using “Lean Manufacturing”, or agile ways for making their cars. GM and Detroit in general, were adepts of predictive manufacturing. Because the later you fix a problem, the more expensive it is, Detroit chose the Big Design Up-Front strategy, where’s Toyota went with with the Embrace Change approach. Though Detroit now understands how the Japanese do it, and they’ve been using more agile ways since the nineties, I can’t help but think that Lean has something to do with better and cheaper cars they make, and therefore with the problems GM is having.

The authors identify seven lean principles and suggest 22 tools for applying the principles. Each principle has its own chapter, where the authors explain what the principle really means, how it’s used in the real world (not software), how it can and should be adapted by software. The biggest chunk on each chapter/principle, is the part where they provide the reader with the “tools” for applying the principle.

Here are the tools for each practice, with one of my favorite quotes for each tool:

Eliminate waste
1- Seeing Waste

Beloging to multiple teams causes more interruptions and thus more task switching. This task switching is waste.

2- Value Stream Mapping

First and foremost, our mission is to provide customer value

3- Amplify learning

Deterministic control simply does not work when there is variability in the terrain

4- Iterations

A Standish Group study found that 45 percent of features in a typical system are never used and 19 percent are rarely used.

5- Synchronization

The general principle is that if builds and test suites take too long, they will not be used, so invest in making them fast.

6- Set-base Development

…communicate constraints, not solutions.

Decide as late as possible
7- Options Thinking

a plan should not prespecify detailed actions based on speculation

8- The Last Responsible Moment

Amateurs try to get everything right the first time and so overload their problem-solving capacity

9- Making Decisions

Marines plan, but they do not predict

Deliver as fast as possible
10- Pull Systems

Telling developers what to do, does not generate much motivation

11- Queuing Theory

Just as a highway cannot provide acceptable service without some slack in capacity, so you probably are not providing your customers with the highest level of service if you have no slack in your organization

12- Cost of Delay

have the accountant work with the team to develop a simple economic model showing the cost of delay, the cost of reduced features, the cost of maintenance, and so on.

Empower the team
13- Self-Determination

Treat people like volunteers

14- Motivation

People suffer when they lack purpose

15- Leadership

sharp distinction between managers and leaders

16- Expertise

In companies with successful matrix management, functional managers view their jobs as mentors and teachers.

Build integrity in

17- Perceived Integrity

Model driven-design is a valuable approach for complex systems, as it lets everyone speak the same language

18- Conceptual Integrity

It should be possible to test each leayer independently from other layers by simulating the behavior of other layers. Layers provide high cohesion within the layer and separation of concerns between the layers, two fundamental architectural patterns in software design.

19- Refactoring

Where do people get the idea that all good design happens at the beginning of a project? Many people involved in developing products understand that great designs evolve over time.

20- Testing

Testing does not cost, it pays, both during development and over the system’s lifecycle

See the whole

21- Measurements

When you try to measure performance, particularly the performance of knowledge workers, you’re positivelty courting dysfunction. [...] Our culture is adverse to this conclusion; performance measurements seem to fundamental to the way we do business [...] Measurements are important for tracking the progress of software development. [...] However, information measurements, not performance measurements, should be used for this purpose.

22- Contracts

a fixed-price contract with a vendor hoping to profit from changes, combined with rigorous change approval mechanisms to contain cost, may approximately double the cost and time it takes to develop the software, while producing a lower quality result [...] The process of selecting of selecting a vendor for a fixed-price contract has a tendency to favor the most optimistic - or the most desperate - vendor. [...] This, fixed-price contracts tend to select tehj vendor most likely to get in trouble

In addition to these fine principles and tools, the authors teach how to apply these in big companies, small companies, and almost as importantly, when to use or not use a given practice, how to apply those for different types of project, etc. If you have any time of authority in your organization, want to improve things, and never read this book, you should be going here now.

I’m going to file this book under: No Lead Should Be Allowed To Practice Without First Reading This (TM).

Comments

Paul Graham on how to “build” a Silicon Valley

It’s always an exciting day when Paul Graham writes something new. It’s like waiting for the new Red Hot Chili Peppers (great album btw), or the new Age of Empires (meh).

Paul writes about what’s necessary to make a Silicon Valley-like place.

I think you only need two kinds of people to create a technology hub: rich people and nerds.

I remember in the mid to late-nineties, there were all sorts of Silicon-this and Valley-that, it was pathetic. What made it particularly ridiculous, was that the people behind these names, thought that we were stupid. They thought that by having 3 subsidiaries of tech companies in the same block, was all it took to fool us.

In his new essay, Paul has the definitive guide for building your own Silicon Valley. I certainly feel this is a special place when I’m on the 101 going home and drive by Ebay, Yahoo, McAfee and Sun, next to each other.

Venture investors, however, prefer to fund startups within an hour’s drive.

This reminds me that at my first startup in the Valley (circa ‘96), the then CEO now turned VC, claimed that the reason why it was important to be in the Valley, was that investors refuse to drive for more than 30 minutes. So apparently now it’s an hour. I wonder why that is. Is it because 10 years later there is more traffic, or maybe more competition between VCs, or more greed.

Comments

Scott McNealy’s sense of humor

You can see it here from this page.

“I feel great, lost a few pounds, been working out…how’s it going Jonathan?”

“Some of you must know I’m not CEO anymore, I’m sure Jonathan told you”

“There are some disadvantages of not being CEO, I had to wear my badge to get in today”

Advantages to not being CEO:

10: I don’t have to apologize for stuff I say
9: No longer on the most overpaid CEO list
8: I just say “See Jonathan on that”
7: I read Hockey News without guilt
6: I shave even less often
5: No more SOC certification
4: I have someone to blame now
3: I can sell my last business suit
2: Jonathan doesn’t gold, so I guess I gotta do it
1: My office is VERY close to the men’s room

Comments

Eclipse books

The Eclipse books I’ve read, tried to read, or I’m reading.

Comments

Programmers and Pātissiers

I’m a big fan of French cuisine, Belgian chocolate and European pastry (especially Portuguese pastry). I’m also a huge fan of “agile practices that apply to real life” (it’s just something that tickles my brain).

I was watching Pierre Hermé on TV5 the other day. Pierre is a real artist and I’m not surprised he’s been dubbed the “Pastry Picasso”.

The stuff he was doing and talking about looked really good. He was talking about his “secret”, and of course it came down to passion, perseverance, top-notch ingredients, and…YAGNI.

Paraphrasing here:

“Wisdom is important. It’s crucial that you try not to put in one cake, everything you know. Instead stick to the essentials of what you’re trying to accomplish”.

It’s like he was saying “do not over-engineer” to programmers, or “watch out for feature-creep” to product managers.

Could it be that when us developers add complex and unnecessary features, we’re really trying to show off all of our talents? If I ask around why we do it, the most common answer I get is “because I’ve been doing this forever, and bad and unpredictable things do happen”.

Sure, but is that really the reason, or are we just trying to show how good and smart we are, in this one cake, er, program?

If you understand French, maybe you want to see the clip here.

Comments (1)

Zen Patent II - This Time It’s Personal

And now Apple is suing Creative Labs…

I’m not defending Apple, after all, they’re trying to be the Microsoft of MP3s, using the same monopolistic tactics. It’s just that I’d rather see the best product on the market, not the product from the company with the best patent lawyers.

To be able to countersue is why you need patents, not to sue in the first place.

Comments

Zen Patent

Paul Graham a couple of months ago:

When a company starts fighting over IP, it’s a sign they’ve lost the real battle, for users.

Ars Technica today:

Creative has filed a lawsuit today against Apple

Creative’s stock price at an all-time low, Creative may be turning to the unfortunate market model of trying to litigate its way into profitability

So there you go.

Comments

Features from Guild Wars I wish other MMOs would adopt

I played some Guild Wars Factions (their new “expansion”) yesterday. Though Guild Wars and the new expansion, Guild Wars Factions, have some flaws still, they introduce a few fantastic ideas. It’s hard for me to understand why other games don’t try to come up with something similar, except maybe if the reason is laziness or lack of skill.

Some would say that’s a good thing, that at least these other games are not a rip-off of Guild Wars. I’ve heard that, and I would say that first, it’s not a rip-off but a source of inspiration, and second, these other games do indeed, copy existing games. Most new games are heavily “inspired” by Ultima Online and Everquest I. What I’m saying is that perhaps they should start getting their inspiration somewhere else.

A while back I already talked about the great patching/loading system Guild Wars has, as well as the whole non-shard approach. In my list of MMO features that should become standard, I’ll add those two things again. If nothing else, for completeness:

No-Shards
There are no shards (or “world servers”) in Guild Wars. You create a character, pick the profession, etc, but you never get to say in which server you want your character to live. And why should you? Why should you have to choose a server? It’s not like they’re different, they’re just copies of each other anyway. Instead what they did, is that they created a load balancing system where you’re automatically put on a server that’s not heavily loaded. If needed they dynamically add servers and distribute the load accordingly.

You might say “but how can I meet my friends if I can’t pick the server I’m in?”. In fact, the games puts your character in the best server possible, but you can move around servers, by simply pulling a drop-down list and selecting the server you want to be in. If that server is so full that it doesn’t take new players (momentarily), your friends can meet you in your server. Nice and easy.

Lazy-patching
Don’t force me to wait for 5 hours (or more!) when there’s a patch. More often than not, I don’t care about what’s being patched anyway. Maybe it’s some dungeon on the enemy side of the world, maybe it’s a zone I no longer visit. Why should I wait for those things to patch? Because the developers were lazy, that’s my guess.

Guild Wars uses lazy-patching. The first time you visit a new place (zone) the game needs to download the files, but only the first time, and only because you wanted to go to that zone. This makes for very fast patches and the hit you get the first time when you enter a zone, is no different than the hit you get in other games, which had the zone already pre-loaded.

No monthly fees
I already paid for the game, typically $50, why should I have to pay again every month? Before Guild Wars, I use to laugh at this argument. I would tell people that they had to pay a little extra every month, because there were bug fixes, server maintenance, etc. The online model was different, and people should get with the program.

Then Guild Wars comes along and there are no monthly fees. How do they do it? For one, their servers are never down, maybe it’s because of their lazy patching approach, maybe it’s something else. But frankly, everything works so well, they make it look so easy, that they could not justify a monthly fee. Maybe that’s the trick, make something crappy, then you can charge people for making it somehow hold together, “these are hard problems you understand?”.

Guild Wars shows it can be done. And I think it should be done.

Charge for expansions
I realize that Arenanet (they’re the Guild Wars makers, by the way) needs to feed their people. Rather than making one game, once, then charge you every month for the priviledge of playing, Arenanet uses the time they’re not rebooting their servers, to work on new expansions. The game is big as it is, but more content is always a good thing.

Guild Wars Factions (GWF) is the latest (first) expansion, and in fact it’s not even an expansion. It’s possible to play GWF without buying GW.

Why is this smart? For people like me, who get bored easily, it’s the only way they’re going to get my business. I’ve played many, many online games. From Ultima Online to World of Warcraft, from Everquest I to City of Heroes and Earth & Beyond (ouch). But eventually I get bored, and eventually I got from playing a lot to not playing at all. That’s when I cancel my $15 monthly subscription. If I could make my own money, maybe I wouldn’t cancel, but $15/mo x many games, that’s some dough.

So I cancel my subscriptions, and since I can’t access the game if I’m not paying, I might as well just uninstall the game as well. I might be a little forgiving here, because I know that I do go back to games from time to time, and because of that, I don’t always uninstall. Though I imagine most people uninstall as soon as they cancel their accounts. Once you cancelled and uninstalled, you probably won’t check the forums and other related game sites. You turned the page. So now you don’t know what’s going on with the game. You know you played it at one point, and you remember being bored towards the end.

Not so with Guild Wars. You can stop playing because you’re bored, but since you don’t pay to play the game, you can always check out the game once a month or once a year. Play just enough to stay in the loop with what’s coming. Then a new expansion comes out, and you know about it. You might even buy it. Then again you want to pass, but if you uninstalled and are not at least logging on 2 or 3 times a years, you will pass for sure.

I read somewhere that they’re already working on the 3rd chapter, and even on the 4th. Hungry people they have there it seems. But at least they’re not making me pay to fix their bugs.

No downtime
What is with the weekly or sometimes even daily(!) downtime? What kind of flawed system needs to be rebooted every day, and then it takes an hour or two to come back up? I don’t know what kind of problems all the other game companies have, but apparently it doesn’t have to be.

Sometimes I just want to watch
Guild Wars lets you observe a battle happening in the other side of the world. Also when you die, you can click on the name of your teammates, and observer the game from their point of view, while you’re waiting for a “res”. This is a fantastic feature I think. I can learn PvP tricks, by watching what the experts are doing. These are live matches mind you, not just some movie that someone made. At any given time, you can press the “B” key for oBserve, pick an ongoing battle from a list, and participate as an observer. What a great idea.

Have real content variety
In most games, the monsters you fight at level 1 are pretty much the same monsters you will be fighting 40 levels later. Except of course that the name changed. You went from killing “A Rat” to “A Big Rat” to “An Elder Big Mofo Rat”. Woopdeedo! Sometimes the size and the colors have changed, but not always.

Adding more hit points to a rat, multiplying its size by 3 and making its color black instead of brown, is not a shortcut that the folks at Guild Wars took.

In Guild Wars you get to interact with lots of different monsters. Every new mission and level brings new stuff to keep the game fresh. And you’re not even paying $15 a month, so I don’t know how they do it, but it seems that it can be done.

Don’t make me walk everywhere
Flying or riding your horse between places gets old very quickly. Do it once or twice and that’s it, you don’t want to it again. Make me walk to some new place once, that’s fair. I need to discover the surroundings, brave the dangerous creatures, etc. That’s all okay. But for chrissake, don’t make me sit in top of that stupid bat for 5 minutes in a row!

Guild Wars nailed it. Just press “M” for Map. It shows all the places you’re already visited (places you’ve discovered on foot) and click on the place where you want to go. Bang! There you are.

Other games let you recall to *one* pre-designated place, and even then, only once in a while. Some games don’t even allow the single insta-travel, so people commit suicide (well, their characters do, it’s not that bad! :-) so they short circuit some boredom and go straight to the fun stuff, the actual game.

At least in Ultima Online, I could have runes for the places I cared about, and recall there whenever I wanted. Someone (who probably doesn’t play the game anyway) must have decided that it would be much more fun to force people to run, swim, ride a horse, fly, walk on their hands. Everything but to actually play the game.

No ads
Most new games will force me to go through a series of screens filled with ads before I can actually play. If I’m lucky I can even click/press ESC and move on to the next screen. If I’m not, then I’ll just have to watch those things now, won’t I?

With Guild Wars, you launch the game, it asks you to authenticate, pick a character, and you’re in.

Let people talk
This is not really something that games should add, but instead something that games should stop removing. Why can’t I talk to other side? I mean, it’s a game, not war! On any game that you can think of (real life games I mean), it shows good sportsmanship to acknowledge your foe, even shake their hands. But not in online games. There you’re not even supposed to talk to them. Games do this by converting your text to garbage to the other side (and vice versa). I think it’s stupid and brings nothing positive to the game.

Let me solo when I want to solo
I don’t care if it’s an online game, sometimes I just want to solo. Sometimes people like me, who insist in soloing on an online game, we get some heat. Somehow if you’re going to solo, you shouldn’t bother playing an online game. If you ever been to a bar to have a drink, but didn’t want to make friends with the other patrons, well, that’s what soloing in an online game is. You want to know that the things around your character are controlled by real people, but you don’t want to talk to them.

Now, I don’t mean to say that I never want to talk to other folks in the game, but sometimes it’s true, I don’t want to. Maybe I have some time to do something in game, but I don’t know if it’s going to be 10 minutes or 2 hours. If you join a group and leave after 10 minutes, let me tell you, it’s the other folks who won’t want to talk to you after that.

Anyway, whatever the reason, I should be able to solo and group when I feel like soloing or grouping. Certain, in fact, most games, won’t let you have access to certain content unless you’re grouped.

Guild Wars has a nice little feature for when you need to tackle high level monsters and you don’t want to bothered with a group of people. Just hire (for free) some NPCs in town. Instead of waiting for ages to find a healer, just click the NPC healer in town, and add it to the group. Sometimes AI > NI anyway. So now I can access high level content, and if I decide to leave in the middle of quest, no one will tell me to do things to my mom.

Let my characters share stuff
Most games do this now, so it’s not that revolutionary. But that plus the no-shard thing, really gives a lot of freedom. Oh, I know that the RPG purists out there will screm foul, but this is a game, not a religion. Think of it as having 2 jobs. One you do during the day, and another you do in the evening. Would you buy gas to go to your evening job, with money you made on your day job? Prolly yes, right?

See, nothing to be ashamed of. It’s helpful, and it should be a standard.

Other features
These are some of the unique features (some are more unique than others) that I think should be standard. Guild Wars also has a couple of features that though I find really cool and interesting, I would not necessarily expect in other games. For example, before you enter a mission or a PvP instance, you need to be smart about what skills you will bring in, as you cannot change the skills once you’re in the mission. There are hundreds of possible skills you could be using, but you can pick just 8.

This calls for really interesting strategies, if you want to win more than you want to lose. For those who have played RTS games, and decide to boom, turtle or rush without knowing what the person is doing, this is a little bit like that. You pick your strategy, and hope for the best. The difference with the RTS approach, is that you can’t correct it. If you went for “melee only” skills, and your opponent went for “root and cast” skills, you’re screwed.

Interesting feature indeed, but if other MMOs don’t want to implement that particular one, but decide to learn from the others, I’ll be happy.

The astute reader will notice that a lot of the Guild Wars super features don’t apply to online games only. If you build software to be used by online communities, maybe there is a trick or two you can borrow from Guild Wars, such as “lazy-patching” (aka jit installing) and “no-shards” (aka mirrors).

The game has its flaws of course, but it’s nice to play a game that doesn’t play games. (hah)

Comments (3)

DDO’s out - GWF’s in

The 7-day trial of Dungeons & Dragons Online is not over yet, but I already uninstalled it. Usually I don’t necessarily uninstall games I no longer play, as I’ve been known for going back. This time I decided there was little chance I would play the game though…and it does free up 4 gig off my disk.

The part I liked the least was that I spent 80% of my play time in the local tavern regen’ing. Now, I do enjoy spending time in the tavern with my friends, even if it’s just an online version of a tavern (ah, sweet memories of Cat’s Lair in Britannia), but this was different. I just wanted to be able to solo ya hear!?

DDO reminded me a lot of Guild Wars (which I like), because of the graphics and the instance-heavy approach. The differences are:

- No PvP
- Very hard to solo
- Monthly fee

So, DDO is out and Guild Wars Factions is in.

I just got me a copy of GWF and don’t have much to say about it yet, but stay tuned, I should have have some screen shots up as soon as I get a chance to try it.

Comments

The Great “Little Schemer”

The Little Schemer

This is a great book. It’s very short, less than 200 pages, with not that much text in them, and still it has a lot of interesting content.

The style is unconventional, which might be surprising at first, but it’s easy to get used to. Rather than tell you about Scheme, the author asks you questions, making you think and provide your own answers. “It this a list?” -> No, “Why not?” -> Because blah, “How to make it a list?” -> This way …, etc.

Each page is split into two columns, with the left hand column being a question to you, and the right hand column the proper answer. The questions start very slow, and each question is only incrementally more difficult than the previous one.

If you want to learn Scheme, this is certainly one of the books I would recommend, perhaps even the first book you should read (I think I said that about a couple of Scheme books, but this time I mean it…I think). When you do, don’t get too impatient and skip any questions. Try to stick to the easy and simple steps, one by one. Try and do the exercises which are very short, not a whole lot of code to write. Get a scheme interpreter to help you experiment. I like DrScheme.

At the end of the book, you will have covered a lot of material. More than I had anticipated it was possible in not even 200 pages, using this question-answer approach.

You’ll learn the 10 commandments of writing a Scheme program (10 easy to follow rules). You’ll know how to manipulate lists: create, add, remove, count, merge, etc. All this stuff will build your Scheme muscles and prepare you for the last 3 chapters.

In chapters 8, 9 and 10, the author covers the really interesting stuff: Lambda calculus, the Y-Combinator and the Meta-Circular Evaluator (or how to write a Scheme interpreter in Scheme). All in a matter-of-fact way.

When you’re done with the book, you’ll have some deep understanding of Scheme though you won’t know everything there is to know about Scheme yet. Closures for example.

Next on the list should be The Seasoned Schemer and The Reasoned Schemer.

Comments (2)

XP 2nd Edition is for Ri people - again

Recently I commented on the fact that Kent Beck’s Extreme Programming Explained *2nd* edition was really for people at a Ri level of Agile understanding. I don’t know if other people agree with it or not, but this is how I understood it.

Then as I’m helping review an early draft of a certain author’s new book (1), I come across a passage where the author seems to agree. Roughly that the first edition of XP is for Shu people and the second edition is for Ri. It’s great when I can dream “great minds think alike” :-)

(1) I’m not sure if I can talk about it. The book is on Agile though.

Comments

Nature has arrived

Nature has finally caught up with last year’s iteration. Six weeks later!

April 06 again

May 06

(more here and the entire cycle here.)

Comments

Dungeons & Dragons Online

You can try Dungeons and Dragons Online for free for 7 days. Start here.

DDO

It’s a huge file, 1+ GB and on the fastest server I could find, it still took 4-5 hours to download. Try 2 or 3 downloads, see which ones seems to move faster, then cancel the others.

Oh, and you don’t have to enter your credit card number to play, that’s always a plus. I hate it when they do that, as I know I know I’ll forget to cancel on time.

So anyway, I installed this yesterday, and will be playing until next weekend. If you’re interested join Kosta in Riedra.

DDO

The graphics are excellent (that’s always a plus, to me at least) and the gameplay is very cool. I was always a fan of Turbine. Loved Asheron’s Call 1 and 2, and was sort of sad when they finally pulled the plug on AC2. Hopefully they’ll be more successful this time around.

DDO closely follows the D&D rules, at least as much as I remember them. Apparently there are 10 levels, though each level seems to have 5 ranks, so it’s really 50 levels I guess. Not sure about any of this of course, I would have to read the manual, and that takes away from playing time.

DDO

One thing that is different from other games, is that you have to be in a tavern to auto-heal. Kosta is a sorcerer, and has no idea how to heal himself. I also don’t know where to get him healing potions, and since I’m mostly soloing, it means there’s a lot of dying. Being a sorcerer, hit points are limited, and the no-auto-heal thing takes a little to get used to. Same for “mana” (they call it spell points), you need to save it for when you really need it, as it doesn’t regen (AFAIK) while adventuring.

I still don’t know how big or how small the world is. I’ve been mostly in town, getting missions for there (sewers, houses, etc). I don’t know yet if I can just leave town and really adventure.

Comments

Bohemian Rhapsody

One of the greatest songs ever, brilliantly interpreted (lip-synched really) by these kids.

Comments

What constitutes a good science project for kids?

Kevin says it’s one with an hypothesis such as:

1. will almost certainly be wrong
2. can be tested empirically
3. can be proven mathematically

with extra credit if you can write a computer simulation of it

I like it.

Comments

Shu Ha Ri to explain “if you’re doing XP after a year, you’re not doing XP”

As I was re-reading Alistair Cockburn’s “Agile Software Development” I came across the notion of Shu Ha Ri.

First, let me emphasize that the fact I have to use the term “came across” makes me sad. It means I had forgotten all about it. In fact, what was scary is that I had forgotten about most of the content in the book, despite liking the book a lot, it’s as if I had stored it in a volatile part of my brain. It’s as if I was reading it for the first time. I knew I had read it, because it had all sorts of notes, and it was my handwriting too.

Anyway, enough sadness. The important part is that I came across Shu Ha Ri which I find a very powerful concept.

Shu Ha Ri comes from Japanese martial arts, more specifically from Aikido. It basically refers to the three levels of knowledge, or the three stages while a student progresses, from apprentice to master.

Shu (to keep, maintain) is the stage where you just follow the rules by the book. You’re given an exact set of instructions, and you’re supposed to follow them until you master that set of instructions. There are many ways to reach a specific goal, and you’re shown just one way. It’s your job to reach that goal, while staying on that specific path.

Ha (to detach) is when you start reflecting on the meaning of whatever techniques you’re learning. Why this path and not a different one? What other paths are there? This is a research phase.

Ri (to transcend) is when the studend is no longer a student in the sense that he’s learning from books, but he’s inventing. He internalized the notions he’s been studying, and now can adapt them to the real world. The student is no longer memorizing or doing research or learning. Instead the student is now inventing, the student is now a master.

This is powerful stuff. It helps me counter someone who says “I read the XP white book, and I see it as a set of recommendations, I’m adapting it to my world”. If the student is not in a Ri stage already, it means he doesn’t want to deal with Shu and Ha stuff, and wants to jump to Ri rightaway. He needs be reminded that he’s no master yet.

It also helps me clearly understand what Kent Beck meant by (and I’m paraphrasing) “If after a year of practicing XP, you’re still following the book, you’re not really doing XP”. Though I sort of understood what he meant (need to adapt, etc), it was never as clear as with Shu Ha Ri. Doing XP by the book is what Shu is for. But you’re supposed to start noticing alternatives (Ha) and eventually come up with your own set of principles while staying in the spirit of XP (or agile in general), and that would be Ri.

It also helps me understand the discomfort I had with the second edition of the white book. The first edition was really meant for Shu people, the second edition is for people transitioning from Ha to Ri. I once argued on the XP mailing list that the second edition was for people with a black belt in Agile-Fu. I was at least right in using a martial art analogy =)

What Shu-Ha-Ri does not explain however, is why did I forget that I even read the Cockburn’s book in the first place? Or maybe I have internalized it so well, that my brain decided it was okay to forget about any references to the original text (cheat sheets my brain calls it). Yeah, I’ll go with that. I wish mr brain had saved something about Shu Ha Ri though.

Comments (1)

Global Dimming + Global Warming = Really Bad combo

I know that I’ve said the only thing I watch on TV is Jon Stewart but that’s not quite true. I also watch Stephen Colbert, The Sopranos, the BBC World News and another show here and there. What’s important about Jon Stewart is that his show is the only thing I’m willing to pay for. Everything else I watch because it’s there.

For example, yesterday I watched Dimming the Sun from the NOVA series. A documentary on Global Dimming.

I wasn’t aware of the phenomenon at all, and it’s sort of scary, as it’s often the case when it comes to significant climate changes.

Global Dimming is the theory that says that sunlight is decreasing, and has decreased significantly in the last decades. It’s a global phenomenon (hence the name) and in certain places the sunlight has decreased as much as 10% in the last 20-30 years. I can’t remember what the average was, but I remember thinking “oh boy” (is that scientific enough?).

What happens is that particles of pollution attach to the droplets of water in the clouds, and end up acting as a huge mirror, reflecting some sunlight back. The more pollution there is, the bigger the mirror, the cooler the earth.

Leaves

But then there’s Global Warming. If the earth is cooling down due to Global Dimming, how come most (real) studies say it’s warming due to Global Warming?

That’s the scary part, Global Warming and Global Dimming are opposite forces, cancelling each other’s symptoms (not the real effects, just the symptoms). One is working to warm the planet, the other trying to cool it down. At least some of the existing climate models, don’t take into consideration the cooling effect due to dimming and because cooling isn’t being factored in, we thought we had more time, until we reach the point of no return. It now seems that we have about 10 years before weather changes are out of our control.

We seem to be basically trapped. The slow down Global Warming, we can keep on polluting the air. That way the greenhouse effect won’t be as bad. We won’t fry, since the planet will be cooler. Somehow I’m not that excited about this solution.

We can try to reduce pollution, and in fact we are, at least in most industrialized countries, but that will *accelerate* Global Warming. The earth will be taking all the sunlight it can, bringing its temperature back to normal (1 degree Celsius more than today). This extra 1C in combination with Global Warming’s own temperature increases, will have a noticeable effect. By noticeable, I mean that you’ll be able to see and feel it. No more questionning if it’s happening or not. If you now have to swim to work, it means it’s happening.

I find it fascinating that researchers observed huge changes (measured and noticed) in temperature range, during the 3 days after 9-11, when all planes were grounded. The simple fact that there was no air traffic for 3 days, made it that there were no contrails for 3 days, and that was enough to have an impact. Some argue it was just a coincidence.

Comments