JAJAH Development Blog

Blogs by JAJAH Developers

Archive for the ‘Uncategorized’ Category

Tuesday, March 31st, 2009
I recently got a new W500 Laptop (4062-2GX), while it’s supper fast and has a great display it is somewhat of a disappointed. As an avid ThinkPad users I can tell you – this is not an IBM laptop… it’s not built the same way my old T43 is built, and there are small things that make what used to be a great product into a good to very good product. It started with my W500 mouse getting hanged, drove me crazy, I reinstalled the OS, drivers, searched the web only to realize there’s a known hardware malfunction – it was replaced super fast (2 days), but yet I did not expect this from an IBM laptop. Than came the Blue Screens. After a while I decided it’s time to dig deeper and get this resolved. My Blue Screens where at iaStor.sys – to make a long story short there’s an Intel driver called AHCI driver that you can see here: image When you update your driver, or go to Windows Update it will look at Intel to see if this driver needs an update. But Surprise! while the Windows / Driver Update thinks your driver is updated there’s a new driver on Lenovo’s web site (which they are not too vocal about) Version #8.6.3 (which is newer than what I had from Intel) that you can download here: http://www-307.ibm.com/pc/support/site.wss/MIGR-70477.html Once I installed it BSoD are gone, at least for now… Putting all this aside there’s a great lesson for me as a developer – it is the small but annoying things that make the difference between a very good and an excellent product. Hope you find this helpful. Amichay

Sunday, March 22nd, 2009
iphonetouch.blorge has recently published a story from Arnold Zafra about top 40 best iPhone optimized web sites. Our own iphone.jajah.com is one of the top 40 web sites!  The site is amongst a respectable list of other iphone optimized sites like Amazon, CBS News, Digg, Meebo, Google and Twitter. Mr. Zafra found these sites to be “useful and highly iPhone optimized sites that will enhance your online iPhone experience”. JAJAH iphone’s dedicated web site, launched at December 2007, has aimed to fully optimize the device capabilities while maintaining a simple and easy user experience. Mr. Zafra story is a testimony for JAJAH efforts in providing a variety of mobile solutions to make low cost calls.

Saturday, March 14th, 2009
Google’s latest revolution and the usual suspect
By now, the news of has spread all over the web. Some celebrates the new revolution from the world’s web seminary, while other raise the usual concerns about invading your privacy. To the skeptics, I can only say, common! Nobody’s forcing you to use it. Google’s power is incredible but there’re still alternatives out there. Besides, free services in exchange for some level of privacy invasion already exist and gain popularity. (, being the most obvious example, but there’re others). Moreover, we already deliberately provide so much private information about ourselves in Facebook, Twitter, windows messenger status and others that privacy claims about big brother monitoring seems somewhat archaic.
One number, many friends
However, Google Voice is facing other challenges before it become globally  available and gain widespread use. First of all, Google Voices should help its users to spread their new number with their friends, family and colleagues. Perhaps a variation of service could help in that. Another related problem is that the numbers given to users are still only US. Even if the service becomes global, the given number is always local to the user. So, if I get a US number and my friend live in Austria, it will still cost a lot of money to make the international call from Austria to Germany. Of course, this is a common problem with all international calls. However, if Google has ambitions to make their service ubiquitous, they’d need to find a solution to this issue. JAJAH Direct can provide such a solution and at low-cost rates.
I’m sorry, what did you say?
One of Google Voice prominent service is it’s voicemail transcripts. It’s a great service, if, Google can indeed make fully automated transcriptions. Personally, I don’t see that happening in the near future. Google’s Speech-to-text services are and . Both services are limited to recognizing specific words out of a pre-defines list like Joe’s Pizza, economics, Texas. At this point, it’s not possible to fully transcribe complete voice mails without making mistakes, asking the user to repeat some words or have human intervention. A partial solution might be to make an educated guess about the nature of the voicemail content. If Google could assume a particular voicemail is of specifi context (entertainment, sports, business), it could reduce the number of transcription mistakes to a minimum. Since Google already has vast knowledge about its users habits and interest areas, that seems to be taken care of. Also, let’s not forget that transcription service should be able to understand different accents, languages, oral mistakes made by the user’s themselves,  nick names, voice interference and more before it become accurate. I know of only one such device that does a similar task, but, it will be in production state only 142 years form now.
One last thing
In addition to the above , Google has to overcome huge operational and regulatory challenges. Call termination, VoIP-related fraud, IP call routing and hosting are just few of issues any valuable VoIP company has to deal with. I wonder how much Google Voice is ready to cope with these issues, especially if it wishes to become a global service provider like JAJAH.

