Wednesday, April 13, 2011

Needed: Ruby/Rails Developers in Israel

I just read Ido's great post, and couldn't stop myself from writing a response post.

Basically, what we have in Israel is a chicken-and-an-egg problem. Why? because there will be no Rails programmers if the market (=big # of companies) would require it, and no company would shift to Rails development if there would be no developers to make it do that.

The problem starts in the way developers are "born" in Israel. They are either:

  1. become developers during their service in the IDF - no Rails there.
  2. become developers after a relevant academic degree - AFAIK, no Rails there either.
  3. become developers in different ways, most of those would try and learn technologies which are required by the market. The remaining few that would bother learning Rails (or Django) are probably those who also read this blog.
I think that in the US market, especially in the Silicon Valley, this is not the case. Developers there are educated differently and are much more likely to be exposed to Rails. The only Rails developer I know - learned it while working in the Valley.

Here's another one for you: how many Israeli web-hosting companies do you know that supports Rails? How many for PHP/Java/.NET?
So, even if I'd try and develop a Rails application for the local market, I'd have to host it abroad, which is a shame.

A while back I did a short survey regarding the buzz around Rails development and other web frameworks. Check out the replies. How many chose Rails?

Finally, I must admit that I'm no better. I had a chance to choose Rails recently, but didn't. Sorry, I couldn't find others whom I could hire if needed.

Monday, April 4, 2011

.NET MembershipProvider with MySQL

If you're a .NET developer (Mono or MS, doesn't matter) and an OSS enthusiast, then you're probably using the MembershipProvider provided by MySQL instead of the default MS provider for MS-SQL. The MySQL MembershipProvider comes bundled within the MySQL Connector for .NET.


In certain configurations, one can expect various bugs related to the MySQL Connector, especially with the latest version of MySQL Server and/or Windows and/or IIS. The most annoying thing about such bugs is that they don't introduce themselves on a development machine (different web-server, different OS, etc.).

My latest bug involved getting NULL for Membership.GetUser calls, even for logged in users. The bug  would occur inconsistently, which made stuff quite hard to debug.
The solution? simple - always use the latest version of the MySQL Connector.

This is why I always plan the first-time production deployment to take a few days. You can never tell what will go wrong.

Thursday, February 24, 2011

Nokia, What Went Wrong?

I've been using the Nokia N900 for a week now, and it made me wonder: how comes there are no more Maemo based devices out there, and how comes Nokia's CEO states they're standing on a burning platform?

The N900 hardware is great, yet nowadays it doesn't stand out. Other companies produce hardware with the same quality. It's the software that makes all the difference.
The Maemo platform should appeal to every nerd and every software developer, as it is based on Debian, and porting applications to it is so simple.
As a result, it is capable of running some truly amazing applications, such as Firefox (including addons) and games that were ported from the PC.

I've set up a dual boot with Android, so I could compare stuff, and access applications that aren't available for Maemo. And although there are quirks in the Android (NITDroid) port, it's successful in providing the full Android experience. And you know what? I don't use it. There's no point in booting into Android when everything can be easily done with Maemo, and sometimes even better (like having a full, real, browser).

The two apps I do miss, though, are Shazam and Waze, and I believe that had Nokia continued developing the Maemo platform, ports of those apps would've become available as well.

Some of the best things I find in the device are:
  • Integrated IM/VoIP with Skype/GTalk/MSN/FreeTelecom/Jabber/etc.
  • USB Host.
  • Really useful desktop gadgets, and not plain icons that represents apps.
  • DLNA.
  • apt-get.
  • A full, real, browser. Renders everything exactly the way the desktop Firefox does, including flash.
  • QWERTY keyboard.
and the list goes on...

So my question to Nokia: why did you stop developing this platform?

Sunday, February 6, 2011

Sometimes IE/FF renders fine, and Chrome doesn't

Twitter style post (125 characters, not including this header):

After two hours of head banging on a bug in my HTML/CSS being rendered differently in Chrome, it appears it was a Chrome bug.

Friday, January 14, 2011

JavaScript Implementation In Different Browsers

