What is URL Canonicalization and how to Use Canonical Tag Properly.

delphide blog

Google definitely wasn’t the first search engine that surfaced the Internet. But Google did things in a better way and provided results that were actually useful. Google hasn’t stopped expanding as a company since that very day. Though SEO is done for all the search engines that exist today, one major search engine that handles most of the traffic on the Internet is Google. Whenever we talk about SEO, people automatically assume that we are talking about optimizing the website for Google. When it comes to SEO, we need to check many factors, both read more..

Read More


How to Create a PHP Utilities Framework – PHP Utilities Framework package blog

Introduction

Every PHP application needs to perform certain operations that are common even between different types of applications.

Here I present the PHP Utilities Framework as an example of library of classes that contains basic components to address those common needs.

The goal of the PHP Utilities Framework is to provide well tested reusable classes.

utilitiesframework-code-screenshot

The Benefits of Building Your Own Utilities Framework

In my experience using your own code is more useful then using someone else’s code.

There are many reasons for this. Firstly often you do not know if the third party code is well tested. Secondly you do not know if its secure or has some limitations.

As you get more experience with writing PHP code you will notice that much of the work you have to do, you have already done before. Maybe you wrote code some time ago that meets some immediate requirement.

Instead of downloading code from third party sites you would benefit more from reusing your existing code.

This has many advantages. For example it makes you think more about how your code works and draws your attention towards code quality and good documentation.

If you have properly documented your code then you will enjoy reusing and applying it to solve your problems. The PHP Utilities Framework provides a set of general purpose PHP classes that you can use to develop your PHP scripts.

The Structure of the PHP Utilities Framework

The framework is easy to extend, so you can just add your own custom library to the framework or even a third party library that you have tested and find useful.

The PHP Utilities Framework consists of utility classes. Each class performs a specific task. For example the class for Encryption allows encrypting and decrypting text.

All classes implement the Singleton design pattern except for the DatabaseFunctions class. The Singleton design pattern allows instantiation of only one object of a class. This makes use of the classes more efficient because only one instance of the class is ever created.

The PHP Utilities Framework also implements the Factory Design Pattern. All classes are accessed through a factory class called UtilitiesFramework.

This class contains a single static method called Factory that takes two parameters. The first one is the name of the required utilities object, for example: encryption. The second one is the list of parameters for the object.

The function returns an instance of the required class. The factory class allows multiple instances of a class provided each instance has different parameters. For example the DatabaseFunctions class does not implement the Singleton Design Pattern since it needs to allow for the possibility of having multiple connections to different database servers.

The PHP Utilities Framework also implements PSR-0 and PSR-4 autoloading standards. These are standards for auto loading of PHP classes that are proposed by the PHP Framework Interoperability Group.

This makes it easy to use the utilities classes in your own projects. The autoload.php file that is included with the UtilitiesFramework is not a complete implementation of the PSR standard. In order to autoload a utility class, the utility class file name must match the class name. Each utility class is documented using PhpDoc Syntax.

Using the PHP Utilities Framework

You can download the code of PHP Utilities Framework from PHP Classes site as a ZIP file or by using composer to install it from PHP Classes own Composer repository.

Using the PHP Utilities Framework is simple and requires just two lines of code. First you have to include the autoload.php file in your code. After that you have to create an instance of the utilities class. You can do this with the command:

$utilities_obj = \Framework\Utilities \UtilitiesFramework :: Factory( $object_name ).

\Framework\Utilities is the package namespace. All classes belong to this namespace.

Once you have created the object, you can use it in your code like any class calling its functions.

PHP Utilities Framework Classes Description

