Saturday, December 22, 2007

I'm starting to think they should have licenses for owning a keyboard. Because people have too much time lately. And fast internet.
Amazon now has a "Customer Discussions (beta)" section on the product page.
Here's a snapshot of something I stumbled upon just now:




Lets try to help the lost souls, shall we:
Q: I'm a lesbian but I believe in God what should I do?
Don't tell Him.
And don't tell your girlfriend.
Q: How many sins did you commit today?
Who, me? about six or seven. Wait, last night was already today too? Hmm. Maybe like ten. I didn't know she was married, man.
Q: Why are there so many Atheists on a Religion forum?
We like it here. It's quiet and sunny. The girls are cute.
But enough with us, why are You Capitalizing Any Word That Has To Do With religion, yo??
Q: Only religion leads us to Truth!
Oh, I see now. Good answer.
Q: What is the meaning of a "pure heart" especially in today's society?
"She told him she only likes him for the car".
And Google doesn't know either so that's the best you're going to get.
Q: Is George Bush the Anti-Christ?
Anti-Christ? I thought he was just "anti exis of evil". Is Christ there too? Is he with that North Korean dude with the expensive booze?

Saturday, December 22, 2007 9:46:02 PM (Jerusalem Standard Time, UTC+02:00)  #    Disclaimer  |  Comments [1]  | 
Saturday, December 22, 2007 9:16:40 PM (Jerusalem Standard Time, UTC+02:00)  #    Disclaimer  |  Comments [0]  | 
 Saturday, December 01, 2007

1. People without a picture are lazy or ugly or both. Trust me, no one looks like a question mark.
2. I don’t want your fucking slayers invitations. Nobody wants them. So pretty please, stop this crap.
3. Girls look much better on facebook than “on” uniform.
4. What’s up with girls that don’t list relationship status? Or “interested in”. Or birth year. It’s hard enough to pick your signals anyway, so what am I supposed to think when all you say is “Born: May 15th”???
5. How come there are so many incredibly hot, Jewish chicks from USA who are friends of my friends? I know my friends - that makes no sense at all! Are you playing with me, Mark?
6. Oh, and I’ve been to the other side now: you see a hot Jewish chick from USA who’s a friend of your friend – it’s a bot. Fucking geeks, make it look so real.
7. Ever thought “I just want to get a list of all the girls where I live, ordered by their hotness in descending order”?? It’s there, and it’s called the “hot or not” application. Install it, go to “my scoreboards” and pick your network from the dropdown list. Filter by preferred gender.
8. You know you’re getting old when it takes you an extra second to recognize the girl from high-school because she got married and changed her last name.
9. Don’t recycle status-humor. You think I can’t go to “see all” and realize that 7 of you bastards wrote “updating his/her status”??


p.s. I'm not a sexist. Just replace "girl" with "boy" where you want.

Saturday, December 01, 2007 11:41:41 PM (Jerusalem Standard Time, UTC+02:00)  #    Disclaimer  |  Comments [0]  | 
 Saturday, November 24, 2007

I'm proud to announce the newest addition to the bitz family of quality web products - khjgf.

Frequently Asked Questions
Q: Is this a result of a "weekend-experiment"?
A: Somewhat.
Q: Is this a result of mind-altering substances?
A: Likely.
Q: Is this a part of some secret-society-taking-over-the-world kind of thing?
A: Maybe.
Q: Are you mad, mate?
A: I'm affraid so.


More on Madness at pashabitz.com:
Scrum Lovers

Sunday, November 25, 2007 1:14:40 AM (Jerusalem Standard Time, UTC+02:00)  #    Disclaimer  |  Comments [1]  | 
 Monday, October 29, 2007

The MySQL query optimizer has trouble with queries that contain a join to a union.
Lets take a look at the following example:

select u.f1, u.f2 from
(select t1.f1, t2.f2 from t1 join t2 on t1.f3 = t2.f3
union
select t3.f1, t2.f2, from t3 join t2 on t3.f3 = t2.f3) u
where u.f2 = ?val


Now, suppose we have an index on column f2 in t2. If you look at the explain plan, you will see that MySQL does not use it.
So, the solution is to move the where constraint into the parts of the union itself:
select u.f1, u.f2 from
(select t1.f1, t2.f2 from t1 join t2 on t1.f3 = t2.f3
where t2.f2 = ?val
union
select t3.f1, t2.f2, from t3 join t2 on t3.f3 = t2.f3
where t2.f2 = ?val) u


This time, the index on f2 will be used and the query should perform much better.

More on MySQL at pashabitz.com:
MySQL .Net Connector Bug

Tuesday, October 30, 2007 4:10:38 AM (Jerusalem Standard Time, UTC+02:00)  #    Disclaimer  |  Comments [1]  | 
 Saturday, October 27, 2007

