Ayende @ Rahien

Refunds available at head office

Sleep, lack of

Okay, here is the deal, I just got Mercedes Lackey's When Darkness Falls, and I'm probably going to read it all in my non existing spare time.

There for un-neccecary activities such as working on OSS, blogging (maybe), writing documentation and sleep are going to be put on hold. The issue is a bit more sever in that I got Steven Burst's Dzur in the package as well. I have been waiting for that one for ages.

Do no expect much acitivity in any front. However, this being such an important task, I would like some help picking a Wiki for my projects.

At the moment I have a site with MySQL 4 + PHP 5 (IIS) / ASP.Net 1.1, so any suggestions are welcome. I am already investigating Media Wiki, but I won't be able to take it live until I have sorted out the way it looks (orange and rhinos are my things, sue me.)

If you have any suggestions, or know how I can easily skin media wiki, I would like to hear about it.

Terror

This is not a post about technology.

You may, or may not, have heard about the recent trouble in Israel. For the past month a Israeli soldier, Gilad Shalit is being held by Hamas terrorists. Today, eight of our soldiers were killed and two were kidnapped by the Hizballa terrorists.

There has been calls to immediately negotiate the release of thousands of terrorists held in Israeli's prison in exchange for those three kidnapped soldiers.

I have been personally involved in two such operations (links to Hebrew site).
  • New Path - to strengthen Abu Mazan position.
  • Blue & white - exchanging prisoners in return to a kidnapped civilian and the bodies of three sodliers.
The facts behind the numbers were that within a month about 25% of those released turned up in prison again, for terrorist activities. At that point I lost count and interest.

I know for certain of at least two occuations where prisoners that were released in those operations had commited suicide bombing (link to one of them, couldn't find the other on the web) that killed my people. In those two occations, the terrorists were released from my prison.

This is posted as a reminder that exchanging these prisoners does not end with the exchange itself.
Tags:

Published at

Hebrew Blog

I wanted to announce that I have a new Hebrew Blog here. This is part of the Blogs.Microsoft.co.il comminity. You can read about the community here.

I am going to post mainly Hebrew stuff there (since it kind of hard to explain why Reshumot is a bad name for the accounting package in English) and because I would like to learn to write in Hebrew again :-) This is still my main blog, I'll just be posting stuff there that just isn't meaningful to readers outside of Israel. I'm guessing that there will be a fair bit of overlap between the two, as well.

The community there is at the very start, of course, but be sure to subscribe now, there is going ot be a lot of content there soon.

Tags:

Published at

Seeking a Game

I am thinking about getting a game. Which would be the first in a year or two.

I don't usually play games because of time constraints (I can code or I can play, which would be more fun?)*

Anyway, I'm considerring getting something role playing game. The last I had was Neverwinter Nights (which didn't have a great graphics but was really cool {and programable, too}). I played Dungeon Siege for a while, but the very flat plot drove me away.

I'm not sure that I want to play a MMPORG (sp?) game, by the way. I just want to kill some zombies. But in an interesting ways, and preferably something that looks good.

Any recommendations?

* I do realize that this answer may be problematic in some people eyes :-)

Tags:

Published at

Updated Phone Number

I forgot to update the cellular phone number on the blog when I changed my main phone.

I fixed it now, if you want to call me for any reason (technical or otherwise), give me a call. I'm at (972) 052-584-6969

Can't code

I got VS.Net open since yesterday afternoon, a couple of bugs to fix, several new features to code on several projects. Interesting stuff, too.

I just can't find the drive to do so. When I used to write fiction I got the same feeling. Authors call in Writer's Block and there are many methods to break it. For me, it usually pass in a day or two, but this is ridiculious. I know what I need to do, and how to do it, but the engine won't start.

I've already tried to sleep it off, but it didn't work. I'm going to try reading, movies and excersize to get started again.

Things I have learned today