Some of the classes depend on third party tools or extensions. An example usage of all the classes is given in Example.php script.
A brief description of each class is as follows:

  1. Authentication

    This class provides a quick way to add basic HTTP authentication support to your site. It provides a single public method called AuthenticateUser. The method takes 2 parameters. The first is the list of user credentials.

    The second is the title of the HTTP authentication box also known an HTTP authentication realm. When this function is called, the HTTP authentication headers are sent to the browser. The browser then displays HTTP authentication box. The Authentication class is used in following way:

    /** List of valid user credentials. used to test the http digest authentication */
    $credentials = array(
     array(
      "user_name" => "admin",
      "password" => "admin"
     ),
     array(
      "user_name" => "manager",
      "password" => "manager"
     )
    );
    
    /** The custom text to use in the authentication box that shows in the browser */
    $authentication_box_title = "Protected Area!";
    
    /** The authentication object is fetched */
    $authentication = UtilitiesFramework::Factory( "authentication" );
    
    /** 
      * If the user presses the cancel button then following message is shown
      * If the user entered the wrong credentials then he will be asked to login again
      */
    if (!$authentication->AuthenticateUser( $credentials, $authentication_box_title ))
     echo "You pressed the cancel button!.";
    
    /** If the user entered the correct login information then the following message is shown */
    else
     echo "You entered the correct login information!.";
    
  2. Template

    This class allows rendering templates. It has one public function called RenderTemplateFile. This function allows rendering a HTML template file. The HTML file contains variables inside {} tags.

    The function replaces these tags with values that are given as parameters. The main features of this function is that the template parameters can contain template names. This allows a template to include other templates. The main use of this function is to separate the HTML from the PHP code.

    HTML elements with complex layouts such as tables can also be rendered using this function. For example you can have separate template files for table, row and column tags. You give this function the table data and it renders the table template using the given data. The templates class is used in following way:

    /** The Template class object is fetched */
    $template_obj = UtilitiesFramework::Factory( "template" );
    $template_path = "templates". DIRECTORY_SEPARATOR. "example.html";  
    $tag_replacement_arr = array( array( "title"=>"Page title", "body"=>"Body title" ));
    
    /** The example template file is rendered */
    $template_file_contents    = $template_obj -> RenderTemplateFile( $template_path, $tag_replacement_arr );
    print_r( $template_file_contents );
    
  3. Caching

    This class provides caching of data that may take some time to generate like for instance database results. It provides two public methods called SaveDataToCache and GetCachedData.

    These methods are used to save data to cache and fetch data from cache. I used it for implementing function caching. If some function needs to do a lot of processing or needs to make expensive API calls, then you can use this method to save the function output to database.

    The next time the function is called you can just use GetCachedData to return the cached data. The Caching class is used in following way:

    /** The database object is fetched */
    $database_parameters = array(
     "host" => "localhost",
     "user" => "nadir",
     "password" => "xxxxxxxxxxxxxxxxxxx",
     "database" => "dev_pakphp",
     "debug" => "1"
    );
    $database_obj = UtilitiesFramework::Factory( "database", $database_parameters );
    $db_link = $database_obj->df_get_id();
    
    /** The prefix of the table. e.g if prefix name is example_ then table name is example_cached_data */
    $table_prefix = "example_";
    
    /** The caching object is fetched with given parameters */
    $caching_parameters  = array(
     "db_link" => $database_obj->df_get_id(),
     "table_prefix" => $table_prefix
    );
    $caching_obj = UtilitiesFramework::Factory( "caching", $caching_parameters );
    
    /** The data is saved to cache */
    $caching_obj->SaveDataToCache( "TestFunction", array(
     "parameter 1",
     "parameter 2"
    ), "test data");
    
    /** The data is fetched from cache */
    $cached_data = $caching_obj->GetCachedData("TestFunction", array(
     "parameter 1",
     "parameter 2"
    ), true);
    print_r( $cached_data );
    
  4. DatabaseFunctions

    This is a database wrapper class for mysqli functions. It contains functions that make it easier to work with MySQL databases. It also supports MySQL transactions and Query Debugging.

    For example if you have some script that does a lot of database updates, then you can use the script to commit the database transactions at the end of all the database updates. This will prevent your data from being corrupted in case of errors.

    To implement this using DatabaseFunctions you can use df_toggle_autocommit function. This enables or disables automatically committing the MySQL query. After your database updates have completed you can use df_commit to commit the database transactions. You can also use df_rollback function to rollback the transaction.

    If you want to see the queries run by the DatabaseFunctions class then you can just call df_display_query_log function. This displays all the MySQL queries run by the object. The DatabaseFunctions class is used in following way:

    /** The database object is fetched */
    $database_parameters = array(
     "host" => "localhost",
     "user" => "nadir",
     "password" => "kcbW5eFSCbPXbJGLHvUGG8T8",
     "database" => "dev_pakphp",
     "debug" => "1"
    );
    $database_obj = UtilitiesFramework::Factory( "database", $database_parameters );
    
    /** The $database_obj is initialized and cleared */
    $database_obj->df_initialize();
    
    /** The select query is built */
    $main_query = array();
    $main_query[0]['field'] = "*";
    
    /** The where clause of the query is built */
    $where_clause = array();
    $where_clause[0]['field'] = "function_name";
    $where_clause[0]['value'] = "TestFunction";
    $where_clause[0]['table'] = "example_cached_data";
          
    $query = $database_obj->df_build_query( $main_query, $where_clause, 's');
    $db_rows = $database_obj->df_all_rows($query);
    print_R($db_rows);
    
  5. Email

    This class allows sending HTML email with attachments. It uses the Mail and Mail_Mime PEAR classes. It contains a single public method SendEmail. This takes 5 parameters: $attachment_file, $from, $to, $subject and $text. The $attachment_files parameters is an array containing absolute paths to the files that need to be sent as attachments. The Email class is used in following way:

    /** 
      * The Email class object is fetched 
      * The Email class requires Mail and Mail_Mime pear package
      * Change the from and to emails to your email address
      */
    include_once("Mail.php");
    include_once("Mail/mime.php");
            
    $from_email = "nadir@pakjiddat.com";
    $to_email   = "nadir@pakjiddat.com";
            
    $email_obj = UtilitiesFramework::Factory( "email" );
    $is_sent = $email_obj->SendEmail(array(
     "test.xls"
    ), $from_email, $to_email, "Utilitiesframework Test", "<p>testing html content</p>");
    if ($is_sent)
     echo "Email was successfully sent";
    else
     echo "Email could not be sent";
    
  6. Encryption

    This class uses the php mcrypt extension to encrypt and decrypt text. It contains two public functions EncryptText and DecryptText. These functions allow encrypting and decrypting strings.

    The EncryptText function encrypts the text and then encodes it using base64 encoding. The DecryptText function does the reverse. i.e it decrypts the text and then decodes it using base64 decoding. The Encryption class is used in following way:

    /** The encryption object is fetched */
    $encryption_obj = UtilitiesFramework::Factory( "encryption" );
    
    /** The text to be encrypted */
    $original_text  = "test encryption";
    
    /** The original text is encrypted */
    $encrypted_text = $encryption_obj->EncryptText( $original_text );
    
    /** The encrypted text is decrypted */
    $decrypted_text = $encryption_obj->DecryptText( $encrypted_text );
    
    /** If the original text matches the decrypted text then following message is shown */
    if( $original_text == $decrypted_text )
     echo "Text sucessfully decrypted";
    else
     echo "Text could not be decrypted";
    
  7. ErrorHandler

    This class provides error handling and logging functions. It allows the user to register custom error handler and shutdown functions using PHP callback functions. It also displays a well formatted error message that includes the debug_backtrace function information.

    The error message layout is displayed using HTML template files so it can be easily edited.

    Shows error stack produced by the ErrorHandler class

    The ErrorHandler class is used in following way:

    /** The parameters from ErrorHandler object */
    $parameters = array();
    
    /** Custom shutdown function. It is automatically called just before script exits */
    $parameters[ 'shutdown_function' ] = array(
     $this,
     "CustomShutdown"
    );
    
    /** Used to indicate if the error message should be displayed */
    $parameters['display_error'] = true;
    
    /** The email address that will get the error message email */
    $parameters['log_email'] = "";
    
    /** The error log file name */
    $parameters['log_file_name'] = "";
    
    /** The smtp mail headers to include with the error email. e.g array( "Subject" => "Error email" ) */
    $parameters['log_email_header'] = "";
    
    /** Custom error handling function */
    $parameters[ 'custom_error_handler' ] = array(
     $this,
     "CustomErrorHandler"
    );
    
    /** The ErrorHandling class object is fetched */
    $errorhandling_obj = UtilitiesFramework::Factory( "errorhandler", $parameters);
    
    /** Throw an exception for testing the error handling */
    throw new \Exception("Test exception!", 10);
    
  8. Excel

    This class is a wrapper around the PhpExcel library. It has one public function called ReadExcelFile. This function takes 3 parameters. The absolute path to the excel file to be read. The start and end cell coordinates like for instance A3. It returns a PHP array containing the excel file contents. The PHPExcel.php class must be included before calling this function. The Excel class is used as follows:

    /** The PhpExcel library is included */
    $excel_file_path = "Enter the path to the PHPExcel IOFactory.php file!";
    if(!is_file($excel_file_path)) {
     echo "Please enter the path to the PHPExcel IOFactory.php file!";
     return;
    }
    include_once($excel_file_path);
    
    /** The Excel class object is fetched */
    $excel_obj = UtilitiesFramework::Factory( "excel" );
    $data_arr  = $eel_obj->ReadExcelFile( "test.xls", "A2", "C13");
    print_R($data_arr);
    
  9. FileSystem

    This class provides simple functions for accessing the file system. It provides functions for reading, writing, deleting files and reading folders. It also allows uploading files and getting remote file contents using the HTTP POST method using the curl extension. The FileSystem class is used in following way:

    $is_browser_application = true;
    $html_content = '<!DOCTYPE html>
       <html>
           <head>
               <meta charset="UTF-8">
               <title>Title of the document</title>
           </head>
           <body>
               Content of the document......
           </body>
       </html>
    ';
    $html_content = str_replace("\r", "", $html_content);
    $html_content = str_replace("\n", "", $html_content);
    $validator_url = "https://html5.validator.nu/";
    $output_format = ($is_browser_application) ? "html" : "text";
    $show_source = ($is_browser_application) ? "yes" : "no";
            
    $content = array(
     "parser" => "html5",
     "out" => $output_format,
     "showsource" => $show_source,
     "asciiquotes" => "yes",
     "content" => $html_content
    );
            
    $headers = array(
     "Content-type: multipart/form-data; boundary=---------------------------" . strlen($html_content)
    );
            
    $errorhandling_obj = UtilitiesFramework::Factory( "filesystem" );
            
    $validation_results = $errorhandling_obj->GetFileContent( $validator_url, "POST", $content, $headers);
    if( $is_browser_application )
      $validation_results = str_replace( "style.css", $validator_url . "style.css", $validation_results);
            
    print_r($validation_results);
    
  10. String

    This class provides useful string manipulation functions. It provides functions that convert relative to absolute urls, check string if it is in the JSON format, convert string to camel case and concatenate strings. The String class is used in following way:

    /** The String class object is fetched */
    $string_obj = UtilitiesFramework::Factory( "string" );
    $main_url = "https://pear.php.net/manual/en/";
    $rel_url = "package.mail.mail.send.php";
    $abs_url = $string_obj->ConvertRelUrlToAbsUrl( $main_url, $rel_url);
    print_R($abs_url);
    

