Oren Eini

CEO of RavenDB

a NoSQL Open Source Document Database

Get in touch with me:

oren@ravendb.net +972 52-548-6969

Posts: 7,640
|
Comments: 51,277
Privacy Policy · Terms
filter by tags archive

Bug Tracking?

time to read 1 min | 121 words

Any recommendation about a good bug tracking system? 

I really don't want to pay per user, that is for sure. So FogBugz is out, and JIRA is expensive to start with (although it is pretty amazing bug tracker). Trac looks really interesting, but I get too many errors that I am not sure how to solve when I try to use it (entirely my fault, I know), and it looks to me like it is a tool that really requires some learning.

I would rather that it would open source and wouldn't require a day or two to install on windows (e.g: bugzilla). Preferably with a nice UI.

 

time to read 4 min | 706 words

Ken Egozi reminded me that my issue is not with ASP.Net itself, but rather with the WebForms implementation. As someone who had done quite a bit of work with the internals of ASP.Net, I have nothing but respect to the way it is architected and impelmented, This is truly a really great platform. (Except the entire System.Web.Cache API, which is completely internal, and therefor very bad in my eyes).

Update: I forgot to mention another point about Ken's post/comment. He suggested a view engine in C# / VB.Net. Unfortantely, this is not easily possible. To be a little more correct, it is not possible without a lot of really hard work. Neither language is extensible in any meaningful way, which would lead to building a view engine that it mainly parsing strings to create the object model. Possible, certainly. This is what aspx pages are, after all, but not fun to do at all.

Ben Scheirman commented on my post with some interesting observations.

About encouraging postbacks:

I don't see this as a problem. As long as you're aware of areas where you'll benefit from user friendly urls and back-button-friendly navigation I think you can avoid areas where it sucks.

I have issues with technologies where I have the easy-way and the real-world-way approaches. I don't want to benefit from friendly URL and have to do something to enable the back-button. Both of them are core parts of the web. It should be painful to not use them, not the other way around.

About view state bloat, complexity, MIA, etc:

Sometimes this can be a blessing. When choosing persistence strategies for page state, you have a lot of options. That's a good thing!

The problem here is that the ViewState model encourages its use (and its bloat), an ASP.Net page may be composed from several hundreds of controls, and each of them has at least several properties in the ViewState, mostly those are completely not needed. "Page State" is not what the name of the columns in the grid was, but that get saved as well, for example.

ViewState itself is a very good idea, actually. I can certainly see a generic way of persisting data as a valuable assest, the problem with this is what I define as data, and worse, that the moment you start using it you are limited to the postback model, see the point above for details.

I am really just defending ASP.NET because I enjoy it immensely. It is a breath of fresh air from my days with ColdFusion, PHP, and ASP.

Actually, I have been known to say more than once that I would just as soon do it in ASP classic, since it would be so much simpler to understand what is going on and the #%@# page wouldn't decide to make to move the data from one control to another randomaly. ASP Classic had a lot of issues with the way it is implemented, yes, but as far as the model that you are working with in the real one. ( I am assuming that you kept the COM for BAL and ASP for UI, of course, which no one did. )

I commented on making simple things complex and on the MCP exam today. Well, here is the (correct) answer on how to get the data from a text box inside a grid:

((TextBox)e.Item.Cells[1].Controls[0]).Text

To Google...

time to read 1 min | 129 words

The Google Blog managed to piss a lot of people with their request to not use Google as a verb. The reason being the Xerox and Kleenex precedents.

I don't like the tone of their post, and I think that they are already too late. In the DNR Bulgaria show, one of the guests (can't recall who) said something to the effect of: "You can't put the exception stack on live.com and get the details."

This sentence was met with resounding shock on the part of the audiance (and me), as people to to figure out what he was meaning. Replace "live.com" with google and you get what he meant. (After anyone got that, hilarity enused... by the way).

time to read 2 min | 321 words

(Image from clipboard).png

I just took 070-315 MCP test. Frankly, I was appalled by the level of questions that they had there. I speak here as both a technical guy and as a teacher. I used to be responsible for teaching and educating, and I am familiar with the concepts of good tests.

If I was handed this test for evaluation, even without the technical knowledge to judge the questions, I would have failed it. And question that has the following as answers is fatally flawed...

A) products.Merge(otherProducts, true);
B) products.Merge(otherProducts, false);

And that is leaving aside my own feeling about my own feeling about the whole DataSet / DataTable issue. Asking about the specifics of API in this manner is simply wrong. Especially when it is a boolean parameter. What are they testing, exactly?

Another question had the following query:

"select * from Users where UserId = " + userId

And the correct answer was something along the lines of:

dr.GetInt32(0);

I have so many issues with both question and answer that I don't know even where to begin. Given that I wouldn't hire anyone who tried to give me this code as an answer to a question, I have a lot of issues with this being a question.

Just a few notes:

  • Concatenating strings to create queries.
  • Not using parameterized queries.
  • Using raw numeric indexers to get the data from the query
  • Relying on the DB orderring of the columns.

I never had that much respect for certifications in the first place, but this is really pushing it. If this is the level of the tests, I am going to start putting job ads that says: "Not certified by Microsoft - BIG Plus."

time to read 1 min | 180 words

When I need to write stuff like this one:

  /*

  THIS IS NOT A BUG.

  This is because the get_Result can be null or undefined and this

  is considered a false value.

  */

  return Messages.get_result() == true;

The sad part is that it took nearly an hour to figure out why this happened.

The really sad part is that I would waste my time trying to explain to the developers who wrote this code why this is not a good idea.

time to read 4 min | 766 words

