JAJAH Development Blog

Blogs by JAJAH Developers

For women Only; a none testosterone event in the hitech world

June 28th, 2008
  womenThe F5 - Refreshing women venture’s First meeting was on Thursday. it was organized by Liat Vardi and sponsored by Sun. I arrived late, due to a major traffic jam  (2 hours from Raanna to Tel Aviv), but just in time to hear Miriam’s Schwab’s lecture on - "Using Blogs and SEO to Promote your Business". the lecture was general. The interesting part was samples of different blogs on the net and what to do to improve them.  women lecture After the lecture dessert was served and us girls had a chance to chat some more. other than business, technology and sharing goals we could say things like " bad hair day" and understand each other perfectly! The atmosphere was nice and relaxing.  I got to meet some very interesting women,  and learned allot. I’m waiting for the next events….

Count words Using Regular Expression

June 28th, 2008
I had to create a program that counts words in a string. The program need to count all words in the string except: 1. Html Code 2. Dividers 3. Extra spaces + new lines

I used regular expression to filter the strings. For this purpose I created two functions:

RemoveExtraSpaces - Remove extra spaces from string. The function allow only one space between each word.

CountWords - The function return number of words in a string. It use the function RemoveExtraSpaces and use regular expression to remove HTML Code , New Lines and Dividers.

/// <summary>

/// This function remove Extra spaces , the Regular expression is

looking for white spaces that appears 2 times and more

/// </summary>

/// <param name="s">This is the string that we want to check</param>

/// <returns>Fixed String</returns>

private string RemoveExtraSpaces(string s)

{

Regex FindExtraSpace = new Regex("\\s{2,}");

return FindExtraSpace.Replace(s, " ");

}

/// <summary>

/// This function return the number of words in a string that are

/// separated by space

/// </summary>

/// <param name="strText">The text that we want to check</param>

/// <returns>number of words</returns>

public int CountWords(string strText)

{

string exp = "#;#";

// The expression look for Html and new lines and the divider that

// we define before

Regex Match = new Regex("<[^>]+>|" + exp + "|\r\n|\n");

// Replace the tags with an empty string so they are not

// considered in count

strText = Match.Replace(strText, "");

// Remove the extra Spaces

strText = RemoveExtraSpaces(strText);

// Count the words in the string by splitting them wherever a

// space is found

return strText.Split(' ').Length;

}

Regular Expression in C#

June 25th, 2008
In the following post I will explain what is regular expression, what we can do with it and the special characters that we can use in order to find the specific pattern. The regular expression provide means to identify strings of text of interest. In other word the regular expression let us search a specific pattern in a text What we can do with Regular Expression ? 1. Search easily specific pattern 2. Validate a string for example : credit card number, Id number and ect.. 3. Find the specific pattern and do some action like replace characters Example of regular expression in C#:

Private void regExample()

{       string str = “Hello. My name is Inigo Montoya. You killed my father prepare to die.”;

string exp = @”\binigo\b”;

Regex ex1 = new Regex(exp,RegexOptions.IgnoreCase);

// /b in the end and in the begining means that the word is Inigo and not part as other words like Inigojbkbj

// Moreover the option IgnoreCase mean that there is no meaning to the letters case.

Console.WriteLine(ex1.IsMatch(str));

// Match can give you more data where this string is located

Match match = ex1.Match(str);

Console.WriteLine(“Found string ‘” + match.Captures[0].Value + “‘ in:” + match.Captures[0].Index);

Console.WriteLine(ex1.Replace(str, “David”));

// Let’s find Inigo and afterward somewhere in the string should appear the word father

Regex ex2 = new Regex(@”\bInigo\b.*\bfather\b”);

match = ex2.Match(str);

foreach (Capture c in match.Captures)

{

  Console.WriteLine(“Found the pattern in:” + c.Value + ” in Index: “ + c.Index);

}

}

Special Characters that can help us search a pattern:

 

Character
 
 

Description
 
 

Example
 
 

/b
 
 

Matches at the position between a word character
 
 
 

/blior/b mean that the search will look for the word lior
 
 

|

 
 