Extending the PHP Utilities Framework

It is easy to extend the PHP Utilities Framework with your own class or with a third party class.The only requirements are that your class name must match the class file name and the class must be in the namespace \Framework\Utilities.

Practical Use of the PHP Utilities Framework

The PHP Utilities Framework is well suited for use in PHP projects that need general purpose PHP classes. If you need to easily add error handling, HTTP authentication or a simple template system, then you will find the PHP Utilities Framework useful.

Conclusion

This article presented an example of a general purpose PHP utilities framework of classes. You can use this package yourself or build your own utilities framework package inspired by the approach of this package.

If you liked this article or you have questions about building a PHP utilities framework, post a comment here.

Read More


10 Advanced PHP Tips To Improve Your Programming

PHP programming has climbed rapidly since itshumble beginnings in 1995. Since then, PHP has become the most popular programming language for Web applications. Many popular websites are powered by PHP, and an overwhelming majority of scripts and Web projects are built with the popular language.

Because of PHP’s huge popularity, it has become almost impossible for Web developers not to have at least a working knowledge of PHP. This tutorial is aimed at people who are just past the beginning stages of learning PHP and are ready to roll up their sleeves and get their hands dirty with the language. Listed below are 10 excellent techniques that PHP developers should learn and use every time they program. These tips will speed up proficiency and make the code much more responsive, cleaner and more optimized for performance.

1. Use an SQL Injection Cheat Sheet

sql

A list of common SQL injections.

SQL injection is a nasty thing. An SQL injection is a security exploit that allows a hacker to dive into your database using a vulnerability in your code. While this article isn’t about MySQL, many PHP programs use MySQL databases with PHP, so knowing what to avoid is handy if you want to write secure code.

Furruh Mavituna has a very nifty SQL injection cheat sheet that has a section on vulnerabilities with PHP and MySQL. If you can avoid the practices the cheat sheet identifies, your code will be much less prone to scripting attacks.

2. Know the Difference Between Comparison Operators

php

PHP’s list of comparison operators.

Comparison operators are a huge part of PHP, and some programmers may not be as well-versed in their differences as they ought. In fact, an article at I/O reader states that many PHP developers can’t tell the differences right away between comparison operators. Tsk tsk.

These are extremely useful and most PHPers can’t tell the difference between == and ===. Essentially, == looks for equality, and by that PHP will generally try to coerce data into similar formats, eg: 1 == ‘1? (true), whereas === looks for identity: 1 === ‘1? (false). The usefulness of these operators should be immediately recognized for common functions such as strpos(). Since zero in PHP is analogous to FALSE it means that without this operator there would be no way to tell from the result of strpos() if something is at the beginning of a string or if strpos() failed to find anything. Obviously this has many applications elsewhere where returning zero is not equivalent to FALSE.

Just to be clear, == looks for equality, and === looks for identity. You can see a list of the comparison operators on the PHP.net website.

3. Shortcut the else Link

It should be noted that tips 3 and 4 both might make the code slightly less readable. The emphasis for these tips is on speed and performance. If you’d rather not sacrifice readability, then you might want to skip them.

Anything that can be done to make the code simpler and smaller is usually a good practice. One such tip is to take the middleman out ofelse statements, so to speak. Christian Montoya has an excellent example of conserving characters with shorter else statements.

Usual else statement:

if( this condition )
{
$x = 5;
}
else
{
$x = 10;
}

If the $x is going to be 10 by default, just start with 10. No need to bother typing the else at all.

$x = 10;
if( this condition )
{
$x = 5;
}

While it may not seem like a huge difference in the space saved in the code, if there are a lot of else statements in your programming, it will definitely add up.

4. Drop those Brackets

things

Dropping brackets saves space and time in your code.

Much like using shortcuts when writing else functions, you can also save some characters in the code by dropping the brackets in a single expression following a control structure. Evolt.org has a handy example showcasing a bracket-less structure.

if ($gollum == 'halfling') {
$height --;
}

This is the same as:

if ($gollum == 'halfling') $height --;

You can even use multiple instances:

if ($gollum == 'halfling') $height --;
else $height ++; 
 
if ($frodo != 'dead')
echo 'Gosh darnit, roll again Sauron';
 
foreach ($kill as $count)
echo 'Legolas strikes again, that makes' . $count . 'for me!';

5. Favour str_replace() over ereg_replace() and preg_replace()replace

Speed tests show that str_replace() is 61% faster.

In terms of efficiency, str_replace() is much more efficient than regular expressions at replacing strings. In fact, according to Making the Web, str_replace() is 61% more efficient than regular expressions likeereg_replace() and preg_replace().

