Saturday, December 3, 2011

Finishing IT College Degree? My condolences...

The crisis point of nearly every university graduate, including in the High-Tech sector, is the beginning of career right after graduation. The cliche says: "All beginnings are tough", and that's exactly relevant to fresh graduates.

So what can you do when you're a proud graduate with absolutely no practical experience? all you know is theory, and employers need practicality. They can't generally put time and effort in a graduate in training him/her to suit the job's requirements. So there's the deadlock!

Here I give a few steps that can make life easier for fresh graduates, in this case: Computer Science (or Software Engineering) graduates:



1. While studying, make sure you take as many practical courses as you can: programming languages, website development, database platforms. Make sure you perform a large scale practical project, because that's what you can show prospect employers.

2. Create personal ties during your studies, as peers might be helpful in finding the first job.

3. Remember - you've got a family: ask your relatives (even remote ones) if they are familiar with job prospects or key personalities who may be of help.

4. Your CV - nowadays CV writing is an art by itself. This means that it may be useful hiring a professional to write your CV.

5. Be proactive - send every software firm in your area your CV. Many jobs don't go online, but if you take the initiative, you might catch some big fish.

6. Show some compromise about your salary. Small firms usually can't afford paying as much as large firms, but can give you the 2-3 year internship you need so desperately.

7. Change location - if you live outside the big city, it inhibits your job prospects. A relocation may be necessary.

Summary - the first job crisis may be lethal to graduates who don't deal with it wisely, but might quite easy to overcome if the right approach is taken.

Sunday, October 2, 2011

Cloud Computing - is it Rainy Today?..





The term basically refers to performing computing activities online instead of offline (using the computer's hardware).  it means that individuals  or organizations lease remote  memory space and software , that are stored away from their physical location, and use them through the internet.  
The basic advantage of this model is that the customer doesn't have to purchase in advance software or memory space, but purchases them on demand only and for the extent he/she may need.   This feature often saves a significant portion of the computing costs of an organization.

The basic types of service available on Cloud Computing:

First, Sotfware-as-Service (SAAS), which refers to the use of computer programs installed on the supplier's servers, and the user makes use of them through the internet.  Prominent SAAS software examples: Gmail, online gaming.

Second, Infrastructure-as-service (IAAS), which refers to use of memory space of the supplier by the user.  Prominent examples: site hosting, backup storage.

Third, Platform-as-Service (PAAS), which refers to the use of developing platforms by the user in the process  of writing and testing software, such as: Linux emulators, online compilers.

The financial cost reduction using Cloud Computing derives from several factors:

First, no need of purchasing expensive hardware devices, such as: servers.

Second, no need of purchasing in advance expensive software products, such as: operating systems, Integrated Development Environment (IDE).

Third, no need of hiring local maintenance experts for the software and hardware.

Fourth, no need to deal with disaster relief procedures, as the supplier deals with it.

Fifth,  no limit of resources availability.  for example. if there's a shortage of memory space, there's a possibility of purchasing additional small size memory.

Sixth, no dependency on a specific location where software products are installed.

The shortcomings of Cloud Computing can be roughly divided into the following:

First, dependency on the supplier.  The latter may run bankrupt or have many operational failures. In such a case, the user can't do anything to prevent his own setback.

Second, possible security holes regarding the employees of the supplier, who may cause damage to the user's data.

Third, difficulty in communication between software products which are located on  many different servers.  For instance, SQL database that has to communicate with a web script held on another server.


Fourth, difficulty in managing software platform without the ability to access the hardware (because it belongs to the supplier).  For example, running a disk compression may be necessary for a software running but the user isn't permitted to do that.

Prominent Cloud Computing suppliers include:

1. Elastic Compute Cloud (EC2) of Amazon - The most well-known service, which allows memory space & infrastructure software  leasing.
2. App Engine of Google, which allows development & testing of Java/pythons application on remote servers.
3. Azure of Microsoft - which allows mainly platforms for online development of software.

Summary, Cloud Computing is here to stay, but due to its vulnerability concerning security, I believe that the move of organization to work with this model is going to take more than a few years.

Saturday, September 17, 2011

Smartphone - in What Ways It's Better than Other Mobile Phones?

The term "Smartphone" refers to mobile phones intended for a relatively complex use compared to "ordinary" mobile phones. The smartphone is actually a mini computer capable of functioning as a telephone.

We should bear in mind that the mobile phone "plague" started around year 2000, and then it was a revolutionary change to be able to use a mobile phone from everywhere. Now it seems quite odd to meet people who don't possess some kind of a mobile phone.

The basic use of smartphones is based on a fast & reliable internet connection: most of the use (other than phone calls) is to websites or web services. Without the web, smartphones are simply useless.

An example to a funny use of smartphones: you're at a party and there are around you about a hundred people. Ooops..your eyes get focused on a 25 years old cute girl. What do you next? you enter a forum of people you know and start sniffing about that girl. Geeky but useful..



So, what are the advantages of smartphones over ordinary mobile phones?

1. Smartphones are actually computers, which means that using them is as intuitive & simple as browsing the internet. Everything is done using a touch screen, without the need of pressing buttons or keys. This also means that listening to music is way more enjoyable than doing so using an ordinary phone.

2. There is a huge market of applications that you may add to your smartphone, and by that enhance its capabilities. Services such as "Android Market" or "iPhone App Store" offer millions of applications for simple downloading.

3. Smartphones can actually browse the internet. That means that you can enjoy a browsing experience similar to that of a personal computer. Ordinary mobile phones offer only a basic browsing capability, which is much slower & graphically limited compared to smartphones.

Tuesday, August 30, 2011

How to Buy a Laptop?

Ladies & gentlemen, which one of you hasn't thought in the past 2 years (or so) about buying this precious electronic toy nicknamed (and also named): a laptop.
Yes, this relatively new instrument which some 10 years ago was still a "status symbol" reflecting sophistication & class and by now has become a "must have" little friend that accompanies us throughout our daily tiresome routine.

In average, a person buys a new laptop every 3 years, and spends between $300 -$1500 on the newborn. Wouldn't it be cool to hear some advice about buying a new laptop computer? in case your answer is "Yes", you're welcome to read through the following advice.



1. Size - ask yourself whether you need it for basic use (email, document or image storage etc.) or you need it as a substitute to a desktop computer. If the answer is more like the first option - you might purchase a relatively cheap & light 10 inches laptop. If the answer is more like the second - you'll have to pick a heavy 17 inches in a higher price, or just purchase a desktop computer( they're still around, you know..).