Friday, March 13th, 2009
I like wiki. It’s a good platform to share information and ideas in your organization, community or the entire web. Occasionally, you’d like to add links to local files in your organization wiki like list of phone numbers, some how-to documents or something else. However, Firefox users find out that nothing happens when they’re clicking on the local-file links. This is actually due to security reasons. So, if you wish to override the behavior, this article will explain what to do.  The article suggests two add-ons to use. I prefer to LocalLink and not IE Tab because the later reloads the entire page on the IE engine and loses your logging session.
Meanwhile, on the wiki pages
The correct format for links to local files is to prefix the path with file:/// and wrap it with brackets. Let’s say your file resides in C:\MyFolder\MyFile.ext. The link in wiki will be edited as [file:///C:/MyFolder/MyFile.txt]  (make sure to use slash and not backslash). In case the file resides in a server, the format will look like this: [file://///MyServer/MyFolder/MyFile.txt]  (did you noticed we’re now using 5 slashes?). After installing LocalLink you could open the file by right-clicking on the link and selecting from ‘Open Link in Local Context’ menu. LocalLinks You might consider setting your application configuration in Firefox. Go to Tools, Options and choose the Applications tab. Now, for each relevant file type, choose the action you want Firefox to take. ff_applications_options

Sunday, March 8th, 2009
By default, WordPress posts have ugly links like http://yourpost.com/?p=12. It’s very easy changing the links to become more aesthetic and usable:
  1. Open your WP account.
  2. On the left-hand side, click on ‘Permalinks’ under ‘Settings’ options.
  3. Now choose the preferred settings
wp_permalinks

Saturday, March 7th, 2009
About a year ago, I published an article that claimed that with all innovations surrounding us, the technology is, in most cases, not reliable enough . The most recent example came from GMail’s outage two weeks ago. Anyway, in the article I mentioned the tragic incident where a VoIP 911 service sent an ambulance to the wrong place. Up until now, no major breakthrough was made in VoIP 911 services. That is most evident in the FAQ pages of all major Mobile VoIP service provider. You’re guaranteed to see a clause indicating the service is not designated to work with 911 calls. Obviously, many regulatory and technological issues prevent VoIP 911 to become a reality. For instance, how (and who?) would  WiFi routers update when a device connect to them? Perhaps some partial answer to those issues can come from a totally different place. , which have had an incredible 752% growth in 2008, Facebook and other social-interfaces might provide it. Here’s the deal. You make a VoIP 911 call. The interface to PSAP will send your social-networks username. PSAP could gather your latest status and could know, for instance, that just before the call, the caller twitted about arriving to his hotel. I’m sure you could think of other examples. With growing trend to tell the entire world what we’re doing and where, that information could help in emergencies.

Sunday, February 22nd, 2009
Did you know you can make conference calls from your mobile? Yes, we can! This functionality is hidden inside your phone and my guess is that 99% of mobile users are not aware of it. Here’s a quick step-by-step on how to do it on Nokia S40 phones. I welcome you to add in the comments explanations for other manufacturers.
  1. Call someone! (that’s easy, right?) and wait for your friend to answer. Let’s say his name is Riker.
  2. Press options, New call (ah ha!) and type the phone number of another friend. Let’s say his name is Worf. Wait for Worf to answer (Kapla!)
  3. Back on your phone, you’re now talking to Worf while Riker is on hold. Now press options, scroll down and press on – yes, you got it – Conference. Now you, Riker and Worf can speak all together.
  4. If you wish to add another friend - Data for example - simply repeat steps 2 and 3.
  5. To finish the conference just hang up. All your friends will be disconnected from the call.
A word of caution. You should check with your operator how much this calls will cost you. I’m not sure it’s just the rate of one call times the number of participants in the conference call. Finally, if you wish to make low-cost conference calls to friends and colleagues abroad, you can use JAJAH’s conference call service. If you’re not in front of your computer, you can make conference call as described above with JAJAH.Direct numbers.