If you’re using regular expressions, then ereg_replace() and preg_replace() will be much faster than str_replace().

6. Use Ternary Operators

Instead of using an if/else statement altogether, consider using aternary operator. PHP Value gives an excellent example of what a ternary operator looks like.

//PHP COde Example usage for: Ternary Operator

$todo = (empty($_POST[’todo’])) ?default: $_POST[’todo’]; 
 
// The above is identical to this if/else statement
if (empty($_POST[’todo’])) {
$action = ‘default’;
} else {
$action = $_POST[’todo’];
}
?>

The ternary operator frees up line space and makes your code less cluttered, making it easier to scan. Take care not to use more than one ternary operator in a single statement, as PHP doesn’t always know what to do in those situations.

7. Memcached

memcached

emcached is an excellent database caching system to use with PHP.

While there are tons of caching options out there, Memcached keeps topping the list as the most efficient for database caching. It’s not the easiest caching system to implement, but if you’re going to build a website in PHP that uses a database, Memcached can certainly speed it up. The caching structure for Memcached was first built for the PHP-based blogging website LiveJournal.

PHP.net has an excellent tutorial on installing and using memcachedwith your PHP projects.

8. Use a Framework

cakephp

CakePHP is one of the top PHP frameworks.

You may not be able to use a PHP framework for every project you create, but frameworks like CakePHP, Zend, Symfony and CodeIgnitercan greatly decrease the time spent developing a website. A Web framework is software that bundles with commonly needed functionality that can help speed up development. Frameworks help eliminate some of the overhead in developing Web applications and Web services.

If you can use a framework to take care of the repetitive tasks in programming a website, you’ll develop at a much faster rate. The less you have to code, the less you’ll have to debug and test.

9. Use the Suppression Operator Correctly Link

The error suppression operator (or, in the PHP manual, the “error control operator“) is the @ symbol. When placed in front of an expression in PHP, it simply tells any errors that were generated from that expression to now show up. This variable is quite handy if you’re not sure of a value and don’t want the script to throw out errors when run.

However, programmers often use the error suppression operator incorrectly. The @ operator is rather slow and can be costly if you need to write code with performance in mind.

Michel Fortin has some excellent examples on how to sidestep the @ operator with alternative methods. Here’s an example of how he used isset to replace the error suppression operator:

if (isset($albus))  $albert = $albus;
else                $albert = NULL;

is equivalent to:

$albert = @$albus;

But while this second form is good syntax, it runs about two times slower. A better solution is to assign the variable by reference, which will not trigger any notice, like this:

$albert =& $albus;

It’s important to note that these changes can have some accidental side effects and should be used only in performance-critical areas and places that aren’t going to be affected.

10. Use isset instead of strlen

isset

Switching isset for strlen makes calls about five times faster.

If you’re going to be checking the length of a string, use isset instead of strlen. By using isset, your calls will be about five times quicker. It should also be noted that by using isset, your call will still be valid if the variable doesn’t exist. The D-talk has an example of how to swap out isset for strlen:

A while ago I had a discussion about the optimal way to determine a string length in PHP. The obvious way is to use strlen().

However to check the length of a minimal requirement it’s actually not that optimal to use strlen. The following is actually much faster (roughly 5 times)

 

It’s a small change but, like all the tips we’ve covered today, adds up to quicker, leaner code.

 

Read More


E-learning-Five Ways to Motivate Self-Directed E-Learners

light_bulb_learning_office_woman_300px

The calendar reminder for a member of the sales team dings: “Work on e-Learning sales module 3” pops up on their phone. The employee sighs: they are thinking that they have so much else to do, so much else on their plate. They are thinking they can’t possibly take the time to work through another module right now.

What would motivate them in a positive direction?

Seeing is believing

If a person sees the value in what they are doing, if they see direct, real-world impacts, and how the training relates to their career goals, they will find the time to participate. For example, sales are motivated by many factors including the need to succeed, to meet quotas and, obviously, the incentive of monetary reward. By creating a direct link between sales success and training, a self-directed learner will have more stake in participating in the process.

How? Real case examples and analogies taken from the students themselves. An author who knows the audience and integrates their experiences can make the learning process more ‘real’ for the e-learner.

Relevance

Related to the above point, training that isn’t directly relevant or timely to the needs of the participants is not going to be effective. If the current conundrum of the learner is developing a system for meeting customer requirements, for example, an e-Learning module on customer follow-up is not relevant.

Using examples in the training that come from the learner’s own experience helps to promote relevance, particularly if the training is in response to an issue rather than something of a more general nature.

Being able to learn at one’s own pace and in one’s own space are major advantages with e-Learning. Add relevance and you have a veritable trifecta of usefulness with mobile learning technology.

Scheduling

Keeping a schedule, a routine, for learning has two main benefits:

  1. A person who creates a routine schedule for learning will find themselves looking forward to it, after a time. Athletes have known this for a long time: routine in fitness and training schedules really help to keep the motivation high; the ongoing training serves as a reminder of the different ways that success can be achieved.
  2. Clearing time on a schedule gives the e-learner permission to engage in the training instead of feeling that perhaps they should be engaged elsewhere. Much of what we do every day as individuals is based on justification and permission. If the e-learner feels that they have ‘permission’ to engage in the activity, they’re more likely to do it.

Keeping it Simple

Given the choice, most people would prefer to consume information in bite-sized pieces. The way we read and take in data has changed in the era of digital consumption and social media.

Shorter, achievable goals go a long way to maintaining motivation rather than long, seemingly never-ending ones. E-learners will be motivated by the sense of achievement that they feel when there is forward momentum and a sense of accomplishment in the learning tasks that they are engaging in.

Modules that can be completed on mobile technology, virtually ‘on the go’, will find a more willing audience.

Feedback

Nobody likes to work in a vacuum. We are, by nature, social creatures and e-Learning is, by nature, a solitary endeavor. Feedback is an important way that an e-Learning author can reach back to the e-learners and give them the motivation to move forward.

Whether the feedback comes in the form of results of quizzes within a learning module or as a message with notes as to how the learner might improve their knowledge in a specific area, or even as responses to questions that are posed by the e-learner, all forms of interactive feedback help create the ‘stake’ that the e-learner needs to remain motivated in their training efforts.

Conclusion

These principles, along with other small changes in workplace culture, can help launch your e-learners’ productivity and motivate them to excel. Start with small changes now, and you’ll see big results in the near future.

The days of sitting in a classroom to learn are over. E-Learning is here and it’s now.

Read More


How to use smartphones in the classroom: up-to-date statistics

smartphones-in-the-classroom

Mobile learning is becoming more and more popular, so our friends from Cell Phone City Advocacy prepared a post where they share statistics on the usage of mobile phones among kids and best practices for e-Learning with smartphones.