Causes the regex engine to match either the part on the left side, or the part on the right side
 
 
 

Abc | def – check for abc or def
 
 

.

 
 

Match any single character
 
 

Ab. à

can be ab or abc , and and so on..
 
 

^

 
 

Matches at the start of the string
 
 
 

^ab – the string need to start with ab
 
 

[^]
 
 

Accept any character expect the characters in bracket
 
 

[^d-f] – expect all charcters d or e or f
 
 

$
 
 

Verify the end of the string
 
 

Def$ - check if the string end with def
 
 

*

 
 

Repeats the previous item zero or more times
 
 
 

a* - a,aa,aaa,aaaa,aaaaaaa
 
 

+
 
 

Repeat the previous item one or more times

 
 

a+ - aa,aaaa,aaaaaa
 
 

?
 
 

Zero or one of the preceding item
 
 

Dogs? -> dog, dogs
 
 

{n}
 
 

{n}

where n is an integer >= 1
 
 
 

B{2} = bb
 
 

{n,m}
 
 

{n,m}

where n >= 0 and m >= n
 
 
 

B{2,4} = bb,bbb,bbbb
 
 

{n,}

 
 

Repeat the previous item at least n times
 
 

D{2} = dd, dddd and so on.
 
 

/d
 
 

Any number
 
 

0-9
 
 

/w
 
 

Any number or letter
 
 

1,2,3,a,b,d,g and so on.
 
 

/s
 
 

Match any whitespace character
 
 

 
   

For Women Only; F5 - Refreshing women venture’s First meeting

June 21st, 2008
Nowadays, the hitech industry is having more and more women, especially in Israel. I guess it’s something to do with the Multitasking and passionate features that women have. Usually, when going to some technology event, most of the attendees are men. Of course, in some cases there are allot of blond girls which are called Nokia or Samsung girls, but I’m not referring to them. ) My first women event was held in a beautiful hotel in Barcelona, drinking Cava and very women-like.  it was organized by the Women in Mobile Data Association group, or should I say   Helen Keegen and Gillian Kennedy, which are also organizing another event for women in the mobile industry, on the first of July, in London. Unfortunately I cannot attend that one- after all it’s in London. Happily enough, we have Liat Vardi who is organizing a women event only, for hitech & web entrepreneur women. The group is called F5- Refreshing Women Ventures, and its goal is to inspire women, help get professional advice and support, as well as networking, so events will include lectures. I think this is a huge step for women in the Hitech industry in Israel - Thank you Liat, I’m so excited! The first meeting will take place on June 26th, at Shvil HaTnufa 5 St., building no. 2 a, 3rd floor, Tel Aviv. Facebook Event link: http://www.facebook.com/profile.php?id=644146628#/event.php?eid=20239202620 Meeting’s Schedule: 19:30-20:00 Mingling+ dinner 20:00-20:30 Networking 20:30-21:15 Ms. Miriam Schwab-" Using Blogs and SEO to Promote your Business" 21:15-21:30 Q+ A There are limited places left, so if you want to come please email Liat Vardi at LiatVardi [at] gmail[dot] com  as soon as possible with the following details: Full name Occupation – where do you work/what is your venture about? Your blog/website Cell no. Mail address City I’m there!! * I would personally like to thank Edward Resnick from Sun, that helped make this happen and also helped MoMo TLV

MVC, Design Patterns and Real-Life