Friday, February 13th, 2009
We recently began to explore Freeswitch. This is a powerful telephony platform that provides many communication functionalities with  agile configuration. Amongst others, we looked at the dingaling implementation which enables communications with GoogleTalk using XMPP implementation. We quickly found out there’re a few steps to complete before the code will run on Windows/VS environment. So, instead of having others struggle like we did, here’s a list of the required steps. Have fun.
  1. Configuration
    1. Enable mod_dingaling by un-commenting on modules.conf.xml the line . Alternatively, you can run on the console load mod_dingaling.
    2. Enable debug mode for the module (dingaling.conf.xml). It’s not required but will helps in understanding what’s going on.
    3. Create jingle-profile like the one below: 
      <include>
        
        <profile type="client">
          <param name="name" value="<meaningful name>"/>
          <param name="login" value="<your username>/gtalk"/>
          <param name="password" value="<your password>"/>
          <param name="server" value="talk.google.com"/>
          <param name="dialplan" value="XML"/>
          <param name="context" value="public"/>
          <param name="message" value="Send help or ? to learn more"/>
          <param name="rtp-ip" value="$${bind_server_ip}"/>
          <param name="ext-rtp-ip" value="$${external_rtp_ip}"/>
          <param name="auto-login" value="true"/>
          
          <param name="sasl" value="plain"/>
          
          <param name="tls" value="true"/>
          
          <param name="use-rtp-timer" value="true"/>
          
          <param name="exten" value="1000"/>
          <param name="vad" value="both"/>
        profile>
      include>
      
  2. TLS. You need this to insure your XMPP stanzas are encrypted as required by the specifications. There’re few steps you need to do on windows:
    1. Install GnuTls for windows. Pick the latest exe file. At time of writing, the last one is 2.7.3.
    2. Assuming you’re using visual studio as your IDE, open visual studio command prompt (not your normal console) and type: cl foo.c -I../include -Dssize_t=long libgnutls-26.lib. This will create a libgnutls-26.lib that can be used as a import library for Visual Studio projects.
  3. Configure library ixemel to work with TL S libraries:
    1. Add additional include directory   addInclude
    2. Add additional dependency.     addDependency
  4. Last step, make sure the TLS dlls are copied to the configuration environment. For example, if you’re running on debug mode, you should have the following files in /Debug:
    • libgcrypt-11.dll
    • libgnutls-26.dll
    • libgnutls-extra-26.dll
    • libgnutls-openssl-26.dll
    • libgpg-error-0.dll
    • libtasn1-3.dll
    A post-build event should take care of it: xcopy "$(SolutionDir)GnuTLS-2.7.3\bin\*.dll" "$(SolutionDir)$(OutDir)\" /C /D /Y /S /F
  5. I-can’t-find-config.h-step. Copy it from \libs\win32\iksemel. Make sure the follwing line is not commented:
    #define HAVE_GNUTLS
  6. Questions?

Saturday, February 7th, 2009
High broadband speeds means abundant  information. However, time remains constant. Hence, less time to consume all this  information. Consequently, we become headlines-junky seeking immediate information rush but no thorough exploration. Not good. I’m not the first to say that but, hey, at least I didn’t take too much of your time reading this post, absorbing and moving to the next topic.

Friday, January 23rd, 2009
I just finished reading Alex Yakhnin’s post about generic control creation for WinForms. This is an excellent article  for those whishing to know how to use some of C# 3.0 neatest features like Lambda Expressions, Extension Methods and Object Initializers. Alex demonstrate how, using these features, nerd developers like us can make their code more readable and as a result – maintainable. Basically, he used Extension methods to extends Control class functionality to create inherited controllers. One of the arguments used in the extension method is Func<Control, T> build.  This is a in fact a nice way to say that ‘build’ is a function that accepts an argument of  Control type, and has a return a value of type T. Next, he uses Lambda expression to present the function in an elegant way. The expression is in fact, a constructor for the control we wish to build. As a final ingredient in this wonderful code soup, he used Object Initializers for the constructor.
Jajah is the VoIP player that brought you web-activated telephony.