There was a time when parents argued whether a child should own a phone or not, or at what age owning a phone is appropriate. That time seems so distant now, when children and teens use cell phones just as frequently as adults do. One proof of the increasing number of teens and children with access to cell phones is the popular family cellphone plans, which include data bundles and features that allow parents to monitor their children’s usage and activities.

Studies on teen mobile phone use point to a trend of increasing ownership and increasing dependence on smartphones for online access. Some of these studies expound on the learning and educational opportunities that cell phones bring, while some discuss the perils of excessive and unregulated use.

What these studies prove is that as cell phones proliferate among the younger generation, there will be impacts on homes and schools that parents and adults must anticipate. Beyond coping and tolerating excessive phone use, it is vital that parents know how to guide their children in using cell phones and train them to become responsible mobile citizens.

Fast Facts and Stats on Cell Phone Ownership and Use

How many teens and children own cell phones?

More and more teens are staying connected via cell phones. On average, an American receives his/her first cell phone at the age of 12.1 years old, that is, just as he/she is starting middle school.

More than 17.3 million teens or 88% of Americans ages 13 to 17 have or have had access to a cell phone, more than six times the number of teens who do not own a cell phone of any type (12%).

73% of teens, equivalent to roughly 14.3 million, own a smartphone, while 15% (or a little over 2.9 million) own only a basic phone. A basic phone is a mobile phone that can send SMS, call, and perform other functions without requiring the installation of applications. This kind of phone cannot be used to access the Internet, and is sometimes interchanged with the term ‘dumb phone.’

How often do teens and children use their cell phones?

In the US, children as young as three years old already use cell phones. Around 27.1 million youths ages 3 to 18 (or 43%) use cell phones, and 65% of these young users (or 17.6 million) use their phones daily. The percentages of weekly and less often youth users are 28% and 6%, respectively.

For children ages zero to eight, the average daily time on a mobile device is around 15 minutes, the equivalent of the average time it takes to consume a meal.

Broken down according to gender, cell phone use is more prevalent among girls. 75% of girls are reported to use their mobile devices, compared to boys at 67%.

How do teens use their phones?

Most teens use their phones to go online, with 91% of teens (an estimated 18.8 million) called “mobile teens”, or those who go online from mobile devices. At least 94% of these mobile teens go online at least once a day.

These teens go online for social media, messaging, video chats, online discussion boards, or video games. Facebook rules social networking sites, with 41% of teens choosing Facebook as the social media site they use the most.

Teens still use their cell phones to communicate and send messages. 91% say that they use their cell phones for texting, either directly through their network or online.  An American teen age 13 to 17 sends an average of 30 texts per day, while calls normally last four minutes or less.

Messaging apps are also quite popular; 5.7 million teens have installed apps such as Kik or WhatsApp in their smartphones.

How many teens and children bring their phones to school?

A fair number of students bring phones to school. One in four students takes a smartphone to school every day; that’s 15.8 million K-12 students. For specific grade levels:

  1. Middle School—28% of students bring smartphones to school every day
  2. High School—51% of students take their smartphone to school daily

Teens’ Attitude towards Cell Phones

How do teens feel about cell phones and safety?

In 2010, a survey revealed that 93% of kids ages 12 to 17 said they felt safer “because they can always use their cell phone to get help.”

How do teens feel about cell phones and learning?

The majority of students think that communications with teachers can improve with the use of cell phones.  46% of all K-12 students view smartphones as the ideal device for communicating with their teachers, while 72% of the students think smartphones are the best devices to use when communicating with classmates.

How do teens view their cell phones as a means to interact and connect with other people?

Connecting with other people is one of a phone’s main uses. 45% of teens say that cell phones allow them to feel connected to their social world.

Texting is a major social activity, with roughly 17.3 million saying they text friends occasionally, while 10.8 million teens admit to texting friends daily.

Cell Phones and Parenting: Rules and Etiquette

The question for parents today is not, “Are my kids ready to own and use a cell phone?” Instead, more parents are asking, “How can I guide and regulate my child’s use of this device?”

Tracking and monitoring

Among smartphone users ages 8 – 17 years old, 43% say that their parents occasionally check their smartphone.

Using different tracking apps, parents monitor the following:

  1. Web activity—What websites or pages does my child visit?
  2. Social activity—Who are the people my child interacts with using their cell phones?
  3. Apps usage—What apps does my child use the most?
  4. Location via GPS—Where does my child go?

However, some kids are not aware that their parents are checking on them. In a survey among parents of K-12 students, 35% confessed to occasionally monitoring their child’s phone without their knowledge.

For ease of access, 20% of parents prohibit their children from password protecting their smartphones. More parents allow children to use passwords, if the children share the passwords with parents.

Bad Smartphone Habits by Teens and Tweens

Unregulated cell phone use can result in bad habits and incidents that can harm children and teenagers.

  1. Texting while driving— The risk of a car crash is four times higher when a driver is using a phone, regardless of being hands-free or not.
  2. Cheating in school—In a class of twenty, at least 7 students have cheated using their phones. 35% of teens admit to using a cell phone at least once to cheat at school. Common cheating methods include storing notes, leaking test questions, and looking up answers on the internet.
  3. Sexting—An estimated 3,477 cases of youth-produced sexual images were reported to US state agencies from 2008 to 2009. Right now, there are eight states protecting minors from sex offenders using ‘sexting’, while 14 states have proposed bills pending in legislation.
  4. Bullying—According to a High School Youth Risk Behavior survey, 13,501 students surveyed nationwide have experienced electronic bullying (e-mail, chat rooms, instant messaging, websites or texting).

Smartphone Talk

Besides tracking and monitoring, having productive conversations with children can help guide them towards proper cell phone use.

The following are important talking points with children and teenagers when it comes to cell phone use:

  1.    Use of Apps
  •   Download apps from legitimate sources ONLY
  •   Read the license agreement before installing
  •   Use parental controls to block invasive and inappropriate apps
  1.    Use of Social Media
  •   Accept friend requests ONLY from people they know
  •   Avoid giving private information such as home address and contact number
  •   Report suspicious accounts immediately
  1.    File-video sharing
  •   Take care in sending files or documents, as these can be easily copied and spread
  1.    Rules, limits and monitoring
  •   Get a phone that suits your child’s needs
  •   Set a curfew to prevent losing sleep due to phone overuse

‘Smartphone contract’

A Smartphone Contract between a parent and child is a contract containing a clear set of rules regarding cell phone use. Only 26% of youths have ‘contracts’ with their parents.