2. Memory - if you buy a laptop with a 64-bit operating system (like: Windows 7), you might insist on a memory (RAM) size of some 4 GB, because the computer actually can make use of this large memory to perform much faster.

3. Screen - think of where are you going to use the laptop. Some screens are just impossible to use outdoors, so if you believe you'll need it frequently to be used outdoors, check the laptop you're interested in outdoors (or just ask someone who owns such a model).

4. Hard disk - an average user need about 20 GB of hard disk memory, so you don't have to pay extra to get a vast hard disk of 500 GB or so, if you just need the laptop for web browsing & letters writing.

5. USB sockets - check carefully whether the laptop you're interested in has sufficient USB sockets for what you actually need. Less then 3 sockets isn't recommendable for an average user.

6. Battery - remember that a battery loses of its capacity relatively fast, so if it's argued that a certain battery lasts 3 hours, remember that after half a year, this feature may become more like 30 minutes...

To sum it all up - enjoy!

Wednesday, August 24, 2011

Your Laptop's Battery - a Few Important Points to Remember

Your battery is low again, ah?? Here's a pack of small details you probably don't know yet, and might be helpful for you:

1. What's better : keeping the laptop plugged in to the power socket or letting it get empty and recharging it ? most of you might jump and say "sure, keeping it plugged in". Wrong! the battery is like a muscle, if it gets some training, it preserves its potency. If it's always fully charged, it gets older very fast.

2. If you think that after some 6 months with the laptop, the battery holds for less hours than when it was brand new, you're absolutely right! To know exactly how much capacity the battery has lost, you may use the following software: http://download.cnet.com/BatteryBar/3000-2094_4-10866804.html




3. Along the laptop's life, the power meter (this little meter that tells you how fully charged is the battery at the moment) gets less & less accurate. This may cause you problems like: sudden shutting down of the laptop while doing something important. You can fix this issue by "recalibrating" the battery.
How to recalibrate:
a. Charge your battery completely. Then,wait 2 hours with the laptop plugged in.
b. Drain the battery completely (till the laptop turns off). Then. wait 5 hours.
c. Charge again the battery. Now, the power meter should be more accurate.

4. When is the appropriate time to dump your battery and purchase a new one? Experts claim that it's recommended to keep the battery while it's at least 25% of its original strength. Below this point, the battery can't give you a reasonable service.

Summary - the battery is the laptop's #1 headache, but using the points I've mentioned, might prevent this pain from becoming a migraine..

Thursday, July 21, 2011

Why Should You Check Your Startup Directory?

When you boot your computer or just log in to your machine, you can see that some programs load automatically. These are startup programs. Generally speaking, they are instant messaging tools (like: Skype, Messenger) or security tools (like: anti-virus, anti-spam). These programs are put in that directory because it's important they're always on. Imagine to yourself what would happen to your computer if your anti-virus program would run only part of the time..

The setback of startup applications is that the automatic loading of these consumes inner memory (RAM), therefore slows the computer. So understandably you'd like to minimize their number. I'll show how to check your startup directory for unnecessary programs which may run there.



1. Click "Start" at the bottom left of the screen.

2. Click "Run". A small window pops up.