In Hebrew, when counting or describing objects, it matters whether the object is considered as male or female. A table is male, while a television is female. As far as I know, this rule applies to Russian and other languages as well.
What's nice about humans is that if they use the wrong form, like a female form for a table, people around them would still understand what they're talking about. Although some might think that the language is ruined. That's OK.

When it comes to programming languages, things are different. Computer languages are supposed to be considered as an exact science, thus, if one not using the syntax correctly, the code won't execute.

Or so we'd like to think.

Consider this loop in JavaScript:
var i = 0;
do {
i++;
} while(i<2);
alert("done:"+i);


As you might expect, it would popup an alert box with "done:2" as the message. This would work on any JavaScript implementation I'm aware of.
Now, let's make a tiny difference (like using the female form in Hebrew, which is only a bit different than the male form):
var i = 0;
do {
i++;
}; while(i<2);
alert("done:"+i);

What was changed? Notice the semicolon (;) before the "while" statement. Try this using your favorite browser. If you get "done:2" as before, I urge you to replace your favorite browser immediately.
This piece of code shouldn't work. It has a syntax error. The semicolon is "unexpected".

Internet Explorer ignores that, and the code works as before. Other browsers (Firefox, Chrome) would halt the script execution.

I'm willing to forgive when people don't follow the Hebrew syntax down to the last rule, but when it comes to code - I'm unforgiving. Moreover, I'm unforgiving to the guys that implemented a "fuzzy" interpreter for a programming languages. This is supposed to be an exact science.

Let me give you another example. In this case, I'm not sure with which implementation I agree:
alert([1, 2, 3, ].length);
alert([1, , 2, 3].length);

Firefox and Chrome would print "3" and then "4", while Internet Explorer would print "4" twice. Basically, each array has an "empty" (undefined) element, so their length is supposed to be the same. But it appears that Firefox and Chrome would drop that element if it is the last one in the array.

Sunday, January 9, 2011

The Difference Between DIV and SPAN

Every now and then I see people wonder about the difference between the DIV HTML tag, and SPAN. Sometimes, people do some trial and error with the two before deciding which fits better for the problem at hand.

So I decided it would be a good idea to clarify this issue.
The DIV element is a "block" element. This means it occupies a full block when rendered, which also means that by default the browser will render a new line before and after rendering the DIV element. SPAN, on the other hand, is rendered inline. This makes SPAN perfect for formatting text which is part of a paragraph.

Want to see the difference? Create an HTML file containing the below code, and run it in a browser:
<html>
<body>
<p>Here goes for span: <span style="color:red" >hello</span> world</p>
<p>Here goes for div: <div style="color:red">hello</div> world</p>
</body>
</html>

And if you're lazy, this is how it looks like:

Here goes for span: hello world


Here goes for div:

hello
world



Makes sense, right?

Friday, December 31, 2010

Free Telecom Reviewed

I guess that by now you've all heard about Free Telecom.

I've been using their SIP services for a while, and thought it would be nice to share my experience with it before things would change in 2011.

So first, I'm an Orange customer, so in order to get the Free Telecom client to work, I need to choose the "IL Orange Internet" access point, as the "3G Portal" access point uses a proxy which blocks non-HTTP traffic.

The client is a bit buggy, but works most of the time, and doesn't seem to drain the battery (compared to other VoIP clients which supports SIP, such as Fring). The SMS UI is nice, and even a bit more useful than the built-in client in my Nokia N95 8GB.

As for call quality: most of the time, when calls are done over WiFi or in places with good 3G reception, the quality is just fine. I'd say it's better than VoIP quality provided by other clients. But, when the 3G signal slightly drop, the call quality drops considerably.
I can't wait to discover whether the quality and service that could be achieved by Nokia's built-in client, outperforms FT's client quality.

The prices are great, and are far cheaper than my plan in Orange. But, keep in mind, it requires a data plan to work out of the range of a WiFi router. So when trying to calculate the total price of a call, one should also consider the price of the data plan.

I guess that things would indeed change in 2011, as Free Telecom got the license to provide MVNO, and this marks the beginning of a new era in mobile communication in Israel.

EDIT: While writing this post, it appears there's an outage with the FT service. I wasn't able to connect to it for a few hours. This isn't not the first time I see this happens, yet it is not very common.