A Smartphone Contract usually contains rules about the following:

  •  Security
  •  Cyberbullying
  •  Texts and calls
  •  Internet access
  •  App installation
  •  Taking photos and videos
  •  Use of cellphones in public
  •  Use of cellphones during meal times
  •  Responsibility over cell phone damage and repairs

Cell Phones in Schools: Opportunities for Learning

The use of cellphones in schools is still a long way from being a mainstream learning method. About 3 in 4 (72%) parents of K-12 students say that their children’s school does not allow students to use family-owned mobile devices in the classroom. In contrast, only 16% of parents say their children’s schools permit the use of mobile phones during class.

In schools where mobile devices are provided and allowed for learning, there are rules to be followed. Almost 4 in 5 parents (78%) of K-12 students say that their children’s school implements a mobile device policy.

Progressive schools and educators take advantage of the ubiquity of cellphones in the daily lives of teens and children to make learning more interactive and productive. Cellphones, especially smartphones, are useful learning aids. With the array of functions and apps that a smartphone has, it proves to be a handy tool that helps students and educators do the following:

Top 10 Uses of Cell Phones inside Classrooms

  1. Research
  2. Snapping photos
  3. As an e-reader alternative
  4. Chat rooms
  5. Sharing through blogs
  6. Google SMS on the rescue
  7. Mobile diaries
  8. Tracking students’ behavior
  9. Calling a friend
  10. Scanning codes

Must Have Apps for Parental Guidance

The following are apps that aid parents in monitoring and guiding their children, especially teens, towards becoming responsible cell phone users.

Parental Control Board

Google Play Store Rating: 3.5/ 5

Downloads: 10,000

Parental Control Board allows parents to manage their child’s cell phone activities even from a distance. The app can set up a timetable for cell phone use, prohibit certain sites and content, and contains alert features for emergencies.

Qustodio

PC Mag Rating: 4.5/ 5

Downloads: 100,000

Qustodio filters websites, blocks pornography sites, and monitors calls, SMS, and web activities. It can also track your child’s location up to 30 days back.

Screen time

Google Play Store Rating: 4/ 5

Downloads: 100,000

Screen time uses keyword-based blocking and white/black lists to protect your children from unwanted content. It also tracks your child’s Facebook and Instagram activities.

Educate with E-Learning

PBS Learning Media reported that 74% of teachers believe technology motivates students to learn. Parents also agree, with 71% saying that mobile devices open up learning opportunities. Here are e-learning apps that parents and teachers can introduce to students:

Class Dojo

Google Play Store Rating: 4.5/  5

Apple Store Rating: 4.5/ 5

Downloads: 1 million

Turn class into an interactive learning session with Class Dojo. This app allows parents to check on their child’s progress in real time via a messaging app that connects parents to teachers.

Classmessenger

Google Play Store Rating: 4.1/ 5

Apple Store Rating: 4.5/ 5

Downloads: 10,000

A unique messaging app, Classmessenger will keep parents, teachers and students on the same page. This app allows users to send photos, attach documents, and conduct surveys.

Zite

Google Play Store Rating: 4.1/  5

Apple Store Rating: 5/ 5

Downloads: 500,000

Looking for an intelligent reference for students? Download Zite, a magazine app loaded with content on every topic under the sun. This app is optimized for all types of mobile devices to provide you with enjoyable reading time.

Read More


THE BEST FREE WORDPRESS PLUGINS FOR MOBILE WEBSITES

delphide technologies Pvt Ltd-WordPress-Plugins

If there’s anything that’s been well-established over the past few years, it’s the importance of catering to mobile users. They browse, they buy things, they’re just as important as any other user.

Making a website that works well for all screens large and small is, if not easy, certainly within the realm of possibility for those of us with the know-how. The problem is, not all WordPress users are front-end developers. Many are business owners, hobbyists, or even just regular bloggers — you know, blogging? That thing WordPress was designed for in the first place? Programmers built a tool that almost everyone could use, so people went and used it. Now those same people might need a little help making their site look good on as many screens as possible. Well, help has arrived, in the form of WordPress plugins.

That’s right people, this month’s WordPress plugins article has a real theme: We’re going to talk about how to get your site looking good on phones, tablets, and bigger stuff too, with as little code as possible.

SWITCH SOME THEMES

In an ideal situation, you’ll be able to choose a WordPress theme (or have one made) that works perfectly on all screens. Unfortunately, this is not always the case. A theme might be responsive, but not show your content on large screens the way you want it to. Or maybe the mobile navigation is wonky.

Whatever the problem, you might find another theme that gives you what you the first one is missing. In the world of free themes, the one-size fits all solution almost doesn’t exist.

And here’s where we come to theme switchers. These plugins will switch between themes of your choosing based on the device that the user has. They may not be a perfect solution, but anything, and I do mean anything, is better than ignoring your mobile users.

Any Mobile Theme Switcher

Any Mobile Theme Switcher is one of the simpler solutions out there. It’s free, with a Pro version, but the free features are more than enough for most purposes.

You can set individual theme choices for all of these device and software categories separately: iPhones/iPod Touches, iPads, Android phones, Android tablets, Blackberrys, Windows Mobile devices, Opera Mini, Palm OS, and “Other”.

You can also display a theme switcher to allow mobile users to swith to the “desktop theme” if they so desire.

001

Mobile Smart

Mobile Smart takes a less specific approach to switching themes. You can choose to enable your mobile-specific theme for phones, and optionally for tablets, and that’s it. It also comes with an optional manual switcher.

What makes it different is a feature called transcoding. Basically, if your WordPress setup is done right, Mobile Smart can automatically resize your images for faster delivery to mobile devices. This feature is currently in development.

If you like this plugin enough that you’d actually spend money on it, the pro version offers the option to deliver mobile-specific page content, mobile-specific menus, and more.

OR MAKE AN APP, SORT OF

This option is a bit like switching themes. The design that your mobile users will see is very different from that shown on desktop or laptop screens, but this time, it’s more like an app.

Instead of just switching to another theme, a plugin like the WordPress Mobile Pack will take all of your content and display it as a web app. Your new mobile app can be customized with alternate color schemes, fonts, your own logo, and more.

Sadly, if you want to use a theme other than the default, you’ll have to get (you guessed it), the pro/premium version. But if the default app theme works for you, then the WordPress Mobile Pack is a great way to make sure that your mobile users are taken care of.

MAKE YOUR CONTENT MOBILE TOO

Obviously, your content has to adapt to whatever platform it’s on. If you’re just using text and images, your theme can probably handle itself just fine. But, if you want to introduce more complex interface elements elements, or just get more control over how your content looks across all platforms, we’ve got plugins for that too:

Responsive images