3. In the small window, write "regedit" and press "OK". A new large window pops up.

4. On the left side (of the new window) you can see a list of many folders. Choose "HKEY_LOCAL_MACHINE".

5. From the sub-folders of "HKEY_LOCAL_MACHINE", choose "software".

6. From the sub-folders of "software", choose "Microsoft".

7. From the sub-folders of "Microsoft", choose "Windows".

8. From the sub-folders of "Windows", choose "Run". Now you see a list of programs on the right side of the window. These are the startup programs, meaning: the programs which load automatically every time you log in to your computer.

9. You may delete unnecessary programs. Notice: if you delete a program from this list, the programs keeps residing on your computer. It just doesn't load automatically upon logging in.

Wednesday, June 29, 2011

The World's Most Popular Programming Language

Knowing what are the most popular languages in the industry can tell you if  your hunch is right, and you indeed code in one of the promising platforms...

The data presented here reflect the number of jobs offered (mainly in North America & western Europe) in a mentioned platform.   It can't reflect the quality of a programming language nor the difficulty of the daily work with it.  Only the number of jobs.


1. Java -  Java is currently the  most popular programming language and hires nearly 20% of the software developers(data: TIOBE).
Java is used in developing complex dynamic web applications, network programming and robotics.   JSP(Java Server Pages), Servlets(Java programs that is executed on server side, and often used to process the client request) are the most popular java technology among web developers.
this excellent and diversified  language was developed in the middle 90th and hires about 9 million developers around the world. 
 This means that this an ocean of application written in Java, and this means there is an ocean of software requiring maintenance and modification.   Java is the language in which developers write Google  mobile-phone Android OS applications.  android OS even supplies an API in order to assist developers. 


2. C   -  Hires about 15% of the software developers.   This ancient language was developed in the early 70th, designated for system application development (operation system program).  It has developed to embedded software (in electronic devices) and recently to mobile phone applications.  C exactly comes between the Assembly language and object Oriented language such as Java.

3. C++  -  Hires about 10% of the software developers.  The language was developed in the late 70th as an enhacement  to C and was initially named "C with Classes".

It is widely used for development of system application, device drivers, embedded software,  server-client applications and entertainment application (graphic games, video games).


4. C#    -  Hires about 8% of the software developers. It was developed as a part of the .NET platform (of Microsoft) and was designated to be parallel to PHP functionally.

In recent years, it has become a standard language and not just a usable on .NET platform. Some viewers consider it as an improved Java.  

5.  PHP  -  Hires about 6% of the software developers. PHP is is the most widely used scripting language over the web.   

This script language runs on the server in web applications. It can also be used for command-line scripting and client-side GUI applications.  It's compatible with most servers, most operation systems and most relational-databases. 

Friday, June 17, 2011

Java's Advantages over C#

Recently I've had an argument with myself about which language to use for combined desktop & web application. After a few sleepless night, I've come to the decision: Java. The main advatages that I've seen in Java compared to C#.NET are the following:



1. The amount of reference resources (i.e. solution to problems one may find on the web) is several times the amount of reference for C#. The reason for this feature is that Java is based on open-source & community mutual help, whereas C# is based on the proprietary .NET framework, which means that Microsoft is supposed to supply the main portion of reference and developers are less likely to participate in help forums.

2. Java is the main flatform for cell-phone applications, whereas C# seems quite irrelevant for this field. As an independant developer, it might be irresponsible to neglect the cell phone field, by abandoning every possiblilty of creating such applications.

3. Java is free whereas C#.NET costs $500-$1000. It may be insignificant to firms, but for individual developers it's not always so. Furthermore, I believe that psychologically it's easier choosing a language platform which one is sure is going to be free for the years to come and for the versions to come.

4. C# seems to be very web-oriented, which means that it's mostly used for web applications. Java seems to be used for a larger spectrum of applications. This may be imporatant for a developer who can't see his/her future mainly in the web development field.

5. Java is a cross-flatform language, which means that every application developed in Java should be comapatible with every operation-system in the market (Linux, Apple OS etc.). C# is basically limited to Windows computers, so by using it, a developer loses much of the distribution potential of the developed product.

To summarize - as an independant developer, I just can't afford a language rellevant only to Windows, taking into consideration the increasing market of cell-phone applications and the Linux arena.

Monday, June 6, 2011

C++ vs. C#

Ladies & gentlemen, my dear readers - today I'm going to discuss the tough rivalry between the veteran C++ and its Microsoft counterpart C#. When shall we opt for the first and when we should favor the second.