1. Work on something really big. I mean so big, it's a hubris to even think about it.
2. Our product is related to social networks, so if your boss catches you staring at good-looking girls (or boys) in Facebook, you can say "It's for work" and he will beleive it.
3. Pool table at work. (May be taken away from us any day now, so hurry up!!)
4. Work with really smart people. But not annoying, self important, square-type smart. Smart and fun-to-get-drunk-with type.
5. Our offices are ideally situated on the 10th floor in the Hertzlya-Pituach hi-tech district.
Perfect for BASE jumping, if you can squeeze out. The windows don't open that much.
View of the sea (if CEO).
6. Solve really complicated problems on a daily basis, such as: How to effectively store and access a graph that is many terabytes in size? How to extract meaning from unstructured text? Where to go for lunch??
7. Cutting edge technology and methods: .Net, Java, WCF, JLO, search engines, MySQL, TFS, Scrum, just to mention a few.
You know JLO is a fake one, right?
8. Free Bitzwear t-shirt as signing bonus.

Semingo is hiring:
Expert in search engines
Expert in text retrieval
Top notch .NET developer
QA expert

Drop me a line at "pasha at semingo dot com" if interested.

Sunday, October 28, 2007 4:06:18 AM (Jerusalem Standard Time, UTC+02:00)  #    Disclaimer  |  Comments [3]  | 

With ASP.NET Forms Authentication it's easy to setup a login page.
What if you want to make the login functionality more seamless? That's quiet easy too.
Remember that Forms Authentication uses a cookie to distinguish an authentication user from an unauthenticated user.
Here's a recipe for setting up an AJAX-style login:
1. Collect the user/password and send them to the server using AJAX.
2. On the server-side handler, verify that the user/password combination is correct and add the authentication cookie using the FormsAuthentication.SetAuthCookie method.

Now, the authentication cookie will be appended to subsequent requests to urls within your application.

More on Forms Authentication at pashabitz.com:
Security Issue with FormsAuthentication.RedirectFromLoginPage

Sunday, October 28, 2007 2:27:13 AM (Jerusalem Standard Time, UTC+02:00)  #    Disclaimer  |  Comments [0]  | 
 Tuesday, October 23, 2007

Problem: I get an "access denied" error message when trying to save some change done to a web application in the IIS manager on Vista.

Possible solution:
Windows Vista comes with a new version of IIS. One of the new things in IIS 7 is that it saves it's configuration in the .net web.config files (previous versions used the "IIS metabase", which is a bunch of files internal to the IIS configuration tool). This is an improvement because it simplifies deployment and versioning - all you need to do is edit an xml file, whereas the IIS metabase is configurable only using a special API.

Correction(following Eyal's comment): actually the IIS metabase is an xml file that can be directly edited.

So, why the "access denied"? If you're making an application-level (as opposed to machine-level) configuration, many times it's because your application's web.config file is not checked-out for edit in VS, and so it is read-only on disk. IIS manager cannot write to it and shows you the error.

More on IIS 7 at pashabitz.com:
How to setup a custom HttpHandler in IIS 7
Developing ASP.NET apps under II7 on Vista.

Tuesday, October 23, 2007 11:58:50 PM (Jerusalem Standard Time, UTC+02:00)  #    Disclaimer  |  Comments [1]  | 
 Monday, October 22, 2007

This is so cool. I just bought the new Radiohead album, "In Rainbows".
What's so special? The album is available only by direct download from a website set up by the band (http://www.inrainbows.com/).
Everybody wins:
1. The buyer - finally, I can legally download music from the internet (iTunes and the like do not allow downloads with a credit card that is issued in Israel).
2. The seller - Radiohead bypass the record label, and probably profit more for each album sold.

But that's not all. Coolness factor number 2 - you get to set the price you pay for the album. That's right. This is a brilliant idea already emplyed in the past (read here). When you trust your customers, they return the favor. Turns out, people end up paying more on average when given the chance to set the price themselves.
This is a very interesting pricing model that I think can work out very well for various products (perhaps web applications too). This method probably suits best products where the "normal" price is lower than a certain limit (say 100$). Above that I'm not sure it will work.

As to bypassing record labels and selling music direct over the web - I think in 2 years 90% of the artists will go this way.

p.s.
I payed 6 GBP, which is about 12 USD or 50 NIS.

Monday, October 22, 2007 11:27:54 PM (Jerusalem Standard Time, UTC+02:00)  #    Disclaimer  |  Comments [2]  | 
 Saturday, October 20, 2007

I've stumbled upon (what appears to be) a bug in MySQL .Net Connector (version 5.1.3).
I opened the bug in the MySQL bugs database, you can read the details here - bug #31617.

Basically, when calling MySqlCommand.ExecuteReader with an sql statement that times out - you get back a closed MySqlDataReader and the underlying MySqlConnection becomes corrupted, meaning you cannot use it for new operations and you cannot close it either.

The workaround you can implement in the meanwhile is:

1. Always check that the reader you got is open before iterating on it:

using(MySqlDataReader reader = command.ExecuteReader())
{
  if(!reader.IsClosed())
  //use reader
}


2. "Fix" the connection by forcefully setting the problematic field using reflection:
  //if we got a closed reader from MySqlCommand.ExecuteReader, need to set the Reader property of connection to null
  PropertyInfo p = connection.GetType().GetProperty("Reader", BindingFlags.NonPublic | BindingFlags.Instance);
  p.SetValue(connection, null, null);



More on MySQL at pashabitz.com:
MySQL dates quiz
MySQL dates answer

Saturday, October 20, 2007 10:55:38 PM (Jerusalem Standard Time, UTC+02:00)  #    Disclaimer  |  Comments [0]  |