You can save yourself and your users some bandwidth by only serving pictures at the size they actually need. This means that using your website literally costs mobile users with limited data plans less to use, and they can use it faster.

For this purpose, you could use Post Script Responsive Images. It automatically creates multiple versions of all images on your site: in your theme, in your content, and your featured images too, including all existing images on your site.

It serves them to the browser with the srcset attribute, and the browser picks which image to download. This method is at least partially supported by the big mobile browsers. It may not benefit everyone yet, so think of this as future-proofing your site.

004

Buttons, columns, tabs, accordions, and more

Sometimes you just want to add more than plain text to your site. Sometimes, you’d like the choice to organize your content a little better. Sometimes you’ll want to embed a video. Well, you can, and it’ll work on all screen sizes too.

Easy Responsive Shortcodes is a collection of layout options and user interface elements to help you add some extra style/organization to your posts and pages. What’s more, you don’t have to worry about whether they’ll work on small screens, because they do.

Here’s the full list of components:

  • Accordions
  • Alerts
  • Boxes
  • Buttons
  • Calls-to-action
  • Clear floats
  • Columns
  • Highlights
  • Icons (via Font Awesome)
  • Tabs
  • Toggles
wordpres-delphide technologies Pvt Ltd

As for embedding video in your posts, check out FV WordPress Flowplayer. It’s an HTML5-based video player with support for embedding videos from Youtube, Vimeo, or raw URLs. It also comes with a Flash-based fallback for older browsers.

It’s also completely free, unless you want to put your own logo on it, and remove the Flowplayer branding. That’ll cost you a pro upgrade, but all of the actual functionality is there for your use.

006

FIX THE NAVIGATION

If you like your theme in general, but the theme’s built-in navigation isn’t doing it for you, you might look at these alternatives. After all, your users can’t buy what you’re selling if they can’t find it.

Mobile Navigation will create a full-screen navigation menu that only shows up on small screens. You can customize the breakpoint that makes it show, the colors, the fonts, and more. It’s mostly install-n-go.

007

WP Responsive Menu, does much the same thing, only it creates a menu that slides in from the side. Again, you can customize the look and feel of the menu to your heart’s content.

008

SEE THE DIFFERENCES SIDE BY SIDE

Want to see what your responsive theme will look like while you work on it? Just install MobilePreviewer. When you browse your site (logged in) you’ll be able to launch a small preview of it at a variety of mobile sizes in the lower right-hand corner of your browser.

This won’t work with the theme switchers listed above, but in any other case, it works just fine.

009

FIN

So there you have it. There’s a lot you can do to make your WordPress website look good on all devices, even without any coding knowledge. Go forth, and make the mobile Web!

Read More


Question: What do pre-packed gourmet pasta sauces and mobile learning have in common? Answer: Both are fast and easy to access and provide a consistent experience from anywhere

why-mobile-learning-will-transform-your-workplace-1024x527

5 Reasons Mobile Learning Will Transform Your Workplace 

Mobile learning is shaping up to be one of those innovations set to make life easier in today’s fast-paced business environment. Most of us are busy people, constantly on the move. And what busy people love is convenience, be it gourmet pasta at home or technology that makes life easier at work.

Here are some of the reasons why PulseLearning believe that mobile learning will change your workplace.

  1. Increases employee motivation toward training.
    It’s true that many employees don’t like training. This is partially because most training requires an employee to take time out of an already busy workday to fit it in. Because mobile learning allows employees to complete training when and where they like, it’s likely that their willingness and enthusiasm toward learning will increase.
  2. Addresses all learning styles.
    Mobile learning makes it much easier to be inclusive of all learning styles. Mobile devices make it possible to develop a course that includes reading, learning through video, listening to podcasts, researching on the internet, and collaborating socially. This is also a factor in increasing employee engagement and motivation toward corporate training, and we know that engaged employees are much more likely to be productive.
  3. Utilizes downtime… anywhere.
    The accessibility of mobile learning is arguably its biggest advantage. It allows you to fill pockets of dead time your employees have with productivity. With BYOD, waiting for a long print job, commuting home on the train, or standing in line all become opportunities to fit in a learning bite. In fact, many of us retain information better when it is presented in small chunks, which makes mobile learning an effective strategy for imparting information.
  4. Provides social collaboration opportunities.
    Mobile learning might mean your employees are completing training remotely but they are only a click away from sharing and collaborating with others. When your employees access their training from mobile devices, such as smartphones or iPads, they have their social networking tools at hand. This encourages collaboration with others, and when people get talking about learning, it makes it more memorable.
  5. Aligns your training with technology trends.
    It is predicted that by 2020, the mobile device will be our primary tool for connecting to the internet. It makes good business sense to start preparing for the technology shift away from desktop computing by developing learning that can be used across multiple platforms. HTML5 technology allows one eLearning build to be used on multiple devices, which could save your organization time and money down the track in converting traditional builds.
Read More


Nano-Learning Is Fast And Simple. Here Are 6 Ideas To Help You Create Nano-Learning In Under 15 Minutes

:You are likely under pressure to deliver more learning in less time. Nano-learning is gaining popularity because it lets you create smaller chunks of content.

But, what is nano-learning?

Generally speaking, nano-learning is:

  • Five to 15 minutes long.
  • Highly targeted; covers a single objective.
  • Self-contained; offers small nuggets of information.
  • Responsive; can be viewed on a range of devices.
  • Easy to find.
  • Multimedia; include text, video, sound, and images.

To author a nano-learning object in 15 minutes, look for an eLearning author tool that lets you do the following:

  • Create templates for interactions that you can reuse.
  • Build a “theme” that you can personalize or brand.
  • Is cloud-based so that more than one member of the team can work on it at the same time.
  • Use a pre-built menu so you don’t have to build your own.
  • Gain access to a database of media files that are ready to use (images, graphics, and icons).
  • Publish to an LMS (Learning Management System), LRS (Learning Record Store), and browsers in seconds.
  • Create content that can be viewed immediately on a range of devices.

    1. Use pre-built templates.mockup_4

Pre-built templates give you the confidence that they are tested, bug-free, and ready for you to author your content. Choose a tool that ships with templates. At the very minimum, you will want presentation and question interactions, and even better, some video and sound files.

2. Create reusable themes that have your company branding already built in.

reusable-themes

Ideally, your eLearning authoring tool will be easy to set up with your company’s branding, look, and feel. Once you’ve got this built, you can reuse the theme over and over again. This means you don’t have to develop the basic structure each time you want to create a new nano-learning object.

3. Use cloud-based authoring tools that are accessible anywhere, anytime.

elucidat-simple1