Random thoughts about today, no real content:

  • Copying gigabytes of data is going to take a long time.
  • Debugging Brail is fun, you get to play the "Who exactly changed this bit" game, where you have the pre processor, Brail's compiler extentions and Boo's magic all mixing together to a complete whole.
  • It's not good to save dynamic assemblies to the bin directory of an ASP.Net application, the application will reset itself on each request. It make debuging sort of hard, I heard.
  • Causing your head to impact the wall at high speed hurts. And it also attracts some funny glances. What is up with those people?
  • It's actually a joy to work with Brail on a project, I get to remember all my previous design decisions, and I don't have anyone to blame. It's an interesting spot for me, since I usually blame Microsoft and/or Oracle.
  • Linking SQL Server to Oracle requires black magic and a couple of chickens. SQL Server will flat out refuse to read a perfectly innocent table from Oracle, but for some reason readily agree to read the same table when piped through a view.
  • One off solutions aren't.
  • SQL Server has a lot of different errors messages, I'm going to switch the language settings to Japanese and enjoy the pretty pictures in red brush.
  • Physical violance against machines works.
  • You can be agile when fixing errors. See: iterational error reduction (First iteration, 300 errors, second iteration, 150 errors, third iteration 140 errors, etc).
  • A run-check cycle of ~3 - 8 hours really sucks.
  • The varchar '000' is an invalid number, even when you try to get it as a varchar, but only when the moon is full and when you back is turned.
  • Relying of reference equality to manage syncronizations between objects can bite you in the ass.

 

Changes

I look back at my posts for the last couple of weeks, and the are full of SQL stuff. One of the nicest things in having a blog is that you can go back and see what you did at various points in time. I knew that I blog about it, and indeed, I found out that I wrote my first trigger less than three months ago. That was a half day ordeal involving me and a couple of co-workers, checking out all sorts of crazy stuff (recursive triggers, for instance). But writing the last post took me 5 minutes for the SQL, and ten for the text between them :-)

Feeling Great

I went to work today expecting to be there until it would all work, and I expected it to start working (if at all) only very late into the night. I got off today before I usually leave, with a really great feeling. Everything that should've worked by tonight worked. It is a great feeling. I'm not sure how we did it, because last week I would've probably said that it can't be done by the time frame we had, but we did :-)

Now it's a show & tell and off to the next stage, spit & polish.

Tags:

Published at

The Yuck Factor

I internally categorize a project on several factors:

  • Interest
  • Difficulity
  • Amount of new stuff that I learn
  • Yuck Factor