Dru Sellers is posting about some doubts he recently had about using MonoRail. He posted a part of a conversion that we had about it yesterday, and then Ben Scheirman responsed with:

I write my pages to be as thin as absolutely possible, so while good design is not encouraged, it's definitely possible.

IM is not really the medium to express complex thoughts, and I thought that it may be helpful to expand a bit on the subject.

I am currently working on a very big project that uses ASP.Net Web Forms model, and there isn't a lot of fancy UI stuff in there, and I still suffer from the model that ASP.Net tries to make me work in.

  • ViewState is a problem that we lost days on. Mostly because we are doing a lot of dynamic control generations, and we sometimes got the viewstate from the previous page into the new page, causing much havoc. But also because it just plainly so different than the way that the web works.
  • It highly encourage the PostBack model.
  • Simple things are not simple. Take for example needing to do something like disabling links on certain rows in a grid because of their state (capture the RowDataBound, get the cell by its numeric index, find the right control, disable it).
  • Complex things are complex. Page life cycle issues, nested child controls initialization order, events firing order, view state corruption issues when building multi-view controls, etc.
  • It is not fun to work with.

It got to the point where for my demo, where I need to present a simple hierarchy of messages, I tried at first to do this in ASP.Net, but stopped when I realized how complex this is going to be, and wrote a little demo that did it all in WinForms. Using WinForms, it took me half an hour to get to 70% of what I wanted, using ASP.Net WebForms, it would take me a day.

Frankly, at this point, I am not going to do any ASP.Net WebForms work unless I am paid for it, and I am going to push hard to make sure that any incoming web projects will use MonoRail.

When asked, I listed the following as things that make MonoRail hard to embrace:

Not Microsoft - some people sees that as a con, not me

Potshot: At least this way I know that it will not have a hard dependency on the office 2007 beta 3 refresh 1. And it will continue working if I install IE7 on the server machine.

Not something that everyone knows.

But, it is very easy to learn how to start, and it doesn't punish novices by letting build something in completely the wrong way. The learning curve is very smooth, as well. And frankly, if you can't learn MonoRail without a 400 hours course that will chew the material for you, I don't want your on my team.

Tool support not that great

If only I could get Brail syntax highlighting in Visual Studio... I don't even need intellisense, I am not doing anything complex in the views. For that matter, I usually edits my views in SharpDevelop anyway, so this isn't that big of a deal.

No 3rd party controls

There aren't any 3rd party controls for MonoRail that I know of. But, it can (easily and painlessly) use all the HTML controls that are out there. No I'm not talking about <input> ;-). I'm talking about everything that the non-ASP.Net world uses, which is more than powerful enough to create beautiful sites.

No designer - a plus for me.

I am not using the designer at all, mostly because it is horrendously slow and like to put stuff like style="height=29px" which are a killer to remove afterward.

time to read 2 min | 271 words

So I gave the lecture to some guys at work (reminder, I am giving an Active Record lecture on monday at the Tapuz User Group meeting in Microsoft), and it went very well.

I found some interesting holes (NHQG doesn't work on exe because of an annoying (and soon to be fixed) bug), and some stuff that I wasn't sure about with regard to some of the more recent things in Active Record.

I set the database dialect to SQL 2005 by mistake and was facinated by the way NHibernate did paginated queries. I forgot how hard it is to do this in SQL Server.

For some reason, my laptop refused to replicate the display to the second LCD, but will happily work with it in a dual monitor setup, so I had to code with my head to the wall just to see what was going on. My laptop is a Thinkpad R50e, and I usually use it with a dual monitor setup, so it may be related to that.

It also run about 15 minutes over the planned time (and I can certainly see it taking 3 hours easily), but I think that I can safely cut some of the more advance stuff to deal with it.

The guys that I lectured for weren't mainly programmers, so they actually didn't get too much of the pain that just went away, but I still got a Wow from them when I showed them how they can use strongly typed queries.

time to read 1 min | 103 words

Okay, hopefully, some ambulance chaser lawyer will hear about this and put it into action. Here is a new way to go after spammers. Don't try to sue them for sending spam, sue them for sexual harrasment. I mean, sending a person 5,000 emails suggesting that they can't keep it up is got to be at least slander, isn't it? I still carry deep emotional scars from the sex change operation photos spam.

In the US, you can sue over hot coffee that you spilt on yourself, and win. This has got to have some merit...

time to read 1 min | 81 words

I got a couple of disappointed responses about the time of my User Group talk, since not everybody can make it. Tomorrow I am going to give a trial run of the talk to some of the guys at work, and if you are going to miss the User Group talk, you are welcome to join. It is going to be tomorrow (Wendsday) at 17:00 in We!'s office (Hertelia, Maskit 27).

Just drop me a call if you want to come...

time to read 1 min | 75 words

I was asked to assist in a matter of reomving a piece of legacy. Here is the state of the project before the refactoring:

(Image from clipboard).png

This is a heavy lifting approach, and required of ReSharper For Real World:

(Image from clipboard).png

And, after a bit of hard work, we go to this state:

(Image from clipboard).png

Not perfect yes, but a good start :-)

FUTURE POSTS

No future posts left, oh my!

RECENT SERIES

  1. API Design (10):
    29 Jan 2026 - Don't try to guess
  2. Recording (20):
    05 Dec 2025 - Build AI that understands your business
  3. Webinar (8):
    16 Sep 2025 - Building AI Agents in RavenDB
  4. RavenDB 7.1 (7):
    11 Jul 2025 - The Gen AI release
  5. Production postmorterm (2):
    11 Jun 2025 - The rookie server's untimely promotion
View all series

Syndication

Main feed ... ...
Comments feed   ... ...