A little beat of history - C++ was issued back in 1983 as a supplement to the C language, and its main topic was to add object oriented programming (OOP) capabilities to C. It was meant to b e used for creation of DOS applications (Windows wasn't reality then). C# was issued by Microsoft in 2002, as part of the .NET platform, which was meant to be Microsoft software development platform. Later on, it became a standard language (not necessarily usable just on the .NET platform).



So when shall we use the old (& good..) C++ when developing a new application? the answer lies within the basic purpose C++ serves: a medium-low language which is meant to deal with the hardware of the computer. We have to bear in mind that C++ was invented for DOS, and the software for DOS had to deal directly with the hardware (DOS wasn't as sophisticated as Windows). The conclusion is that we should choose C++ for applications manipulating directly the hardware, such as:

1. Security & privacy software - antivirus, anti-spam, anti-keyloggers.
2. Computerized graphics - 3D applications, image processing, video streaming.
3. Drivers - for printers,scanners,cameras,keyboard,mouses,USB devices.
4. Communication protocols - HTTP, TCP, SSL, SSH.
5. Operation systems applications - programs that encrich the functioning of the operation system.


As we can see, much of the software world isn't mentioned above, and this is exactly the portion of software applications we can conveniently develop in C#. C#, in its basic definition, suits application development which doesn't involve in the computer's hardware much and which is designated for use mainly on Windows operation system. C# is also suitable for web programming (i.e server side scripts), so mastering C# helps both in desktop applications development and in web applications development.

Tuesday, May 31, 2011

Can Web Applications Replace Desktop Applications?

Ladies & gentlemen, geeks & nerds, my dear readers - I am, as an independent software developer, in an annoying crossroad: should I keep developing web applications or should I move to development of desktop applications.



The reason for keeping developing web applications are various:

1. The trend during recent years has been to use online applications for basic needs: email, file sharing, social networks or games. Also there's has been a trend to use combined desktop & web application (installed software that functions by connecting to the web), such as: Skype or chat applications. Because most of the users are basic users (as opposed to technical users, like programmers or bloggers), this is a major argument.

2. Web applications can be accessible from everywhere, giving users the flexibility of accessing their email,documents or images without being near their personal computers.

3. No need of installation - most people are lazy and like everything done for them. So bypassing the phase of installation or updating is definitely an argument.

The reasons for developing desktop applications:

1. It's very hard to believe that web applications, running on a browser, can be equal or better than desktop applications. It's important to take into account, that browsers (by their nature) are quite restricted in using the computer's hardware. This issue is crucial in complex applications (like: image processing or sound processing applications).

2. Confidentiality - When using an online application, the user's data is generally vulnerable to misuse by the hosting site. Who would want their financial data to be open to stranger's eyes?..

3. Speed - using a web application means communicating with a distant server, which makes it usually slower (depends on the user's bandwidth).


Conclusion - it seems that sole desktop applications will be losing power in the next years, partially for desktop-web applications (like:Skype) and partially for web applications (like: Gmail or GoogleDocs).

Friday, May 27, 2011

Java - Advantages & Disadvatages

Java is now the world's most popular programming platform. About 20% of the developers worldwide use Java as their sole or main development language. But what are the main advantages & disadvantages of this platform ?



In my view, Java enjoys the following advantages:

1. Cross-platform compliant - a Java program can run as it is on every operation system. This means that a developer doesn't have to issue a version for every operation system. This feature is due to the fact, that the compilation in Java produces an intermediate code that the Java platform installed on the computer transforms into a final code compatible with the specific operation system of that computer.

2. Automatic memory dismissal - Java releases every memory block right after it ends its function. In other languages, the programmer has to free the memory by himself, which makes the work harder for him.

3. No double inheritance - when a programmer defines that a class inherits another class (i.e. a class 'Officer' inherits a class 'soldier'), he/she may do it once for every inheriting class. In other object oriented languages, a class may inherit many classes, which may cause many errors.

4. Threads - Java lets developers run several code blocks in parallel, which means that the computer performs a code block for a period of time and when the time ends, the computer starts running another code block and so on.
This feature is especially good for computer with multiple processors (cores), because it makes the computing time shorter.

5. Simplicity - Java is by far the simplest programming language among the main languages. It was designed to be easily learned and easily implemented .

But not all is good about Java. I've found the following disadvantages using Java:

1. Slowness - Java is slower than the other main languages (like: C++ or c#) and more memory consuming. This feature can be crucial in games or graphics development.

2. Weird look - applications developed in Java look to the user quite different compared to applications developed in other main languages. To fix that, the developer has to put extra efforts in.

3. Only objects oriented - basically, it's possible to use Java only as an object orient language. In other language (like c++) there's a possibility of using OOP and procedural code alike.

Saturday, May 21, 2011

Windows 7 - What's New?

Basically we can consider this OS as a "well functioning Vista". It doesn't add much to what Vista offered before, and I'll pinpoint the added functions Windows 7 offers.

generally speaking, WIN 7 is more functional than Vista with a better emphasis on user experience:



First, the User Account Control (UAC) is modernized compared to one in Vista. The UAC in Vista used to alert the user every time any change was performed on the computer, and by that I refer even to a simple clock setup. Win7 alerts the user only in a single scenario: when a program tries to implement changes on the computer. This change makes the UAC more reliable, because the user actually pays attention to the alerts.
In addition, Win 7 lets you an amount of control over the UAC: you may choose between 3 choices: off,partially on - only for changes made by software, on (like in Vista).

Second, A new element is added: 'Homegroup', which make it easier to share folders,files & hardware component over a home network. The Network and Sharing Center is now much more efficient and easy to work with. The file sharing mechanism, that was head-breaking in Vista, is very easy to use in Win 7 and requires not much than a right-click.

Third, A new task bar was formed, which now replaces the former 'Quick Launch bar' and resembles the task bar on MAC OS. This task bar will show the user all the opened windows in a micro size image. Moreover, if the user drags a non-maximized window to the top of the screen - that window is automatically maximized. If the user drags a maximized window downwards, it returns to its original size. If that window is dragged to the left edge of the screen, it occupies the left half of the screen. The same if dragged to the right edge.

Fourth, The Control Panel is much more user friendly on Win 7: when a user chooses a category on the control panel, he/she gets a new screen with the subcategories of that main category. That feature may make the tracking of the desired function swifter.

Tuesday, May 17, 2011

Why Should You Move to Linux OS?



This morning, while brushing my teeth and shaving, a weird question crossed my mind: if Windows OS costs a lot and Linux OS is free, why do so few people use Linux. I've search the web for answers, combined it with what I already know, and here it is.

The fact is many organizations & individuals consider seriously using Linux, but most of them refrain from doing so. The main reasons:

1. Habit - people are just used to Windows, and leaving it takes a serious reason which most people just don't see.

2. Consensus - people see that almost every one they know uses Windows OS, so they assume that 'everyone can't be wrong';

3. Lack of skill - many refrain from Linux usage because they believe that it requires a significant technical knowledge and it's not user-friendly like Windows OS.

4. Less compatible software - most people believe that if they moved to Linux OS, they would suffer from a small variety of compatible software.

So why should people move to Linux OS? Basically, I can think of a few main reasons:

1. It's free - a couple hundred dollars per a computer isn't cheap for Americans & Europeans and is definitely expensive for most parts of the world. So Linux OS is a nice opportunity for a little saving.

2. Hardware support - in recent years, the portion of drivers, graphical cards and others that can work with Linux has risen sharply. This means that most hardware functionality available on Windows OS is also available on Linux.

3. Security - the terms 'Anti-virus' or 'anti-spyware' are quite unknown to Linux users because this operating system is almost free of these risks. This occurs due to the fact that Linux is based on voluntary contributions from its large community, so solutions to viruses and other security issues are quickly spread through the web.

4. Flexibility - Linux OS allows more flexibility than Windows OS. For example,you may modify the user interface easily and communicate with the OS kernel more extensively.

5. Software - most Linux software is free & open-source. This means that you may modify the software for your needs or even monetize it after modification.

Wednesday, May 4, 2011

How Can I Measure my Internet Speed?

Internet speed = the pace of downloading data from internet sites to the user's computer.
Internet speed is crucial especially in media (video &graphics) application.
The following website can tell your internet speed, and supply statistics of it compared to others in tour country  and around the world:  see here

Viewing the international statistics, I can infer that there are large gaps between regions and sometimes between countries  of the same region.  The top ten nations, those who enjoy the average fastest internet connections are: South-Korea,Sweden, Lithuania,Romania,Netherlands,Latvia, Switzerland, Moldova,Bulgaria,Germany.

Surprise: half of those nations have developing economies and are not well-developed.  This comes in contrary to my initial intuition, saying that top economies allow top web service.  Moreover, the web speed in the US isn't faster by far  than  in Russia & Eastern Europe.  China & India both suffer from a very slow average internet connection, a fact contradicting the thought that these two can take the world lead in technology.


Tuesday, May 3, 2011

Proud to Present: Virtual Private Server (vps)






The VPS was invented to enable small businesses or individuals enjoy a (dedicated) server of their own in a cost of a little more than a basic (shared) hosting and without purchasing any piece of hardware.   The idea is simple: the supplier allocates a memory block and defines it as a server by  installing all the software environment needed for it.  

Cases you don't need a VPS and can do well enough with a shared hosting:
1.In cases you have a low to medium traffic website .
2. In cases  you don't have any Linux experience and prefer a simple administration panel.
3. In cases a gap of $25-$40 may be significant for you.

Cases you would enjoy a VPS more than a shared hosting:

1. When you need a full server administrator access and can't do well with the very limited administrative rights given to you in a shared hosting.  For example: if you need to install SSL (encryption) for your website, or if you need to modify the PHP engine configuration.
2. When you have heavy traffic coming in to your site.  In case of a shared hosting, this can cause trouble (the bandwidth is more limited than in a VPS). 

Now, what are  the differences between a VPS and a full dedicated server:
1. Though a VPS is a server, the fact that it uses the same hardware with other VPS's, limits a little the flexibility of the administrator regarding the server's configuration.
2. For the same reason, the surfing to your site can be sometimes a beat slower, because other sites using the same hardware might be flooded by traffic at that moment.
3. Using a VPS, you save a respectable sum of money due to the lack of hardware required and due to the fact that you don't have to maintain regularly the hardware.
4. Resources on demand - using a VPS, you can easily enlarge vital resources like: RAM & fixed memory.  Using a dedicated server, you have to purchase an additional hardware device in such a case.

Summary - a VPS is an hybrid of two: the large dedicated server and the primitive shared hosting.  If you have a modest website (no video or complex graphics)  with a traffic of no more than a couple of thousands a day, you should do fine with a shared hosting program.  If you represent a huge portal having tens of thousands visitors a day and presenting heavy data (graphics, video), it seems that you won't escape a heavy expenditure on   a dedicated server.  If none of the above is relevant to you, would you consider a VPS?..
 



 

Sunday, May 1, 2011

Eye Pain in Computer Users - How Can You Relieve It??




Recent researches have shown that 50%-90% of computer workers suffer from eye strain or some other eye problem.  There are some proven techniques of relieving the problem:
1. Periodical eye exam - once a year it's recommended to perform an exam, including asking the doctor for advice about working with computers for long hours a day.

2. Mind the light strength around you - often people work in an environment which has an excessively bright light.  In average, an office is bright as two times as it should be.  So it's recommended to close a bit the curtain or limit the number of bulbs in the office. Especially it's recommended to avoid working under overhead fluorescent lights.

 3. Minimize Glare - this is a main cause to eye strain.  To avoid it, paint your walls in a color other than white ,install an anti-glare screen  on your monitor and cover the windows of your office. If you wear glasses, purchase lenses with anti-reflective (AR) coating.   AR coating reduces glare by minimizing the amount of light reflecting off the front and back surfaces of your eyeglass lenses.

4.  Move to LCD monitors - monitor such as we find in laptops. These monitors  are easier on the eyes and usually have an anti-reflective surface.  The monitor should  have the highest resolution  you can afford, because it allows a lower dot pitch.       Generally, displays with a lower dot pitch have sharper images. Choose a display with a dot pitch of .28 mm or smaller.




 5. Adjust brightness & contrast - adjust the display settings on your computer so the brightness of the screen is about the same as your work environment.  As a test, try looking at the white background of this web page. If it looks like a light source, it's too bright.   If it seems dull and gray, it may be too dark.

6. Blink a lot - when people work at a computer, they tend to blink less.  This behavior causes many eye problems, since the blinking is crucial to the eye's health as it coats the eye with tears (defending the eye).     Try this exercise: Every 20 minutes, blink 10 times by closing your eyes as if falling asleep (very slowly). This will help wet your eyes.

 7. Exercise your eyes - Look away from your computer at least every 20 minutes and gaze at a distant object (at least 20 feet away) for at least 20 seconds.  Looking far away relaxes the focusing muscle inside the eye to reduce fatigue.   Another exercise is to look far away at an object for 10-15 seconds, then gaze at something up close for 10-15 seconds. Then look back at the distant object. Do this 10 times.

8. Take many breaks - as much as it sounds funny, taking breaks may help your eye's health.   Most workers take two breaks a day of about 15 minutes each.  researches have implied that taking additional 3-4 abrupt breaks of about 5 minutes, is very healthy to the eye. The surprising side of this method is that the productivity of the works hasn't declined due to the additional breaks, due to the extra freshness of their eyes.

9. Improve your workstation - Put printed pages as close to the screen as possible, to prevent the eye's movement between the monitor and the pages.  

If you  want to use a desk lamp,  make sure it doesn't shine into your eyes or onto your computer screen.
 
Purchase  furniture to enable you to position your computer screen 20 to 24 inches from your eyes. The center of your screen should be about 10 to 15 degrees below your eyes for comfortable positioning of your head and neck.

10. Change your glasses or lenses - it would be great to change those with glasses/lenses especially compatible with intensive computer work.





Saturday, April 30, 2011

Computer Science Studies - Why Do Young People Avoid It?





 Computer Science is certainly one the most desirable academic degrees in the job market,  and enables its graduates a variety of professional tracks giving relatively high social security and a  fine financial reward.   But in the last decade (especially since the .COM bubble explosion), the Computer Science university departments across the western world suffer from continual shortage of students.
Some research has been held in order to explain the issue.  The findings point  a few clear motives for young undergraduates not to embark on a Computer Science career:



First, the common conception, that most  of the job market has moved to developing regions (mainly India but also Eastern Europe and Latin America), so there's no point of studying this field.  This has been proved statistically to be completely untrue, as the demand of Computer Science graduates has risen sharply during the last decade.



Second, the notion that Computer Science is just for 'geeks' and not for an average type of person or a girl.  This conception has been widely refuted in several researches checking the backgrounds of thousands of computer scientists and software engineers.



Third, the belief that one can work in the field without an academic degree and still succeed.  This belief received its legitimacy in the .COM bubble period, some 10 years ago, when many programmers entered the     software market without any academic accreditation.  The fact is  that nowadays, it's almost impossible to enter the software development market without a relevant degree mostly because the development capabilities of non-academic programmers fall  behind the technical requirements needed now in the job market.

Forth, the adamant claim that Computer Science academic studies are theoretical and impractical, and the student would be better-off if he/she  studies practical courses like programming languages, databases and so on.    This claim can't hold grounds because it has been evident that the theoretical basis is crucial for embedding thorough logical and numerical capabilities, which without, it's hard to have what it takes to survive in the software market for years.



Fifth, the genuine belief that Computer Science studies may lead only to a  software development career .   In fact, a large portion of Computer Science graduate find themselves in industries like the capital market or business consulting, where there is a need for highly qualified employees  logically and numerically.  The skill acquired in Computer Science studies are relevant to many  job categories across the job market.

Sixth, many people believe  that Computer Science studies are meant for people with a programming record and not for people with no programming experience.   Well, it makes sense to think that students with programming skills would have  slightly easier studies,  but it's not compulsory to have programming skills, as the academic studies don't focus anyway on the programming side but on the theoretical side.



Summary - the Computer Science field losses most of its recruitment potential due to unfounded common beliefs that deter prospect students from joining the field.  This means that rumors prevents people from having one of the most rewarding (professionally  and financially) career out there...

Friday, April 29, 2011

Cloud Computing - What is all about?





The term basically refers to performing computing activities online instead of offline (using the computer's hardware).  it means that individuals  or organizations lease remote  memory space and software , that are stored away from their physical location, and use them through the internet.  
The basic advantage of this model is that the customer doesn't have to purchase in advance software or memory space, but purchases them on demand only and for the extent he/she may need.   This feature often saves a significant portion of the computing costs of an organization.

The basic types of service available on Cloud Computing:

First, Sotfware-as-Service (SAAS), which refers to the use of computer programs installed on the supplier's servers, and the user makes use of them through the internet.  Prominent SAAS software examples: Gmail, online gaming.

Second, Infrastructure-as-service (IAAS), which refers to use of memory space of the supplier by the user.  Prominent examples: site hosting, backup storage.

Third, Platform-as-Service (PAAS), which refers to the use of developing platforms by the user in the process  of writing and testing software, such as: Linux emulators, online compilers.

The financial cost reduction using Cloud Computing derives from several factors:

First, no need of purchasing expensive hardware devices, such as: servers.

Second, no need of purchasing in advance expensive software products, such as: operating systems, Integrated Development Environment (IDE).

Third, no need of hiring local maintenance experts for the software and hardware.

Fourth, no need to deal with disaster relief procedures, as the supplier deals with it.

Fifth,  no limit of resources availability.  for example. if there's a shortage of memory space, there's a possibility of purchasing additional small size memory.

Sixth, no dependency on a specific location where software products are installed.

The shortcomings of Cloud Computing can be roughly divided into the following:

First, dependency on the supplier.  The latter may run bankrupt or have many operational failures. In such a case, the user can't do anything to prevent his own setback.

Second, possible security holes regarding the employees of the supplier, who may cause damage to the user's data.

Third, difficulty in communication between software products which are located on  many different servers.  For instance, SQL database that has to communicate with a web script held on another server.


Fourth, difficulty in managing software platform without the ability to access the hardware (because it belongs to the supplier).  For example, running a disk compression may be necessary for a software running but the user isn't permitted to do that.

Prominent Cloud Computing suppliers include:

1. Elastic Compute Cloud (EC2) of Amazon - The most well-known service, which allows memory space & infrastructure software  leasing.
2. App Engine of Google, which allows development & testing of Java/pythons application on remote servers.
3. Azure of Microsoft - which allows mainly platforms for online development of software.

Summary, Cloud Computing is here to stay, but due to its vulnerability concerning security, I believe that the move of organization to work with this model is going to take more than a few years.

Thursday, April 28, 2011

IPad - Heaven for HTML5? Hell for Flash? Both??





In April 2010, Apple issued IPad: an advancing version of IPhone and IPod.  That new  born 'baby' has been intended to supply a modified user experience mainly for its much larger screen.  At first glance it looks that the IPad might replace a laptop, but at a second glance the lack of support for Flash seems awkward.  

The cold war between Apple & Adobe is well known to every computing freak. Apple made sure already in 2007 that Flash had no place on IPhone.   Adobe tried to establish a cooperation for embedding Flash on IPhone, but Apple was reluctant due to 'mass cost of memory' of Flash and 'potential damage to user experience'.

But IPad is a different story - having a much stronger hardware intended for large screen applications, and basically there is no reason for flash not to be a part of it.    Flash nowadays is an integral part of almost every website and the chief video streaming model.   So the absence of it on IPad  is devastating  for the internet usage on IPad.  
Apple's motive to ban Flash from its products is quite obvious: Apple's main income comes from its application store (App Store), and letting Flash on, should reduce the business run at the application store.   But Apple faces a competition from Google's cell-phone operating system Android, which allows Flash, and also should take into consideration the vast impact of Video portals like Youtube.   So Apple's decision-makers have decided to solve the issue through a substitute to Flash called HTML5.

In recent years a new trend has been taking place in the software world: transition from desktop (installed on a local computer) software to web software (using a program on a website).   We all know how much Outlook has diminished and how much Gmail or Yahoo-Mail have grown in popularity throughout the last decade.  We all have heard about 'Cloud Computing' and its rapid growth.

The main scripting language of the internet world has been HTML.  But HTML fails nowadays in providing fast and reliable webpages due to the complexity of web services.  Because of this issue, several modification have been made in the traditional HTML for a better functioning.  The main example for that is Microsoft's modifications to HTML that have been relevant only on Internet Explorer.  

Microsoft's step has caused heavy losses for webmasters: other emerging browsers (i.e Firefox. Chrome) haven't implemented Microsoft 'new' HTML, so a necessity  of adapting the websites also for other browsers has been a burden on the webmasters' bank accounts.

The first firm to address the 'old' HTML problem was Macromedia, who issued the first generation of Flash, in order to enable a rich browsing environment.   Adobe got excited by the new miracle and purchased Macromedia in purpose of mass marketing Flash.  Microsoft 'got jealous' and issued its own  Rich Internet Applications (RIA)  platform Silverlight, which till nowadays hasn't achieved much international success.

Apple, much worried about the mess in the HTML world,  decided in 2007 to promote the new generation of HTML:  HTML5, in purpose of letting every browser run efficiently on IPhone and its    future generations.  Simply put, HTML5 lets the user give Flash/Silverlight up while still be able to run video/animation applications.  No doubt that Apple's push to  HTML5  has contributed to its success up to now.  Several top web portals have implemented HTML5 up to now, such as: The White-House, Gmail and CNN.  This step allows the use of the mentioned portal through Apple's smart phones.



Much depends on IPad success concerning HTML5: if the new smart-phone succeeds significantly, most large websites will have to implement HTML5 in order to stay relevant to their audience. 

Should Adobe CEO fear for his career?  not yet: HTML5 is yet in development and hasn't been fully embedded in all the browsers.  this means, that some of the features of Flash aren't yet available in HTML5. But it's surely possible that HTML5 will take control of the web within 4-5 years. 

Tuesday, April 26, 2011

This Time: Mac vs. PC Users && First Impression of Firefox4



Mac vs. PC users

A new survey gathering some 400,000 views tries to explain the issue.   The attrition battle between these two platforms (or shall we say: two civilizations) gets a new empirical aid from a new survey held by the 'Hunch' portal.

 You'll not be surprised to hear that the survey strengthens the common view of the two communities: Mac users tend to be relatively young, intelligent, well-educated ,liberal and tend to live in the big city.  PC users would rather have a Harley-Davidson &  some fries at Mcdonald's to begin with.

The 'Hunch' portal was founded back in 2009 by some MIT graduates led by Caterina Fake, who is also Flicker's founder.  The portal has done much  since then in revealing  the deep secrets of the web users.  

Viewing the survey, it's easy to see that it's not really a "scientific" research as far as it concerns the methods being used: about 50% were PC users and only 25% were Mac users.

The reason for all that:  First, Mac is much more expensive than PC, and well-educated liberal people tend to be wealthier (OMG).  Second, Mac is wide-spread in Europe whereas PC is in total control of the North-American market.  The characteristics of Mac users suit better  European computing fans rather than  American ones.  
 
First  Impression of Firefox4

The new version of Firefox brings some user-interface modifications intending to put Firefox ahead of the other major browsers (Internet Explorer & Chrome).  First of all, the reason to move to FF4 is simple: you'll do it anyhow  at some point, so why not as soon as possible?..

The first pro about FF4 is that it detects automatically which installed add-on isn't compatible with the new version and suggests to update it (if possible).

The second pro is that immediately after the installation, the user gets a page with video tutorials presenting FF4 and its new features, making the adaptation  much easier.

The third pro is the new GUI design: it looks fresher and more 'techy' than the previous one, including thousand of custom templates ("persona") to enrich the user-interface.

In short, Firefox is probably still the best browser out there: best security, best privacy, best (by far) add-on gallery & pure open-coded.   I wouldn't bet on it to remain the best in the next few years,  taking into account the dramatic expansion of Google Chrome (and the mega-force standing behind it..), but for now - it's simply the best..