When you work in the cloud, you don’t want to waste time packaging up your project files and sending them to other authors to work on. Cloud tools with collaboration functionality can empower multiple members of your team to work on the same project at the same time. Picture yourself uploading or writing the copy while a graphic artist works on the visuals. Tools –like Elucidat– will automatically synchronize updates to ensure all stakeholders are working on the most recent project update.

4. Leverage a database of rich media (photos, graphics, artwork, icons, etc).

elearningart-elucidat

Choose a tool that includes free, high-quality media assets. For example, Elucidat’s rich media is specifically created with eLearning in mind. This will save you heaps of time because you won’t have to source your own. If you want more personalized imagery, choose a tool that lets you upload your own images and assets so you can keep them organized and accessible within your projects.

5. Use a tool that enables you to quickly publish, deploy and maintain eLearning.

To get your nano-learning out to your learners fast, you need a system that lets you publish and deploy it in minutes. Some tools –like Elucidat– let you push content straight into a Learning Management System that automatically updates the module in seconds.

6. Use a tool that automatically scales to respond to different mobile and tablet screen sizes.

 

Elucidat-responsive-slider

You can’t afford to waste time creating learning for devices of different sizes. Choose a tool that automatically scales your content to fit devices of all sizes. For example, Elucidat’s responsive slider automatically scales content so you can see exactly how your learning looks on mobile and tablet devices.

Look for a tool that lets you build once, but deploy to multiple devices.

Final Thoughts

Nano-learning makes it easier for you to handle a greater volume of learning content and get it out to learners fast.

New technologies make nano-learning more accessible to learning managers at a wide variety of companies. When you are choosing an eLearning authoring tool, make sure it has these features:

  • Streamlines learning publishing and deploys quickly.
  • Simple to use so non-technical people with no previous experience can author.
  • Automatically scales content so learners can view it on devices of all sizes.

Stay on top of the latest eLearning ideas, trends, and technologies with delphide technologies Pvt Ltd..

Read More


 view our websites http://www.delphide.com  1.Brian Goetz: “Stewardship: the Sobering Parts”
The first blog post is actually not a blog post but a recording of a very interesting talk by Brian Goetz on Oracle’s stewardship of Java. On the jOOQ blog, we’ve been slightly critical about 1-2 features of the Java language in the past, e.g. when comparing it to Scala, or Ceylon.

Brian makes good points about why it would not be a good idea for Java to become just as “modern” as quickly as other languages. A must-watch for every Java developer

  1. Aleksey Shipil?v: The Black Magic of (Java) Method Dispatch

In recent years, the JVM has seen quite a few improvements, including invokedynamic that arrived in Java 7 as a prerequisite for Java 8 lambdas, as well as a great tool for other, more dynamic languages built on top of the JVM, such as Nashorn.

invokedynamic is only a small, “high level” puzzle piece in the advanced trickery performed by the JVM. What really happens under the hood when you call methods? How are they resolved, optimised by the JIT? Aleksey’s article sub-title reveals what the article is really about:

“Everything you wanted to know about Black Deviously Surreptitious Magic in low-level performance engineering”

Definitely not a simple read, but a great post to learn about the power of the JVM.

Read Aleksey’s “The Black Magic of (Java) Method Dispatch“

  1. Oliver White: Java Tools and Technologies Landscape for 2014

We’re already in 2015, but this report by Oliver White (at the time head of ZeroTurnaround’s RebelLabs) had been exceptionally well executed and touches pretty much everything related to the Java ecosystem.

Read Oliver’s “Java Tools and Technologies Landscape for 2014“

  1. Peter Lawrey: Java Lambdas and Low Latency

When Aleksey has introduced us to some performance semantics in the JVM, Peter takes this one step further, talking about low latency in Java 8. We could have picked many other useful little blog posts from Peter’s blog, which is all about low-latency, high performance computing on the JVM, sometimes even doing advanced off-heap trickery.

Read Peter’s “Java Lambdas and Low Latency“

  1. Nicolai Parlog: Everything You Need To Know About Default Methods

Nicolai is a newcomer in the Java blogosphere, and a very promising one, too. His well-researched articles go in-depth about some interesting facts related to Java 8, digging out old e-mails from the expert group’s mailing list, explaining the decisions they made to conclude with what we call Java 8 today.

Read Nicolai’s “Everything You Need To Know About Default Methods“

  1. Lukas Eder: 10 Things You Didn’t Know About Java

This list wouldn’t be complete without listing another list that we wrote ourselves on the jOOQ blog. Java is an old beast with 20 years of history this year in 2015. This old beast has a lot of secrets and caveats that many people have forgotten or never thought about. We’ve uncovered them for you:

Read Lukas’s “10 Things You Didn’t Know About Java“

  1. Edwin Dalorzo: Why There Is Interface Pollution in Java 8

Edwin has been responding to our own blog posts a couple of times in the past with very well researched and thoroughly thought through articles, in particular about Java 8 related features, e.g. comparing Java 8 Streams with LINQ (something that we’ve done ourselves, as well).

This particular article explains why there are so many different and differently named functional interfaces in Java 8.

Read Edwin’s “Why There Is Interface Pollution in Java 8“

  1. Vlad Mihalcea: How Does PESSIMISTIC_FORCE_INCREMENT Lock Mode Work

When Java talks to databases, many people default to using Hibernate for convenience (see also 3. Oliver White: Java Tools and Technologies Landscape for 2014). Hibernate’s main vision, however, is not to add convenience – you can get that in many other ways as well. Hibernate’s main vision is to provide powerful means of navigating and persisting an object graph representation of your RDBMS’s data model, including various ways of locking.

Vlad is an extremely proficient Hibernate user, who has a whole blog series on how Hibernate works going. We’ve picked a recent, well-researched article about locking, but we strongly suggest you read the other articles as well:

Read Vlad’s “How Does PESSIMISTIC_FORCE_INCREMENT Lock Mode Work“

  1. Petri Kainulainen: Writing Clean Tests

This isn’t a purely Java-related blog post, although it is written from the perspective of a Java developer. Modern development involves testing – automatic testing – and lots of it. Petri has written an interesting blog series about writing clean tests in Java – you shouldn’t miss his articles!

Read Petri’s “Writing Clean Tests“

  1. Eugen Paraschiv: Java 8 Resources Collection

If you don’t already have at least 9 open tabs with interesting stuff to read after this list, get ready for a browser tab explosion! Eugen Paraschiv who maintains baeldung.com has been collecting all sorts of very interesting resources related to Java 8 in a single link collection. You should definitely bookmark this collection and check back frequently for interesting changes:

Read Eugen’s “Java 8 Resources Collection“

 

Read More