June 20th, 2008
(This blog post was inspired from a discussion I had with Moti Gust earlier this week, Moti and I have been working jointly on various development projects since early 90’s)   Model-View-Controller (MVC) is a corner stone Design Pattern that in recent years received more and more acceptance. MVC is a “solution” to various problems raised when presentation code, business logic code and data access code are mixed together. MVC separates a UI driven application into three components: View - the presentation code (which renders the contents of the model), Controller - translates between user actions (received through the View) and actions performed by the model and Model - representing the enterprise data / business rules that communicate with the data model. The following image (taken from here) summarizes the concepts in this design pattern:   mvc-structure-generic   There are some frameworks that endorse MVC as the proper way to build UI applications, such as MonoRail (part of the Castle Project)  and recently Microsoft has been looking into integrating MVC into the .NET Framework 3.5, lots of info on that around the web, one such link is this. MVC is a great concept, it provides away to separate between pure UI code, UI logic and application logic. The separation allows the UI developer to be de-coupled from the application logic, all he needs is a good, robust API and to separate between the graphical / rendering part of his presentation code (the View) and the link to the business logic (the Controller). It even allows another developer, who did not originally wrote the rendering part to tie between the model and the presentation. It gives a lot of flexibility. But Dragons be here - is that really the solution we’re looking for? Before going into the real-life example which flared this whole discussion, I think it’s worth a while to pause and think about Design Patterns. There are many ways to categorize and segment Design Patterns, I won’t get into all that, but if you look the MVC, Publish-Subscribe Design Pattern and Patterns like Singleton something very evident pops up : Singleton is implementation driven, it’s practicable (while some would argue that it’s overly used incorrectly [which I agree to, but we'll leave that for a later post, maybe]), its a technical way to write you code, it’s a tactical solution. While MVC (and others) are different, they are CONCEPTS, they are a way to think of information driven SYSTEM, it’s a strategical solution. But what MonoRail and Microsoft are doing is to endorse  MVC as a framework, rather than system’s architecture solution, and in my mind this falls short. If your development group is well disciplined and the design is good, you don’t really need a framework to uphold the rules - there are many other ways to address that. What is missing in my mind (and I’ll try to prove it with a real-time example) are system architecture solutions that address real-life application development & deployment cycles that address mid to large size projects with MVC. Instead we get some development frameworks suitable to a small group of developers working on smaller scale projects, at time it seems more of a university type of solution than issues we tackle in real life. So after all that, let’s get to the problem at hand. JAJAH is a medium to large size software project with a wide variety of  technologies, we’re also a global company with Marketing in the US and R&D, Operations and other departments in Israel. One of our hurdles is that content changes should be close to the Marketing team, while today every request has to flow to the R&D team and be part of the release cycle. This causes extra work (tidious, not-so-interesting work for our killer developers) on the R&D team, and does not provide quick enough response to the Marketing team. Hence we need some Content Management System where we can have a not-so-expensive HTML guy next to the marketing team making content changes. This is practically MVC. However, we need different release cycles, the View should be developed and deployed in a different way than the rest of the system. It’s not just separating everything to different projects, DLLs etc - it’s a whole different system. We need to QA the content, having it in a staging environment and have proper roll-out procedures. We also want to limit the changes that the HTML guy can make in the system, we don’t want to give the guy full control over all rendering aspects, just certain parts. We used to play around with Offermatica (recently acquired by Omniture), but while it’s a really cool tool, it’s mostly focused around A/B tests and is not suitable as a heavy duty content management system. MVC is cool, and it makes a lot of sense, but what we actually want is M-V-C, totally separating the components for that a framework is not enough. For that MonoRails is just not good enough since it keep everything together. What we need is some type of a Content Management System, coupled with a release cycle & deployment management, and same applies to the Model. The controller is a different story, at times we would like to couple it to the Model and times to the View release cycle. My point in all this is that Design Patterns should not be regarded as framework solutions pre-say, but rather as design concepts being applied to the high level system architecture and not necessarily at the development level. Amichay

Facebook: how to create a gift application for facebook in 3 minutes

June 14th, 2008

 

Facebook For some time, I wanted to create some application for Facebook. I usually dont like must of the facebook applications, but I encountered a really cool gift application called Gothic Gifts.

In order to reveal new gifts, you need to send friends gifts, and since I was very intrigued to see the available gifts… I find myself using that application allot…

In the top of the application I noticed an option to create your own gift. clicking on the link, I got a wizard application called Gift Creator. This is a wizard for creating an application without needing to have the knowledge of a developer, or in my case PHP. (although I know many things, I didn’t get the chance of working with PHP…yet…)

So to make things short, what you need to do is this:

1- Install the make gift application

2- Follow the instructions

3- That’s it!

The instructions are very simple and well explained. I whish all program installations would be clear as the instructions in this wizard (including the .Net Web Services Wizard…).

In the process of creating your gift application you first uploads the images - a.k.a the gifts, then you install the Facebook Developer and you are left with 3 simple and clear stages, that the Gift Creator guides you through:.

1- Create a new application in Facebook

Creating app in Facebook 

2- Update the Gift maker application with the Facebook Keys

Creating app in Facebook 

3- Update the resulting application URL in the Facebook application

Creating app in Facebook

 

Have Fun!, and no, Im not telling what is my  gift application )

10 Things You Probably Didn’t Know About Cell Phones

June 14th, 2008

many-cell-phones2Cell phones are amazing, in the way it changed our lives completely, and how it rapidly transformed from a symbol of status owned only by a handful of people to a device owned by almost half of the world population with over 3.3 active cell phone as of today.

“Over 30% of South Korean students send 100 text messages a day”.

"The First Cell Phone Came Out in 1983"

"Just under two-thirds of cell phone users use the backlight as a flashlight"

These and some other fun facts about cell phones can be found here

IPhone II – The device that users really waited for

June 9th, 2008

Apple just releases the new IPhone. The first IPhone released in June 2007 and become a big success. The combination between a portal media player and a phone cause a lot of people to buy it.

The new IPhone has some new great features like:

- 3G-capable. 2.8 times faster than EDGE.
- GPS built-in
- Thinner
- Better battery life

image

Today users are looking for one device that has it all: Music, Video, GPS and a phone. Users don’t want to carry several devices for these features and they want one device that delivers these features in good quality. The new IPhone give this answer and this is why there are so many people from all over the world waited for IPhone II.

It’s seems like Apple hears what users really want and make sure it’s implemented for example: 3G, GPS, support in Microsoft Exchange (Will be available in Firmware 2.0) and ect.

In my opinion the success of the IPhone II is assured and in the following year the IPhone market is going to increase dramatically.

Time management in the global changing world of high-tech industry

June 7th, 2008

In our contemporary ever changing post-modernistic world, the temporal dimension has become more and more important. This is particularly correct in the high-tech industry, because of expending global competition and increased demands for immediate availability of innovative products and services. Also, the speed with which global communication now takes place has substantially altered our temporal and spatial horizons. Thus, we all experience the increased pace of life shown in doing things faster, contracting time expenditure (e.g. sleep less, eat faster) and compressing actions (making a phone call while having lunch). Therefore, it is essential that we will know how to manage time effectively. This is extremely important for the organization as well as for the individual. From the organizational perspective, the effective use of time via forceful scheduling, coordination between employees and business processes are critical elements equally to the profitability and the growth of the organization. This issue is extremely critical that in many organizations there are special functions dealing with time management such as project managers. From the individual perspective, the more effectively we handle time, the more we have a sense of well-being, job satisfaction, and less feelings of strain and exhaustion related to work. Managing time is important at all levels of the high-tech organization, even for software developers.

Time was considered for a long time an objective variable only. Therefore the term “time management” is misleading. That’s because time cannot be managed- it is an inaccessible factor. Only the way a person deals with time can be influenced. However, we can’t forget that time has more than one subjective dimension. This is called “psychological time”. One example of this is that when we enjoy ourselves we sense that “time flies”, and the opposite is true when we do not.

What is time management?

Time management refers to various behaviors that aim at achieving an effective use of time while performing certain goal directed activities. This definition includes three kinds of behaviors:

  • Time assessment behaviors
  • Planning behaviors
  • Monitoring behaviors
manrunningclocks

There is no clarity regarding the question: is time management a skill that one can learn or is it a part of one’s personality? One way or the other, Mangers have training programs to help them learn the skills of time management. Those programs believed to influence performance under time constrains through the perception of control of time.

How to manage time effectively?

  • Organize that desk. While many people think “organized chaos” characterizes their desks, this is seldom the case. Some even say they know where to find everything. The critical issue is whether one has what one need and acts on it. On average, it has been suggested that one hour a day is spent looking for papers. If papers are handled, acted on, and then filed, forwarded to the appropriate person, or thrown away, there is less additional clutter on desk tops. The famous pile method should be avoided. Papers that are not immediately needed should be properly filed. Then once the desk is organized, it must be kept organized.
  • Keep a “things-to-do” list. While: this may seem to be “low tech” in a “high tech” world, it is extremely effective in keeping people on track and focused on what has to be accomplished. The actual method of recording these tasks is not as important as the actual tracking of the list itself. So the high tech fans can use their technology and the low- tech fans can use paper and pencil.
  • Set priorities before you leave the office at the end of the day. Even if you are worn out, behind schedule, or frazzled by the events of the day, go through your tasks and projects and outline the next business day. This way when you arrive at work that morning, you already know what to start on. Over the course of the previous night, your brain may even have worked out solutions to some unfinished business rather than pondering what it had to keep track of.
  • Highlight important e-mails -and sort the others for later. Flag or colorize e-mails in your inbox. Many people use multiple folders to keep e-mails. Keep e-mails on screen if some action is required. “Out of sight is out of mind”.
  • Set aside blocks of time for you. If you need time to get your own work done (which may include updating your project list or reviewing e-mail or voicemail), schedule time for yourself. That way no one else will schedule a meeting with you and you’ll be able to get your work done.
  • Know where the time goes. Most people do not really know where their time goes and how some time may be wasted. There are usually some time wasters in everyone’s schedule. But until a time utilization study (even informally) is conducted, these are not identified. A simple tracking of time by half-hour increments can often help determine where time is wasted or used less productively. This provides an opportunity to evaluate how tasks can be re-arranged to maximize productivity. Examples may include clustering all meetings for vendors on the south side of town for one day rather than wasting precious time driving to the south side on three separate days.
  • Delegate some of your tasks. In looking at your list(s) of projects, perfect candidates for delegation include:
    • Anything that could/would be a learning opportunity for someone else.
    • Something you could do in your sleep if you had time, but that you can’t do personally.
    • A task you can explain quickly and easily
    • A project for which you know the timetable(s) involved.
  • Use that waiting time wisely. All those short tasks on the things-to-do list can be addressed during those waiting times. That reading file can be brought along to more effectively use that time spent waiting. People don’t always realize how much time is spent waiting- on hold on the telephone, in meetings waiting for others to arrive, or in lines. Planning for that waiting time can mean accomplishing more tasks - rather than complaining about the wait. If there is a file ready to be picked up for just such times, the wait seems to go faster and more is accomplished.
  • Remember that small amounts of time add up. Too often, people think that a few minutes saved aren’t any big deal. The key is the additive effect. If just five minutes a day are saved, the effect at year’s end can be significant.

The techniques to hack wireless device trough Bluetooth

June 6th, 2008

There are 3 common techniques how to hack wireless device. In this article I will review these techniques and advise how to protect your wireless device from such hack.

Bluesnarfing

is the unauthorized access of information from a wireless device through a Bluetooth connection, often between phones, desktops, laptops, and PDAs. This hack allow you to access the device calendar, email, text message ,contact , steal videos and images and even calling someone from your phone.

Most of the program that we exist today must allow connection and to be ‘paired’ to another phone to steal content however there are some program that don’t ask the wireless device if they can connect too and they can steal the information without letting the owner knows. The latter application are not common and not spread. btInfo

Bluejacking

sending of unsolicited messages over Bluetooth to Bluetooth-enabled devices such as PDA’s, mobile phones and laptops or computers.

Bluejacking is usually harmless because no one can steal something from your phones or making a call but there is no doubt they it scare people.

Bluebugging

Allow hacker to “take control” of the victim’s phone. Not only can they make calls, they can send messages, essentially do anything the phone can do. This is a different technique than the Bluesnarfing and work only on old phones.

What are Phone Manufacturers Doing to Solve These Problems?

Most of the cell phone manufactures developed software patches that eliminate these techniques however  Bluesnarfing is still exists and from time to time there is a new Bluesnarfing software come out.

How can I Protect my Privacy ?

1. If you have an old phone, contact your manufacture and ask for a patch.

2. Turn your Bluetooth connection to be “Hidden”

3. Don’t Allow connection via Bluetooth from people that you are not familiar with.

Jajah is the VoIP player that brought you web-activated telephony.