What I find is that while the first three things are very important, the Yuck Factor is usualy the thing that decides how I would remember the project, and how much I enjoy doing it. I'm not sure how I decide what is the Yuckiness of a project, though. It mostly has to do with design and it doesn't bear much in relation to the other factors. In my list of things to watch for are:

  • Hard to understand (#1 mistake).
  • Hard to modify / extend
  • Stupid! Stupid! Stupid!

I was very nearly in tears today when I saw what some people did to the poor machine. Some people really believe in dynamic programming (more on that later). And it means totally incomprehensible code. It doesn't matter that the project is intersting, not too difficult and I'm learning a lot of new stuff. It sucks to deal with it.

Tags:

Published at

24 Years

I just noticed the hour, realized that today is tomorrow, and that I'm a year older. Happy birthday to me :-)

And now I really need to get some sleep.

Tags:

Published at

In The Zone and Pair Programming

I think that anybody who ever done some serious development was in the Zone, that place where you can see the whole system in your head, and can see what would happen if you make this change. It's a happy place, and you can easily lose track of time (or meetings :-)) when you're there. It's also highly annoying to be taken out of it suddenly (phone ring, for instance).

So, given all that, why does pairing work? In the last couple of months I had a chance to pair with several people, some of them were better than me, some where worse (in the technology that we were writing with). Sometimes the difference were pretty big. Nevertheless, I think that I consistently find that I work faster, and actually have a lot more fun when paring. I recently had to do some math work with a friend, and the same thing happened there, I think that together we were three or four times faster than each of us on his own.

And we don't spend all the time developing, or solving math problems, we talk, argue, call each other stupid because of cource you can see that it does this because of that, etc. So, I can get why I'm productive when I'm in the Zone, but I never get the chance to get into something even remotedly similar to this when pairing with someone.

I think that this is in part because when you work with someone else you need to explain yourself to the other person as you go along, and as a part of that you explain to yourself. I can't really count the number of times that I've explained a piece of code (that I just sweated hours on) to a co-worker, and suddenly I take a piece of paper and start writing scenarios that I didn't even see before. I know that doing math problems it certainly was like that. I knew some stuff and the other guy knew some stuff, and by mutual argument we reached to the (possibly, at least 95.454%) answer.

How to plug unshamelessly

Is unshamelessly a word? Nevermind about that, I've a real problem here.

If you're not aware, I'm the author of a fairly nice (and I'm being objective here) mocking framework for .Net. So what is the problem? I'm reading a lot of stuff on the TDD mailing list, and mocking comes up fairly frequently, especially lately, for some reason. So far I managed to keep from putting little comments like: "In Rhino Mocks you can do this easily by...", since I think that this isn't nice, and on the long run, it will sound as if I'm trying to sell it (even though it's free).

Any ideas on what is the recommended behavior?

On Customer Service,

Two tales of Customer Service for this day:

The Bad:

I'm signed up to a wireless router as well as hosting from Barak. The idea was that I wouldn't need to bother about setting it up, etc. In practice, I called them yesterday at around 10:00 PM, because I couldn't connect my laptop via wireless (first time I'm trying to do that with this laptop). They kept me waiting for over 30 minutes, listening to stupid voice and a stupid message telling me to reboot the computer and check my name and password (over and over and over again).

The girl on the other side couldn't solve the problem, and promised to escelate the problem to a more senior person, which would call me back. He called me back half an hour ago, meaning over 30 hours of wait. it took another call after that to deal with it.

The (very) Good:

I just tried to ordered some prints of digital photos that I have from Asaf (Hebrew site). I had a problem with the site, and I used the contant us a mail complaining about it. In 30 minutes they called me back and make sure that the problem is fixed.

I like this kind of service.

Tags:

Published at

Boo vs Python

I'm using Spam Bayes as my spam filter, and mostly it is doing spectacular job.

The interesting thing is that the single consistent false positives that it has is with mails regarding Boo. I'm not certain how to view this...

Perhpas I should mention that Spam Bayes is written using python? Sibling rivalry? (Okay, maybe distant cousins).

No More Swapping

I'm getting another 1Gb of RAM tomorrow. My main machine has 1Gb of RAM, and I constantly has to monitor the memory usage because I use a lot of applications simultaneity. Right now I'm using 967Mb:

  • Outlook is the usual culprit, with 91Mb.
  • RssBandit add another 68Mb to the pressure.
  • NAnt is currently compiling Castle, so it's happily eating 110Mb.
  • WBEditor (which I use to write this post) is taking a hefty 59Mb to allow me to do that
  • Firefox is no mincemeat with 55Mb taken.
  • Winword is active because I'm writing a mail message, add another 48Mb to the cake.
  • SQLServer is a modesy 46Mb
  • Explorer is another 30Mb

I'm reporting only the current mem usage, there is also the peak mem usage to consider, since I don't see it being returned the the free memory pool until the process is closed. And I've not even talked about the amount of memory Visual Studio feels free to grab. While I wrote this post the memory usage went up to 1037Mb, the peak memory usage for this machine is 1.5Gb.

I'm pretty pissed that I need to do that, even though the last upgrade I made on this computer was over a year ago, I expect 1Gb to last, damn it. The one thing that I can't stand is when I'm thinking faster than the computer can follow. The problem is that the moment that this starts, I can feel the thoughts going away, and I know that I'm going to lose them while I wait the computer to finish whatever it is that it is doing.

Swapping is a great idea, but it make the computer totally unusable for the user seating in fornt of it. It breaks every assumtion that you have with regard to cheap/costly operations. To everyone who says that memory is cheap, consider this: I'm probably going to break Outlook 2003, since it's not capable of handling more than 1Gb of RAM (but it has a hotfix).

On Politics and Socialism

I don't usualy talk about politics, but this time I would like to make an observation to anyone who is interested in Israel politics. After the election of Amir Perech as the leader for the Avoda (Labor) party, there seemed to have been a huge shift in the political landscape in Israel.

For the first time, there is the possibility of an election where the main focus is not about peace or security, but rather the social issues. I currently don't hold an opinion about any of the parties, but I definately like the way it is going. An election focused on social issues is due for a long time. Peace is important, and saving life is more so, but I don't see that much of a difference between any of the candidates regarding the peace process or protecting Israel from terror.

Regardless of who will will the elections, it put a whole new spin on the political arena, one that the politician had conveniently ignored for "more important issues" for too long.

Tags:

Published at

Spam Attack

There are over 60 spam messages in my junk mail folder right now, a result of less than 20 hours of not opening the mail.

What the hell is happening out there that I'm getting so much spam? Strangely, most of it seems to be from my own domain, and masquerading as delivery failures. I can't see anyone profiting from that.

Any ideas?

Update: Over 130 spam messages, what the hell has happened?

Tags:

Published at

Amazon Mechanical Turk

Amazon solved the AI problem. They pay a human to do the things a computer is not smart enough to do.

The idea is that you have a very complex problem that a human could solve instantly, such as: "Is there a red balon on this picture?" You make a web service call, and somewhere a human will look at the problem, and solve it to you. You program thinks that it just called a normal external service. The human gets some money for each task s/he complete. This is very cool. And very scary. I'm reminded of SF books that had a similar idea, but with pain/pleasure receptors instead of money.

Assuming that the cost of each task is 0.2$, and a human can answer 45 tasks per hour, 8 hours a day, that is 72$ a day, which translate to about 22.5 thousands of dollars a year (6 work days per week). Considering that the only thing that you need to do is to use the pattern matching part of the brain, it's really cool.

I can certainly see people who do that for a living. Consider the difference in buying power from the First World to the Third World, and you'll see that it's a pretty lucartive offer in many markets. In addition to that, it's soemthing that require no skills and no training. You can do use that to reduce unemployement for lots of areas.

How to make people happy

[Via Alex Bendig] There is a post in The Business of Software about a new manager that came into the company:

... we got a new director of engineering.  During a meeting on why we were late on our current project and what could be done about it, I joked and said he could get us a fridge in the lab with Mt. Dew in it.  Well not an hour later, a guy comes in wheeling a mini fridge...stocked with Mt. Dew.

Personally, nothing has motivated me more to want to work in that dull white lab and put in some extra effort then that small [sic]jesture.

There were a lot of comments there saying that they should have asked for [Aeron Chair/Dual LCD monitors/more RAM/Etc], but some of the commenters there got the issue (Joel Spolsky & Eric Sink). It's not about what was requested, it wasn't a meeting to request stuff that they needed. It was a chance comment that the manager acted upon, and in one simple gesture, he gained quite a lot of good will and made sure that the entire department would like being there.

I'm currently reading Peopleware, and the whole book can be summarized as "Make them happy!" That manager made his people happy, period. It's a small investement, but it'll pay off big dividends later on. People who like what they doing are going to do it better.

Tags:

Published at

Coding & Music

I'm currently reading Peopleware, and I got to the part where they talk about background music and the affects this have about the right brain ability to generate insights.  I like to work while there is music in the background.  I think that I do it around 95% of the time. I usually tune it out after a while, but I'm told (I rarely notice it), that I sing along some of the songs.

I don't find that I've trouble coming up with solution while I'm working, but very often I've insights when doing something totally unrelated, like making coffee, driving, etc. I usually listen to music / podcasts while driving, so it might now be that. Then again, if I'm listening to a podcast, it's usually technical (unless it's Mondays), so it may be that the left brain is busy listening to that.

Any comments on that?

Tags:

Published at

Free as a bird? Or not?

This slashdot story made me smile. A software bug set inmates free early and late, some by nearly half a year!

I used to be the commander of a high security prison, and I understand how those systems work. What I find interesting is the number of check and balances that most prisons have. I'm familiar with the inner working of most prisons in Israel, both military and civilians, and it's hard to believe that you would get a case of this proprotions.

One case might happen, but then all hell would break lose.

In any case, I find it very hard to believe that the inmates do not know when they are to be released, and while they might not speak if they are released early, they would definately speak if their due date has come and they are still inside. I never knew an inmate that didn't know to the day (and usually to the hour) how long he was inside, and how long he still had.

I remember having to go over all the inmates files weekly, checking that all the documents were in order, and that the computer system* was correct. I find it hard to believe that they didn't have any kind of human intervantion. I know that when I released an inmate, I went over all the paperwork twice, because you don't play around with this kind of stuff.

* A glorified name for Excel sheet.

Tags:

Published at

Continuing a meme: What makes a good developer

Matt asks what makes a good developer?

  • Lazy - And willing to go to great lengths to be lazy.
  • Tinkerer - Willing and able to take peeks beneath the surface.
  • Aesthetic - Appriciate a good and elegant solution and actively works to get to it.
  • Passionate - See this as more than mere work.
Tags:

Published at

Done!

I've finished my backlog of emails and posts, now I need to do so reseach on NFitness
Tags:

Published at

Running as hard as you can...

just to keep yourself in place.

I finished answering all the mail and checked RSS Bandit, 307 unread posts. I'm down to 148, but I don't think I'll finish today...

Tags:

Published at