RSS

Author Archives: Javed Arif Khan

About Javed Arif Khan

Hi my name is Javed Khan, I'm currently studying for my Doctorate in Authoring in Adaptive Systems at the University of Warwick.

List of HTTP status codes – HTTP Error Code

1xx: Information

Message: Description:
100 Continue The server has received the request headers, and the client should proceed to send the request body
101 Switching Protocols The requester has asked the server to switch protocols
103 Checkpoint Used in the resumable requests proposal to resume aborted PUT or POST requests

2xx: Successful

Message: Description:
200 OK The request is OK (this is the standard response for successful HTTP requests)
201 Created The request has been fulfilled, and a new resource is created
202 Accepted The request has been accepted for processing, but the processing has not been completed
203 Non-Authoritative Information The request has been successfully processed, but is returning information that may be from another source
204 No Content The request has been successfully processed, but is not returning any content
205 Reset Content The request has been successfully processed, but is not returning any content, and requires that the requester reset the document view
206 Partial Content The server is delivering only part of the resource due to a range header sent by the client

3xx: Redirection

Message: Description:
300 Multiple Choices A link list. The user can select a link and go to that location. Maximum five addresses
301 Moved Permanently The requested page has moved to a new URL
302 Found The requested page has moved temporarily to a new URL
303 See Other The requested page can be found under a different URL
304 Not Modified Indicates the requested page has not been modified since last requested
306 Switch Proxy No longer used
307 Temporary Redirect The requested page has moved temporarily to a new URL
308 Resume Incomplete Used in the resumable requests proposal to resume aborted PUT or POST requests

4xx: Client Error

Message: Description:
400 Bad Request The request cannot be fulfilled due to bad syntax
401 Unauthorized The request was a legal request, but the server is refusing to respond to it. For use when authentication is possible but has failed or not yet been provided
402 Payment Required Reserved for future use
403 Forbidden The request was a legal request, but the server is refusing to respond to it
404 Not Found The requested page could not be found but may be available again in the future
405 Method Not Allowed A request was made of a page using a request method not supported by that page
406 Not Acceptable The server can only generate a response that is not accepted by the client
407 Proxy Authentication Required The client must first authenticate itself with the proxy
408 Request Timeout The server timed out waiting for the request
409 Conflict The request could not be completed because of a conflict in the request
410 Gone The requested page is no longer available
411 Length Required The “Content-Length” is not defined. The server will not accept the request without it
412 Precondition Failed The precondition given in the request evaluated to false by the server
413 Request Entity Too Large The server will not accept the request, because the request entity is too large
414 Request-URI Too Long The server will not accept the request, because the URL is too long. Occurs when you convert a POST request to a GET request with a long query information
415 Unsupported Media Type The server will not accept the request, because the media type is not supported
416 Requested Range Not Satisfiable The client has asked for a portion of the file, but the server cannot supply that portion
417 Expectation Failed The server cannot meet the requirements of the Expect request-header field

5xx: Server Error

Message: Description:
500 Internal Server Error A generic error message, given when no more specific message is suitable
501 Not Implemented The server either does not recognize the request method, or it lacks the ability to fulfill the request
502 Bad Gateway The server was acting as a gateway or proxy and received an invalid response from the upstream server
503 Service Unavailable The server is currently unavailable (overloaded or down)
504 Gateway Timeout The server was acting as a gateway or proxy and did not receive a timely response from the upstream server
505 HTTP Version Not Supported The server does not support the HTTP protocol version used in the request
511 Network Authentication Required The client needs to authenticate to gain network access
 
Comments Off on List of HTTP status codes – HTTP Error Code

Posted by on May 30, 2018 in HTML5, Programming, Website Administration

 

Validating Form Input in JavaScript

Validating Form Input

When you submit a form to a CGI program that resides on the server, it is usually programmed to do its own check for errors. If it finds any it sends the page back to the reader who then has to re-enter some data, before submitting again. A JavaScript check is useful because it stops the form from being submitted if there is a problem, saving lots of time for your readers.

The CGI script is still more reliable, as it always works regardless of whether JavaScript is enabled on the client-side or not; but having this extra safety barrier is a nice thing to have in place. It makes your page much more user-friendly, and takes out the frustration of having to fill out the same form repeatedly. It’s also very precise, as you can point out the exact field where there’s a problem.

Implementing the Check

We’re going to be checking the form using a function, which will be activated by the form’s submit event — therefore, using the onSubmit handler. Add an attribute like this to the form you wish to validate:

<form action="script.cgi" onSubmit="return checkform()">

Where checkForm is the name of the function we’re about to create. If you’ve learnt your functions properly, you should be able to guess that our function will return a Boolean value — either true or false. Submit‘s default action is to submit the data, but if you give onSubmit a value of return false, it will not be submitted; just like how we can stop a link from being followed. Of course, if there are no problems, the function call will be replaced by true and the data will be submitted. Simple…

It’s impossible for me to give you a definitive validation script, as every form is different, with a different structure and different values to check for. That said, it is possible to give you the basic layout of a script, which you can then customise to the needs of your form.

A general script looks like this:

function checkform()
{
	if (value of first field is or isn't something)
	{
		// something is wrong
		alert('There is a problem with the first field');
		return false;
	}
	else if (value of next field is or isn't something)
	{
		// something else is wrong
		alert('There is a problem with...');
		return false;
	}
	// If the script gets this far through all of your fields
	// without problems, it's ok and you can submit the form

	return true;
}

If your form is quite complex your script will grow proportionally longer too, but the fundamentals will stay the same in every instance — you go through each field with if and else statements, checking the inputted values to make sure they’re not blank. As each field passes the test your script moves down to the next.

If there is a problem with a field, the script will return false at that point and stop working, never reaching the final return true command unless there are no problems at all. You should of course tailor the error messages to point out which field has the problem, and maybe offering solutions to common mistakes.

Accessing Values

Having read the Objects and Properties page, you should now know how to find out the values of form elements through the DOM. We’re going to be using the name notation instead of using numbered indexes to access the elements, so that you are free to move around the fields on your page without having to rewrite parts of your script every time. A sample, and simple, form may look like this:

<form name="feedback" action="script.cgi" method="post" onSubmit="return checkform()">
<input type="text" name="name">
<input type="text" name="email">
<textarea name="comments"></textarea>
</form>

Validating this form would be considerably simpler than one containing radio buttons or select boxes, but any form element can be accessed. Below are the ways to get the value from all types of form elements. In all cases, the form is called feedback and the element is called field.

Text Boxes, <textarea>s and hiddens

These are the easiest elements to access. The code is simply

document.feedback.field.value

You’ll usually be checking if this value is empty, i.e.

if (document.feedback.field.value == '') {
	return false;
}

That’s checking the value’s equality with a null String (two single quotes with nothing between them). When you are asking a reader for their email address, you can use a simple » address validation function to make sure the address has a valid structure.

Select Boxes

Select boxes are a little trickier. Each option in a drop-down box is indexed in the array options[], starting as always with 0. You then get the value of the element at this index. It’s like this:

document.feedback.field.options
[document.feedback.field.selectedIndex].value

You can also change the selected index through JavaScript. To set it to the first option, execute this:

document.feedback.field.selectedIndex = 0;

Check Boxes

Checkboxes behave differently to other elements — their value is always on. Instead, you have to check if their Boolean checked value is true or, in this case, false.

if (!document.feedback.field.checked) {
	// box is not checked
	return false;
}

Naturally, to check a box, do this

document.feedback.field.checked = true;

Radio Buttons

Annoyingly, there is no simple way to check which radio button out of a group is selected — you have to check through each element, linked with Boolean AND operators . Usually you’ll just want to check if none of them have been selected, as in this example:

if (!document.feedback.field[0].checked &&
!document.feedback.field[1].checked &&
!document.feedback.field[2].checked) {
	// no radio button is selected
	return false;
}

You can check a radio button in the same way as a checkbox.

 

 

 

Source: http://www.yourhtmlsource.com/javascript/formvalidation.html

 

 
Comments Off on Validating Form Input in JavaScript

Posted by on May 30, 2018 in Javascript

 

JS Charting

jsFiddle for Drill-down graph
http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/drilldown/async/

Parameters based Graph generator: https://my.infocaptor.com/free_data_visualization.php
Dashboard Graph: http://bl.ocks.org/NPashaP/96447623ef4d342ee09b

Free js charting component:  http://code.highcharts.com/

asp.net drill-down
http://www.intertech.com/Blog/asp-net-chart-drill-down/
http://www.flex888.com/894/flex-drill-down-charts.html

d3.js. See the gallery:

https://github.com/mbostock/d3/wiki/Gallery

Drill down demos or examples:
•http://mbostock.github.com/d3/talk/20111116/bar-hierarchy.html
•http://mbostock.github.com/d3/talk/20111018/treemap.html
•http://mbostock.github.com/d3/talk/20111018/partition.html
•http://bost.ocks.org/mike/miserables/
•http://www.jasondavies.com/coffee-wheel/
•http://thepowerrank.com/visual/NCAA_Tournament_Predictions
•http://square.github.com/crossfilter/
•http://windhistory.com/map.html#4.00/36.00/-95.00 / http://windhistory.com/station.html?KMKT
•http://trends.truliablog.com/vis/tru247/
•http://trends.truliablog.com/vis/metro-movers/
•http://marcinignac.com/projects/open-budget/viz/index.html
•http://bl.ocks.org/3630001
•http://bl.ocks.org/1346395
•http://bl.ocks.org/1314483
•http://slodge.com/teach/
•http://tympanus.net/Tutorials/MultipleAreaChartsD3/
•http://bl.ocks.org/3287802

 

 
Comments Off on JS Charting

Posted by on May 30, 2018 in Charting

 

Sending email in ASP.NET with email validation

//MailMessage tipsMail = new MailMessage();
//tipsMail.To.Add(email);
//tipsMail.From = new MailAddress(System.Configuration.ConfigurationManager.AppSettings[“fromAddress”].ToString());
//tipsMail.From = new MailAddress(“PMTips@mosaiquegroup.com”);
//tipsMail.Subject = “Project Management Tips from Mosaique”;
//tipsMail.Body = tipsMessage;
//tipsMail.IsBodyHtml = true;
// tipsMail.To.Add(System.Configuration.ConfigurationManager.AppSettings[“adminEmail”].ToString());
// tipsMail.To.Add(System.Configuration.ConfigurationManager.AppSettings[“adminEmail2”].ToString());
//tipsMail.To.Add(System.Configuration.ConfigurationManager.AppSettings[“adminEmail3”].ToString());
// tipsMail.To.Add(“javedarifkhan1@gmail.com”);

// SmtpClient smtp2 = new SmtpClient(“localhost”);
//// NetworkCredential credential2 = new NetworkCredential(System.Configuration.ConfigurationManager.AppSettings[“smtpUser”], System.Configuration.ConfigurationManager.AppSettings[“smtpPass”]);
// NetworkCredential credential2 = new NetworkCredential(“smtpUser”, “XXXXX”);
// smtp2.Credentials = credential2;
// smtp2.EnableSsl = true;
// smtp2.Send(tipsMail);

//MailMessage msg = new MailMessage();
//System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient();
//msg.From = new MailAddress(“smtpUser@domain.com”);
//msg.To.Add(email);
//msg.IsBodyHtml = true;
//msg.Body = tipsMessage;
//client.Host = “localhost”;
//System.Net.NetworkCredential basicauthenticationinfo = new System.Net.NetworkCredential(“Username”, “password”);
////client.Port = int.Parse(“587”);
//client.EnableSsl = true;
//client.UseDefaultCredentials = false;
//client.Credentials = basicauthenticationinfo;
//client.DeliveryMethod = SmtpDeliveryMethod.Network;
//client.Send(msg);

//MailMessage tipsMail = new MailMessage();
//tipsMail.From = “user@domain.com”;
//tipsMail.To.Add(email);
//System.Net.Mail.SmtpClient mail = new System.Net.Mail.SmtpClient();
//tipsMail.Body = tipsMessage;
//tipsMail.To.Add(“javedarifkhan1@gmail.com”);
//tipsMail.IsBodyHtml = true;

//SmtpClient smtp = new SmtpClient(“localhost”);
// smtp.Credentials = credential;
//smtp.EnableSsl = true;
//smtp.Send(tipsMail);

//////////// USING GOOGLE SMTP SERVER //////////////////
//// smtp.Host = “smtp.gmail.com”; // smtp.UseDefaultCredentials = true;
//SmtpClient smtp = new SmtpClient();
//smtp.Host = System.Configuration.ConfigurationManager.AppSettings[“smtpHost”].ToString();
//smtp.EnableSsl = true;
//NetworkCredential NetworkCred = new NetworkCredential(System.Configuration.ConfigurationManager.AppSettings[“smtpGUser”].ToString(), System.Configuration.ConfigurationManager.AppSettings[“smtpGPass”].ToString());
//smtp.Credentials = NetworkCred;
//smtp.Port = int.Parse(System.Configuration.ConfigurationManager.AppSettings[“smtpGPort”].ToString());
//smtp.Send(tipsMail);

 
Comments Off on Sending email in ASP.NET with email validation

Posted by on May 30, 2018 in Uncategorized

 

The psychology of colour in marketing and branding

The psychology of colour as it relates to persuasion is one of the most interesting – and most controversial – aspects of marketing.


Yellow is psychologically the happiest colour in the spectrum

Ever wondered what attracts you to an advert/poster? The first thing that will draw your attention will be the colour.

According to PrintUK.com, “colour has an enormous effect on our attitudes and emotions because when our eyes take in colour they communicate with a part of the brain called the hypothalamus, which sends a message to the pituitary gland and sets off an emotion.”

It claimed that colour has a powerful psychological influence on the human brain, mentally, physically, consciously and subconsciously. These responses to colour can be used to the advantage of marketeers to illicit the desired response to their marketing campaigns.

“The affects of colour on our well-being are well documented,” it said. “Red and Green, ‘society and nature’ have been wired so deeply into our subconscious that no two other colours have such opposing meanings. The most obvious example of this is traffic lights – this combination is used worldwide. Sometimes the connection is not so obvious, but red is often used to reject, disagree, remove, close and cancel. On the other hand, green is a positive colour associated with yes, accept, go, add and agree. Words often just clarify the meaning.”

Read more about psychology in business:

Colours are also considered to have a temperature. Warm colours often consist of pale green through yellows to deep red, and cool colours from dark purple, blues to dark green.

“Understanding how the mind works is an important integral part of marketing,” maintained PrintUK.com. “Consequently, it’s extremely important that you consider the colour palette of your brand before printing your corporate brand material whether that’s internal newsletters or company letterheads.”

Top colour tips

1) Investigate your industry’s colours

When you look at the business cards and websites of different companies you’ll begin to notice that businesses which operate within the same field of industry utilise similar colour schemes. This is no coincidence; business leaders opt for particular colours because they invoke certain feelings for customers.

For instance, blue is the predominant colour used by social networking sites, such as Twitter, Facebook and LinkedIn, due to its subconscious associations with logic, calm and communication. As Karen Haller, a business colour and branding expert stated, “blue relates to the mind, so consumers associate it with logic and communication. It’s also serene, like the ocean, and calming to look at”.

Consequently, before designing your printed material you should investigate the predominant colour schemes associated with your industry and incorporate these tones within your design.

2) Use primary colours for calls to action

A study by Kissmetrics revealed that the highest converting colours for calls to action are bright primary and secondary colours such as red, yellow, orange and green. Due to the fact that these vibrant colours attract attention, it’s useful to incorporate them within your business card design and website calls to action in order to capture the interest of your key consumers – and to encourage them to investigate your brand in greater depth.

3) Be consistent

From your business card printing to your company website, it’s important to promote cohesion and unity with all aspects of your brand’s overall design. For example, when you’re designing your business cards, you should aim to incorporate colour schemes and design traits that currently exist within your company website’s graphic design.

By doing so, you can begin to establish your brand’s reputation and its subconscious colour associations within the minds of your key consumers. Although this may seem like a minor aspect of your direct mail and digital branding strategies, over time it could earn you the loyalty, recommendations and return custom of a broad consumer base.

 
Comments Off on The psychology of colour in marketing and branding

Posted by on September 4, 2015 in Artwork Design, Branding

 

An Introduction To Full-Stack JavaScript

Nowadays, with any Web app you build, you have dozens of architectural decisions to make. And you want to make the right ones: You want to use technologies that allow for rapid development, constant iteration, maximal efficiency, speed, robustness and more. You want to be lean and you want to be agile. You want to use technologies that will help you succeed in the short and long term. And those technologies are not always easy to pick out.

In my experience, full-stack JavaScript hits all the marks. You’ve probably seen it around; perhaps you’ve considered its usefulness and even debated it with friends. But have you tried it yourself? In this post, I’ll give you an overview of why full-stack JavaScript might be right for you and how it works its magic.

To give you a quick preview:

toptal-blog-500-opt
(Large view)

I’ll introduce these components piece by piece. But first, a short note on how we got to where we are today.

Why I Use JavaScript

I’ve been a Web developer since 1998. Back then, we used Perl for most of our server-side development; but even since then, we’ve had JavaScript on the client side. Web server technologies have changed immensely since then: We went through wave after wave of languages and technologies, such as PHP, ASP, JSP, .NET, Ruby, Python, just to name a few. Developers began to realize that using two different languages for the client and server environments complicates things.

In the early era of PHP and ASP, when template engines were just an idea, developers embedded application code in their HTML. Seeing embedded scripts like this was not uncommon:

<script>
    <?php
        if ($login == true){
    ?>
    alert("Welcome");
    <?php
        }
    ?>
</script>

Or, even worse:

<script>
    var users_deleted = [];
    <?php
        $arr_ids = array(1,2,3,4);
        foreach($arr_ids as $value){
    ?>
    users_deleted.push("<php>");
    <?php
        }
    ?>
</script>

For starters, there were the typical errors and confusing statements between languages, such as for and foreach. Furthermore, writing code like this on the server and on the client to handle the same data structure is uncomfortable even today (unless, of course, you have a development team with engineers dedicated to the front end and engineers for the back end — but even if they can share information, they wouldn’t be able to collaborate on each other’s code):

<?php
    $arr = array("apples", "bananas", "oranges", "strawberries"),
    $obj = array();
    $i = 10;
    foreach($arr as $fruit){
        $obj[$fruit] = $i;
        $i += 10;
    }
    echo json_encode(obj);
?>
<script>
    $.ajax({
        url:"/json.php",
        success: function(data){
            var x;
            for(x in data){
                alert("fruit:" + x + " points:" + data[x]);
            }
        }
    });
</script>

The initial attempts to unify under a single language were to create client components on the server and compile them to JavaScript. This didn’t work as expected, and most of those projects failed (for example, ASP MVC replacing ASP.NET Web forms, and GWT arguably being replaced in the near future by Polymer). But the idea was great, in essence: a single language on the client and the server, enabling us to reuse components and resources (and this is the keyword: resources).

The answer was simple: Put JavaScript on the server.

JavaScript was actually born server-side in Netscape Enterprise Server, but the language simply wasn’t ready at the time. After years of trial and error, Node.js finally emerged, which not only put JavaScript on the server, but also promoted the idea of non-blocking programming, bringing it from the world of nginx, thanks to the Node creator’s nginx background, and (wisely) keeping it simple, thanks to JavaScript’s event-loop nature.

(In a sentence, non-blocking programming aims to put time-consuming tasks off to the side, usually by specifying what should be done when these tasks are completed, and allowing the processor to handle other requests in the meantime.)

Node.js changed the way we handle I/O access forever. As Web developers, we were used to the following lines when accessing databases (I/O):

var resultset = db.query("SELECT * FROM 'table'");
drawTable(resultset);

This line essentially blocks your code, because your program stops running until your database driver has a resultset to return. In the meantime, your platform’s infrastructure provides the means for concurrency, usually using threads and forks.

With Node.js and non-blocking programming, we’re given more control over program flow. Now (even if you still have parallel execution hidden by your database (I/O) driver), you can define what the program should do in the meantime and what it will do when you receive the resultset:

db.query("SELECT * FROM 'table'", function(resultset){
   drawTable(resultset);
});
doSomeThingElse();

With this snippet, we’ve defined two program flows: The first handles our actions just after sending the database query, while the second handles our actions just after we receive our resultSet using a simple callback. This is an elegant and powerful way to manage concurrency. As they say, “Everything runs in parallel — except your code.” Thus, your code will be easy to write, read, understand and maintain, all without your losing control over program flow.

These ideas weren’t new at the time — so, why did they become so popular with Node.js? Simple: Non-blocking programming can be achieved in several ways. Perhaps the easiest is to use callbacks and an event loop. In most languages, that’s not an easy task: While callbacks are a common feature in some other languages, an event loop is not, and you’ll often find yourself grappling with external libraries (for example, Python with Tornado).

But in JavaScript, callbacks are built into the language, as is the event loop, and almost every programmer who has even dabbled in JavaScript is familiar with them (or at least has used them, even if they don’t quite understand what the event loop is). Suddenly, every startup on Earth could reuse developers (i.e. resources) on both the client and server side, solving the “Python Guru Needed” job posting problem.

So, now we have an incredibly fast platform (thanks to non-blocking programming), with a programming language that’s incredibly easy to use (thanks to JavaScript). But is it enough? Will it last? I’m sure JavaScript will have an important place in the future. Let me tell you why.

Functional Programming

JavaScript was the first programming language to bring the functional paradigm to the masses (of course, Lisp came first, but most programmers have never built a production-ready application using it). Lisp and Self, Javascript’s main influences, are full of innovative ideas that can free our minds to explore new techniques, patterns and paradigms. And they all carry over to JavaScript. Take a look at monads, Church numbers or even (for a more practical example) Underscore’s collections functions, which can save you lines and lines of code.

Dynamic Objects and Prototypal Inheritance

Object-oriented programming without classes (and without endless hierarchies of classes) allows for fast development — just create objects, add methods and use them. More importantly, it reduces refactoring time during maintenance tasks by enabling the programmer to modify instances of objects, instead of classes. This speed and flexibility pave the way for rapid development.

JavaScript Is the Internet

JavaScript was designed for the Internet. It’s been here since the beginning, and it’s not going away. All attempts to destroy it have failed; recall, for instance, the downfall of Java Applets, VBScript’s replacement by Microsoft’s TypeScript (which compiles to JavaScript), and Flash’s demise at the hands of the mobile market and HTML5. Replacing JavaScript without breaking millions of Web pages is impossible, so our goal going forward should be to improve it. And no one is better suited for the job than Technical Committee 39 of ECMA.

Sure, alternatives to JavaScript are born every day, like CoffeeScript, TypeScript and the millions of languages that compile to JavaScript. These alternatives might be useful for development stages (via source maps), but they will fail to supplant JavaScript in the long run for two reasons: Their communities will never be bigger, and their best features will be adopted by ECMAScript (i.e. JavaScript). JavaScript is not an assembly language: It’s a high-level programming language with source code that you can understand — so, you should understand it.

End-to-End JavaScript: Node.js And MongoDB

We’ve covered the reasons to use JavaScript. Next, we’ll look at JavaScript as a reason to use Node.js and MongoDB.

Node.js

Node.js is a platform for building fast and scalable network applications — that’s pretty much what the Node.js website says. But Node.js is more than that: It’s the hottest JavaScript runtime environment around right now, used by a ton of applications and libraries — even browser libraries are now running on Node.js. More importantly, this fast server-side execution allows developers to focus on more complex problems, such as Natural for natural language processing. Even if you don’t plan to write your main server application with Node.js, you can use tools built on top of Node.js to improve your development process; for example, Bower for front-end package management, Mocha for unit testing, Grunt for automated build tasks and even Brackets for full-text code editing.

So, if you’re going to write JavaScript applications for the server or the client, you should become familiar with Node.js, because you will need it daily. Some interesting alternatives exist, but none have even 10% of Node.js’ community.

MongoDB

MongoDB is a NoSQL document-based database that uses JavaScript as its query language (but is not written in JavaScript), thus completing our end-to-end JavaScript platform. But that’s not even the main reason to choose this database.

MongoDB is schema-less, enabling you to persist objects in a flexible way and, thus, adapt quickly to changes in requirements. Plus, it’s highly scalable and based on map-reduce, making it suitable for big data applications. MongoDB is so flexible that it can be used as a schema-less document database, a relational data store (although it lacks transactions, which can only be emulated) and even as a key-value store for caching responses, like Memcached and Redis.

Server Componentization With Express

Server-side componentization is never easy. But with Express (and Connect) came the idea of “middleware.” In my opinion, middleware is the best way to define components on the server. If you want to compare it to a known pattern, it’s pretty close to pipes and filters.

The basic idea is that your component is part of a pipeline. The pipeline processes a request (i.e. the input) and generates a response (i.e. the output), but your component isn’t responsible for the entire response. Instead, it modifies only what it needs to and then delegates to the next piece in the pipeline. When the last piece of the pipeline finishes processing, the response is sent back to the client.

We refer to these pieces of the pipeline as middleware. Clearly, we can create two kinds of middleware:

  • Intermediates
    An intermediate processes the request and the response but is not fully responsible for the response itself and so delegates to the next middleware.
  • Finals
    A final has full responsibility over the final response. It processes and modifies the request and the response but doesn’t need to delegate to the next middleware. In practice, delegating to the next middleware anyway will allow for architectural flexibility (i.e. for adding more middleware later), even if that middleware doesn’t exist (in which case, the response would go straight to the client).

user-manager-500-opt
(Large view)

As a concrete example, consider a “user manager” component on the server. In terms of middleware, we’d have both finals and intermediates. For our finals, we’d have such features as creating a user and listing users. But before we can perform those actions, we need our intermediates for authentication (because we don’t want unauthenticated requests coming in and creating users). Once we’ve created these authentication intermediates, we can just plug them in anywhere that we want to turn a previously unauthenticated feature into an authenticated feature.

Single-Page Applications

When working with full-stack JavaScript, you’ll often focus on creating single-page applications (SPAs). Most Web developers are tempted more than once to try their hand at SPAs. I’ve built several (mostly proprietary), and I believe that they are simply the future of Web applications. Have you ever compared an SPA to a regular Web app on a mobile connection? The difference in responsiveness is in the order of tens of seconds.

(Note: Others might disagree with me. Twitter, for example, rolled back its SPA approach. Meanwhile, large websites such as Zendesk are moving towards it. I’ve seen enough evidence of the benefits of SPAs to believe in them, but experiences vary.)

If SPAs are so great, why build your product in a legacy form? A common argument I hear is that people are worried about SEO. But if you handle things correctly, this shouldn’t be an issue: You can take different approaches, from using a headless browser (such as PhantomJS) to render the HTML when a Web crawler is detected to performing server-side rendering with the help of existing frameworks.

Client Side MV* With Backbone.js, Marionette And Twitter Bootstrap

Much has been said about MV* frameworks for SPAs. It’s a tough choice, but I’d say that the top three are Backbone.js, Ember and AngularJS.

All three are very well regarded. But which is best for you?

Unfortunately, I must admit that I have limited experience with AngularJS, so I’ll leave it out of the discussion. Now, Ember and Backbone.js represent two different ways of attacking the same problem.

Backbone.js is minimal and offers just enough for you to create a simple SPA. Ember, on the other hand, is a complete and professional framework for creating SPAs. It has more bells and whistles, but also a steeper learning curve. (You can read more about Ember.js here.)

Depending on the size of your application, the decision could be as easy as looking at the “features used” to “features available” ratio, which will give you a big hint.

Styling is a challenge as well, but again, we can count on frameworks to bail us out. For CSS, Twitter Bootstrap is a good choice because it offers a complete set of styles that are both ready to use out of the box and easy to customize.

Bootstrap was created in the LESS language, and it’s open source, so we can modify it if need be. It comes with a ton of UX controls that are well documented. Plus, a customization model enables you to create your own. It is definitely the right tool for the job.

Best Practices: Grunt, Mocha, Chai, RequireJS and CoverJS

Finally, we should define some best practices, as well as mention how to implement and maintain them. Typically, my solution centers on several tools, which themselves are based on Node.js.

Mocha and Chai

These tools enable you to improve your development process by applying test-driven development (TDD) or behavior-driven development (BDD), creating the infrastructure to organize your unit tests and a runner to automatically run them.

Plenty of unit test frameworks exist for JavaScript. Why use Mocha? The short answer is that it’s flexible and complete.

The long answer is that it has two important features (interfaces and reporters) and one significant absence (assertions). Allow me to explain:

  • Interfaces
    Maybe you’re used to TDD concepts of suites and unit tests, or perhaps you prefer BDD ideas of behavior specifications with describe and should. Mocha lets you use both approaches.
  • Reporters
    Running your test will generate reports of the results, and you can format these results using various reporters. For example, if you need to feed a continuous integration server, you’ll find a reporter to do just that.
  • Lack of an assertion library
    Far from being a problem, Mocha was designed to let you use the assertion library of your choice, giving you even more flexibility. You have plenty of options, and this is where Chai comes into play.

Chai is a flexible assertion library that lets you use any of the three major assertion styles:

  • assert
    This is the classic assertion style from old-school TDD. For example:

    assert.equal(variable, "value");
    
  • expect
    This chainable assertion style is most commonly used in BDD. For example:

    expect(variable).to.equal("value");
    
  • should
    This is also used in BDD, but I prefer expect because should often sounds repetitive (i.e. with the behavior specification of “it (should do something…)”). For example:

    variable.should.equal("value");
    

Chai combines perfectly with Mocha. Using just these two libraries, you can write your tests in TDD, BDD or any style imaginable.

Grunt

Grunt enables you to automate build tasks, anything including simple copying-and-pasting and concatenation of files, template precompilation, style language (i.e. SASS and LESS) compilation, unit testing (with Mocha), linting and code minification (for example, with UglifyJS or Closure Compiler). You can add your own automated task to Grunt or search the registry, where hundreds of plugins are available (once again, using a tool with a great community behind it pays off). Grunt can also monitor your files and trigger actions when any are modified.

RequireJS

RequireJS might sound like just another way to load modules with the AMD API, but I assure you that it is much more than that. With RequireJS, you can define dependencies and hierarchies on your modules and let the RequireJS library load them for you. It also provides an easy way to avoid global variable space pollution by defining all of your modules inside functions. This makes the modules reusable, unlike namespaced modules. Think about it: If you define a module like Demoapp.helloWordModule and you want to port it to Firstapp.helloWorldModule, then you would need to change every reference to the Demoapp namespace in order to make it portable.

RequireJS will also help you embrace the dependency injection pattern. Suppose you have a component that needs an instance of the main application object (a singleton). From using RequireJS, you realize that you shouldn’t use a global variable to store it, and you can’t have an instance as a RequireJS dependency. So, instead, you need to require this dependency in your module constructor. Let’s see an example.

In main.js:

  define(
      ["App","module"],
      function(App, Module){
          var app = new App();

          var module = new Module({
              app: app
          })

          return app;
      }
  );

In module.js:

  define([],
      function(){
          var module = function(options){
              this.app = options.app;
          };
          module.prototype.useApp = function(){
              this.app.performAction();
          };
          return module
      }
  );

Note that we cannot define the module with a dependency to main.js without creating a circular reference.

CoverJS

Code coverage is a metric for evaluating your tests. As the name implies, it tells you how much of your code is covered by your current test suite. CoverJS measures your tests’ code coverage by instrumenting statements (instead of lines of code, like JSCoverage) in your code and generating an instrumented version of the code. It can also generate reports to feed your continuous integration server.

Conclusion

Full-stack JavaScript isn’t the answer to every problem. But its community and technology will carry you a long way. With JavaScript, you can create scalable, maintainable applications, unified under a single language. There’s no doubt, it’s a force to be reckoned with.

 

Source:  http://www.smashingmagazine.com/2013/11/21/introduction-to-full-stack-javascript/

 

 
Comments Off on An Introduction To Full-Stack JavaScript

Posted by on June 24, 2015 in Javascript

 

SEO Tweaks for Big Impact

Search Engine Optimization can be a complicated and time-consuming endeavor. However, there are some small practices that can be implemented that don’t take too much time and that can really help your website gain a competitive edge in its web rankings. This is a list of ten such things compiled for your pleasure.

1. SEO Basics

Implementing the basics of SEO are among the easiest of tasks, and will yield the greatest results for your website.

The Title Tag is probably the most important part of a website for search engine optimization. It is the first thing the crawler will look at to determine your site’s subject matter. Your title tag should include some keywords, but not so many that your site be flagged for keyword stuffing. The order of words in your title tag is also important, and the closer important keywords are to the beginning of the title tag, the better it is for your rankings (I recommend a natural sounding flow to your title text). Although it varies by SERP, Google usually displays the first 65 to 75 characters of your title. This however, should not be a deterrent to use additional words or characters. Characters will be counted for web rankings even if they are not visible on the SERP. If it is your goal to optimized for localized search, than it is important to include localized keywords in the title area. You may also want to consider including branding for your overall site somewhere within the title space with some sort of separator, such as a hyphen. Make sure that all of your title tags are unique to their individual pages.

The Meta Description is also very important. It less important for rankings than it is for improving clickthrough rate, as it is usually the text that the user will read on the search page to decide whether they should click or not. In some cases the search engine will choose to display text from the page and not the text of the meta description. In this case, you should treat this as an indicator to rewrite your meta description text. It is worth noting that search engines usually only display the first 160 characters of the meta description, so it is important to keep your main message within that character count. The inclusion of more characters will likely be displayed truncated, displayed with ellipses. Although the keywords in meta descriptions don’t really effect search rankings, it is advised that the meta description differ for each page, so that the search engines don’t confuse the page for a duplicate.

Heading Tags are a very important factor for SEO. Search engines put an emphasis on the contents of these tags for determining what the site is about. It is important to note that the heading tags function hierarchically and should adhere to the correct structure. An H1 tag should always be included on a page, and an H2 tag should be used to break your writing down into further subsections. It is not necessary to overuse these subheading tags. They should only be used if it makes sense within your writing structure.

Using a Static URL Structure for your webpage or Permalink Format for your blog is advisable as a good SEO practice (although Googlebot can crawl dynamic URLs quite fine contrary to popular belief). Matt Cutts, the head of Google’s webspam team and a go-to resource on SEO for Google, has mentioned that the use of keywords in your URL can effect search rankings (albeit only slightly). I recommend your URL be representative of your page title, maybe with some unimportant words like “and” or “the” omitted to shorten the URL, and separated by hyphens (this page: “/ten-seo-tweaks”). Where this practice really shines through though and where it will have the greatest impact is on your page’s click-through rate. The reason for this is that people dislike long, meaningless URLs and they are more likely to click on a shorter one.

Although it isn’t necessary to have an XML Sitemap, it is still a good idea and will improve the crawl rate and indexation of your website. It becomes more important for large websites, or websites that are updated frequently for this reason. The sitemap should be validated and connected to your Google Webmaster Tools account.

2. Image Optimization

Since search engines can’t see or understand what is depicted in a picture, it is necessary that your provide search engines with details about images. Make sure to include a description of the image in the alt attribute within the img tag. You can also provide context to an image by using a descriptive filename. I recommend that you optimize the file size of your image to load at a decent speed, as this will help for SEO.

3. Webmaster Tools

Using Google Webmaster tools is a must for a website. It gives you great insight and control over the indexing of your website. You can check errors, perform geotargetting, remove an indexed page, reviewing inbound links, and many more functions that are very valuable for SEO. The Google Webmaster Central Blog has a very informative video entitled Using Webmaster Tools like an SEO that I recommend you check out for more information. In addition to Google Webmaster Tools, I recommend you also use Bing Webmaster Tools. It has a great interface that was designed with SEO in mind.

4. Google+

The advent of Google+ and the +1 button has sent shockwaves through the SEO world. For sometime now, social signals have been effecting search ranking, but not in the way that Google+ does. Webpages that have been +1’d by people in your circles will usually appear at the top of the search engine results page above other organic results, making a Google+ essential to your SEO strategies.

5. Social Networks

Sharing on social network other than Google+ can effect your search ranking a little bit (not nearly as much as with Google+ of course), and social signals will likely become more and more important to the future of search. Even if it doesn’t impact your search rankings, it is still recommended because it will only add to traffic and conversions for your website.

6. Google Authorship Markup

You can use rel=”author” on your website or blog to display your picture and author information next to a page in the SERP. The picture is linked to your Google+ profile. It can be used to add authority to your name and even improve click through rate (it helps your page stand out in the SERP). Cyrus Shepard recently wrote about he was able to further optimize his author picture to increase web traffic.

7. Social Meta Data

The use of Social Meta Data is will not have a direct effect on SEO, but will help with distribution amongst social networks which in turn effects SEO. Social signals have become increasingly important to search engine rankings. When your link is shared on a social network like Facebook or LinkedIn, social meta data will dictate the thumbnail, title, and description that will be displayed. If these aren’t set, they display poorly by default and fewer people will click on the link or reshare it. This is probably the most difficult to implement of the SEO tweaks that I am mentioning, and I apologize if it is confusing.

To Be Used With Facebook / Opengraph

First, modify the attributes of your <html> tag to look like <html xmlns:og=”http://opengraphprotocol.org/schema/” xmlns:fb=”http://ogp.me/ns/fb#” xmlns:og=”http://opengraphprotocol.org/schema/”>

Then, add the following to following to the <head> section of your webpage:

<meta property=”og:site_name” content=”Name of Website or Blog, Not the Page Name” />

Can be “article” or “website” depending on type of page.
<meta property=”og:type” content=”article” />

<meta property=”og:locale” content=”en_US” />
<meta property=”og:title” content=”Title For Your Webpage (Similar to Title Tag)” />
<meta property=”og:description” content=”Description Text for Webpage (Similar to Meta Description Tag Contents)” />

Image should be representative of the page in reference. It will appear as the thumbnail image when posted to Facebook and some other social networks.
<meta property=”og:image” content=”http://example.com/url_to_representative_image.jpg” />

To Be Used With Twitter Cards

Add the following to following to the <head> section of your webpage:

<meta name=”twitter:card” content=”summary”>
<meta name=”twitter:site” content=”@twitter_handle“>
<meta name=”twitter:creator” content=”@twitter_handle“>

Should be the Canonical URL of the Webpage
url” content=”http://www.example.com/self_referening_page.html“>

<meta name=”twitter:title” content=”Title For Your Webpage (Similar to Title Tag, Maxium 70 Characters)“>
<meta name=”twitter:description” content=”Description Text for Webpage (Similar to Meta Description Tag Contents, should be less than 200 characters)“>

Image should be representative of the page in reference. Must be at least 60px by 60px. Images greater than 120px by 120px will be resized and cropped in a square aspect ratio.
<meta name=”twitter:image” content=”http://example.com/url_to_representative_image.jpg“>

Make sure to check your implementation of these tags with Google’s Rich Snippet Testing Tool.

8. Keyword Research

Keyword research can be a long and tedious process to complete in full, but doing just a little bit can go a long way. I recommend optimized for 2 or 3 keywords, but it isn’t necessary to go crazy with them. Whatever you write should be natural sounding, maintaing an organic flow.
seo-keyword-graph

Also keep in mind that it is likely that you will be competing with other high profile websites for search ranking for certain keywords (this is bad for you). You may want to try and optimize for long tail keyword or keywords that are less competitive at first. There are several free tools at your disposal that can help you with your keyword research:

Note: Many of these tools are meant for PPC campaigns, but can also be used for SEO purposes.

9. Consistant Linking

Linking is factor which Google and other search engines use to rank your website. I won’t get into linking really, but would like to stress that it is important how that the link to your website be consistent across the internet. You can link to your website in your social networking profiles, email signatures, and beyond. Choose whether you would like to include the “www” or “/” at the end and be consistant everywhere you put this address. I also think it is worth mentioning that you should not spam the web with your website’s link.

10. Analytics

Employing the use of an analytics package like the free Google Analytics can be very helpful. You can use it to easily see what is working and what isn’t working. Use it to test and improve your SEO practices.

If anyone has any questions, feel free to ask them in the blog comment bellow. I would be happy to answer.

 
Comments Off on SEO Tweaks for Big Impact

Posted by on December 15, 2014 in Ecommerce, SEO - Search Engine Optimisation

 

Tips on Creating a Better Online Shopping Experience

There are smart marketing methods out there like real-time web personalization that will help create a better online experience for your customers through this joyful yet stressful time of year.

Personalize the web experience for a first time visitor:
It may seem difficult to know what a first time visitor is interested as there isn’t any clickstream behavior to track yet, but there are some things you can do here. In real-time, you can identify what site they came from (referring site), what their search terms were, you can start to understand their likely interests.

Tip 1: You can simply serve new visitors a Welcome Message on your website – and this message can be used as an email acquisition tool.

Gardener’s Supply Company saw a 3x increase in revenue and a 6x boost in leads after launching a welcome message on their website, targeted at visitors who came from Pinterest. The message included a discount and email address capture to help increase engagement and drive conversions.

Personalize the web experience for a returning visitor:
This one is easier. Anonymous visitors can be identified as a return visitor. The instant they visit your site, in real time, you can recognize this “Anonymous visitor ABC”.  Last time they were here they clicked on “XYZ”, so let’s present them personalized language, content, and offers focused on “XYZ” right away. You are now dramatically improving your chances of having this visitor make it past the 20-second danger zone, because right off the bat you are showing them what they want.

Tip 2: Serve them a Welcome Back message – this can include a variety of messages based of their past behavior: You left items in your cart, you looked at these specific items, you never left your email address for offers and promotions etc.

Tip 3: You notice that an anonymous visitor is returning to view a specific item. They have never added it the shopping cart, but it is obvious there is high interest. Upon their return visit, you can swap out the content and language to be focused on that specific item, as well as similar and complementary items to assist in increasing the purchase order. You can even offer them a personalized coupon for this specific item, as well as discounts on related items.

Help guide your visitors:
With lengthy shopping lists, last-minute shopping runs, and returns & exchanges – you can help create a better customer experience by making your site a customer service representative. There several ways to do this and it will be impactful if it’s done right.

Tip 4: Target your visitors based off of geolocation. Help guide them with a banner or popover with the nearest store location. You can also promote new store openings, sales and store events.

Tip 5: Tailor messages to visitors based off of the time spent on your website. If they are on your site with no action, you can ask them is they need assistance, ask them for their email, live chat, or offer them an incentive to purchase.

Create Urgency!
Creating a sense of urgency with discounts or free shipping messages can drive sales with already engaged visitors.

Tip 6: Whether a visitor has returned to your website several times to view a product or if they have items in their shopping cart, you can help move them through the sales process quickly by offering a deep discount or free shipping message while they are engaged on your website. This tactic will increase shopping cart conversions and decrease abandonment.

Decrease your bounce rate:
Bounce rate is the percentage of visitors to your site that visit one page on your website and then leave. According to Google, the average for most sites is between 40% and 60%. The lower your bounce rate is, the longer your potential customer will be on your site making the decision to buy.

Tip 7: Are they bouncing without a purchase? Offer them a coupon or discount right away – an incentive for them to stick around.

Tip 8: Do they have items in their shopping cart? Show them those items within a message to remind them of these items! These two tips can be used together as a double whammy to get them to convert.

MIT Technology Review reduced their bounce rate by 10x on their website when they added real-time dynamic, personalized content to their site to help engage visitors, keep them on their website, and prevent bounces.

Don’t let your customers have a mediocre shopping experience this holiday season. Help them find what they are looking for, when they are looking for it, and guide them through the buying process. While you have been planning your Q4 since this summer, it’s not too late to add real-time behavior-based web personalization into your holiday marketing mix

 
Comments Off on Tips on Creating a Better Online Shopping Experience

Posted by on December 15, 2014 in Ecommerce

 

FREE open source DotNetNuke modules

Following is a list of free open source DotNetNuke modules available at CodePlex.

NB_Store – Free DotNetNuke Ecommerce Catalog Module – http://nbstore.codeplex.com/
NB_Store is a Free DotNetNuke E-Commerce / Catalog Module that supports multiple languages, customization through html templates, Export/Import, Order Admin, client Admin, Stock Control and Products support multiple models and options. It’s developed in VB.Net.

IWeb – DotNetNuke WebServices Module – http://iweb.codeplex.com/
IWEB allows you to create Web Services for your DotNetNuke Portal. You simply upload the module and start adding your own methods.
Intergrates with DNN authentication and API.
IWeb is an extensible framework for DotNetNuke allowing developers to use web methods that are integrated with the DotNetNuke security context.

IWebCF – DotNetNuke WCF Services Module – http://iwebcf.codeplex.com/
IWebCF provides a platform for developers to extend DotNetNuke using WCF services. IWebCF brings the power of SOA to DotNetNuke, allowing DNN to be more easily inter grated with enterprise applications and services.

IWebCF is the next generation of the original IWeb module for DotNetNuke. IWeb originally was developed using the classic ASMX web services and allowed extension methods to be added very easily. File management extension methods were added to the module and a file manager client was also included. IWebCF picks up at this point and migrates the underlying technology to WCF and away from ASMX web services.
MSBuild DotNetNuke Tasks – http://msbuilddnntasks.codeplex.com/
The MSBuild DotNetNuke Tasks Project is an open source project for MSBuild tasks for automatically updating the DotNetNuke Manifest file (.dnn) based on the actual state of the module. This will help in removing repetitive and easy to forgot tasks when creating DNN manifest files
Whenever you release a new version of a DotNetNuke module you have to carefully review the DotNetNuke manifest file ( .dnn) to reflect the current status of the module.
jQuery UI DotNetNuke integration – http://jquidnn.codeplex.com/
The goal of jQUI-DNN is to provide an easily deployable solution for developers wanting to use jQuery UI in a DotNetNuke context. The core and themes are provided as separate modules for easy deployment in a DotNetNuke host. It is developed in C#.
User Directory Module for DotNetNuke – http://userdirectory.codeplex.com/
With the Effority.Net User Directory Module for DotNetNuke you can search easily for your DotNetNuke users and display information like names, telephone numbers or all other profile data.

So you can easily provide a member directory, dealer directory or phonebook.
DotNetNuke Linq to Sql Model Adapter – http://dnnlinqtosqladapter.codeplex.com/
A DataContext adapter allowing DotNetNuke modules using Linq to Sql to automatically apply an end user’s database owner and object qualifier at runtime.
Organization chart with galleryhttp://trombi.codeplex.com/
is a DotNetNuke module, in french: “trombinoscope”. It is used to show the organisation chart with photos and hierarchy. It is alors possible to perform a search to find people in the company.
Workflow HTML / Versioning HTML Module for DotNetNuke – http://workflow.codeplex.com/
Based on the “Text/HTML Core Module” the Text/HTML Workflow Module offers simple versioning and approval abilities for your Text/HTML Module content.
Key features:

  • Versioning Text/HTML content
  • Roles: Viewer (Reader), Editor, Approval
  • Workflow Control Center: Manage Texts Versions
  • Viewer always gets the latest approved version of the content
  • Notifies Workflow Member if new content is available
  • Each submitted Text is stored as separated version


DotNetNuke Developers Help File –
http://dnnhelpsystem.codeplex.com/
MSDN Style help based upon inline code comments in de DotNetNuke Source Modules.

The help files are generated using SandCastle and the SandCastle Help File Builder using the unmodified sources from DotNetNuke, which can be downloaded from www.DotNetNuke.com
Silverlight Media for DotNetNuke – http://dnnslmedia.codeplex.com/
SilverlightMedia is a module for DotNetNuke®. Its a container for showing Silverlight applications in a DotNetNuke@ portal.
SilverlightDesktop for DotNetNuke – http://silverlightdesktpdnn.codeplex.com/
DotNetNuke module version of SilverlightDesktop.
WillStrohl.Injection Module for DotNetNuke – http://wnsinj.codeplex.com/
This is a content injection module, written by Will Strohl. Its purpose is to allow you to inject markup into the header or footer of the page. This version is compatible with DNN version 4.06.02 and up.

This module is meant to make it easy for DNN hosts and admins to add HTML markup into a DotNetNuke website, either in the header, or the footer of the page. This module can easily be used on a single page, or across an entire portal. Examples of how this might benefit you are:
jQuery script , Google Analytics script , Quantcast script, HTML comments / snippets, Inline JavaScript snippets, 3rd party widgets (non-DNN), Advertising snippets and whatever else you figure out to do…
DotNetNuke IdentitySwitcher – http://identityswitcher.codeplex.com/
The IdentitySwitcher is a simple, but very useful tool when it comes to DNN Module Development. Using this module you can easily switch between users, without knowing their passwords. Even switching to host users is supported (must be allowed by the host user).

Do not use this module in production environment.

SwfObject4DNN – Adobe Flash and Flex Module for DotNetNuke – http://swfobject4dnn.codeplex.com/
Gives you everything you need to use Adobe Flex or Adobe Flash files as modules in DotNetNuke. Along with IWebLite and Web Services, SwfObject4DNN helps you take advantage of user management in DotNetNuke from within your Flex or Flash application. The template is parameterized to make setting up and making changes easy.

Magic Content – http://magiccontent.codeplex.com/
Magic Content
is a multi-lingual content publishing module that can be used as a replacement for the current Text/HTML module. It’s very easy to use and extends content publishing by many useful features.

Image Upload and Editor Control – http://imageeditor.codeplex.com/
ASP.Net 2.0/MS AJAX 1.1 Image Editor custom server control provides client-side cropping, rotation/flip, brightness/contrast/saturation enhancement with dynamically generated image preview. Accompanying Image Editor Control is a full-featured image file selection and upload custom server control for DotNetNuke v 4.6.2 and above which handles all folder (including DNN secure and database folders) and file operations with respect for DNN permissions. A DNN module is also provided to demonstrate the control’s capabilities and properties. It may also be used as a stand-alone image upload and editing module.

WillStrohl.FeedHandler Module for DotNetNuke – http://wnsfh.codeplex.com/
This module is meant to help DNN site admins deal with the core RSS feed issues that modules output. For example, the Announcements module has the module name at the beginning of each <item> element value. The FeedHandler module allows you to perform a little Regular Expression magic to clean up and change your RSS feeds. However, you will need to supply a different feed URL to those who consume your RSS feed.

DNN Content Builder WCMS – http://dnncb.codeplex.com/
Content management is about to transform raw content into assets, managing every aspect of its life cycle. We are talking about workflow, scheduling, versioning, staging, personalization and much more than simply create HTML or inserting images into a page.

DNN Live Messenger – http://dnnlivemessenger.codeplex.com/
DNN Live Messenger makes it easy for users to integrate Windows Live UI Controls into their DotNetNuke Website. Instantly add the Windows Live Messenger webbar and enable users to use Windows Live Messenger from your Website. This module uses Delegated Authentication and requires you to register your site with Windows Live Services to recieve and AppID and to register a shared secret.

DNNFlashImageRotator – http://dnnfir.codeplex.com/
DotNetNuke Flash Image Rotator is based on JW Image Rortator, an open source flash project enables you to show a couple of photos in sequence, with fluid transitions between them. It supports rotation of an RSS, XSPF or ASX playlists with JPG, GIF and PNG images, a wide range of flashvars (variables) for tweaking both behavior and appearance and an extensive javascript API.

SharePointNuke – http://sharepointnuke.codeplex.com/
Open source module that connects to a SharePoint server and displays the content of a specified list into DotNetNuke.

DnnScanFree – http://dnnscanfree.codeplex.com/
A DotNetNuke module and associated windows forms client that facilitates the scanning and processing of documents using box codes. Additional information on this project can be found here: http://www.adefwebserver.com/DotNetNukeHELP/Misc/ScanFree/dnScanFree.htm

DnnBlogML – http://dnnblogml.codeplex.com/
DnnBlogML allows import/export between the core DotNetNuke Blog module and the BlogML format. It’s developed in Visual Basic, targeting .NET 3.5 SP1 framework, DotNetNuke 05.00.01, Blog 03.05.01.

DotNetNuke Event Publisher – http://dnneventpublisher.codeplex.com/
A DotNetNuke module that allows you to sync events based on data retrieved from SQL queries or existing UserDefinedTable modules to your Google Calendars.

DotNetNuke News Module – http://easynews.codeplex.com/
This is a DotNetNuke 5.5+ module for news. It allows users to create, manage and preview news on DotNetNuke portals. Module is template based and can work on multilanguage portals. It is free of charge and constantly improving.

 
Comments Off on FREE open source DotNetNuke modules

Posted by on December 9, 2014 in .NET Programming, DotNetNuke

 

Places To Educate Yourself Online For Free

Those people who take the time and initiative to pursue knowledge on their own are the only ones who earn a real education in this world.  Take a look at any widely acclaimed scholar, entrepreneur or historical figure you can think of.  Formal education or not, you’ll find that he or she is a product of continuous self-education.

If you’re interested in learning something new, this article is for you.  Broken down by subject and/or category, here are several top-notch self-education resources I have bookmarked online over the past few years.

Note that some of the sources overlap between various subjects of education.  Therefore, each has been placed under a specific subject based on the majority focus of the source’s content.

Science and Health

  • MIT OpenCourseWare – MIT OpenCourseWare is a free web-based publication of MIT course materials that reflects almost all the undergraduate and graduate subjects taught at MIT.
  • Tufts OpenCourseWare – Tufts OpenCourseWare is part of a new educational movement initiated by MIT that provides free access to course content for everyone online.  Tufts’ course offerings demonstrate the University’s strength in the life sciences in addition to its multidisciplinary approach, international perspective and underlying ethic of service to its local, national and international communities.
  • HowStuffWorks Science – More scientific lessons and explanations than you could sort through in an entire year.
  • Harvard Medical School Open Courseware – The mission of the Harvard Medical School Open Courseware Initiative is to exchange knowledge from the Harvard community of scholars to other academic institutions, prospective students, and the general public.
  • Khan Academy – Over 1200 videos lessons covering everything from basic arithmetic and algebra to differential equations, physics, chemistry, and biology.
  • Open Yale Courses – Open Yale Courses provides lectures and other materials from selected Yale College courses to the public free of charge via the internet.  The courses span the full range of liberal arts disciplines, including humanities, social sciences, and physical and biological sciences.
  • webcast.berkeley – Every semester, UC Berkeley webcasts select courses and events for on-demand viewing via the Internet.  webcast.berkeley course lectures are provided as a study resource for both students and the public.
  • UC San Diego Podcast Lectures – UCSD’s podcasting service was established for instructional use to benefit our students.  Podcasts are taken down at the end of every quarter (10 weeks Fall-Spring and 5 weeks in the summer).  If you’re enjoying a podcast, be sure to subscribe and download the lectures.  Once the podcast has been taken offline, faculty rarely approve their reposting.
  • Johns Hopkins OpenCourseWare – The Johns Hopkins Bloomberg School of Public Health’s OpenCourseWare project provides access to content of the School’s most popular courses. As challenges to the world’s health escalate daily, the School feels a moral imperative to provide equal and open access to information and knowledge about the obstacles to the public’s health and their potential solutions.
  • Carnegie Mellon Open Learning Initiative – No instructors, no credits, no charge.  Use these self-guiding Carnegie Mellon materials and activities to learn at your own pace.
  • Utah State OpenCourseWare – Utah State OpenCourseWare is a collection of educational material used in our formal campus courses, and seeks to provide people around the world with an opportunity to access high quality learning opportunities.
  • AMSER – AMSER (the Applied Math and Science Education Repository) is a portal of educational resources and services built specifically for use by those in Community and Technical Colleges but free for anyone to use.
  • Wolfram Demonstrations Project – Wolfram brings computational exploration to the widest possible audience, open-code resource that uses dynamic computation to illuminate concepts.  Free player runs all demos and videos.
  • The Science Forum – A very active scientific discussion and debate forum.
  • Free Science and Video Lectures Online! – A nice collection of video lectures and lessons on science and philosophy.
  • Science.gov – Science.gov searches over 42 databases and over 2000 selected websites from 14 federal agencies, offering 200 million pages of authoritative U.S. government science information including research and development results.
  • The National Science Digital Library – NSDL is the Nation’s online library for education and research in Science, Technology, Engineering, Mathematics.
  • EnviroLink Network–  A  non-profit organization, grassroots online community uniting organizations and volunteers around the world.  Up-to-date environmental information and news.
  • Geology.com – Information about geology and earth science to visitors without charge: Articles, News, Maps, Satellite Images, Dictionary, etc.
  • Scitable – A free science library and personal learning tool that currently concentrates on genetics, the study of evolution, variation, and the rich complexity of living organisms.  The site also expects to expand into other topics of learning and education.
  • LearningScience.org – A free open learning community for sharing newer and emerging tools to teach science.

Business and Money

  • MIT Sloan School of Management – MIT Sloan is a world-class business school long renowned for thought leadership and the ability to successfully partner theory and practice.  This is a subsection of the larger MIT OpenCourseWare site.
  • Investopedia Financial Investing Tutorials – A plethora of detailed lessons on money management and investing.
  • U.S. Small Business Administration Training Network – The Small Business Administration has one of the best selections of business courses on the web. Topics include everything from starting a business and business management to government contracting and international trade. Most courses take only 30 minutes to complete.
  • VideoLectures.NET (Business) – A free and open access educational video lectures repository. The lectures are given by distinguished scholars and scientists at the most important and prominent events like conferences, summer schools, workshops and science promotional events from many fields of Science.
  • My Own Business, Inc. – Offers a free online business administration course that would be beneficial to new managers and to anyone who is interested in starting a business. This comprehensive course is split up into 16 sessions covering topics like business plans, accounting, marketing, insurance, e-commerce and international trade.
  • UC Irvine OpenCourseWare (Business) – Rapidly with the addition of nearly 10 new courses every month. Many of our OCW offerings are directed at working adults seeking continuing education, with the option to enroll in instructor-led, for-credit courses, related to the OCW content. 
  • Kutztown University of Pennsylvania – The Kutztown University of Pennsylvania’s Small Business Development Center offers more than 80 free business courses online. Kutztown’s courses are individualized and self-paced. Many of the courses feature high-end graphics, interactive case studies and audio streams.
  • Boston College Front Row (Business) – Boston College Front Row is a Web site that offers free access through streaming media to tapes of cultural and scholarly events at Boston College.
  • Financial Management Training Center – The Financial Management Training Center provides several free downloadable business courses for people who need to learn the finer points of financial management. All courses offered can be taken online; courses include full exams as well as evaluation forms for people seeking Continuing Professional Education (CPE) credits.
  • The Free Nonprofit Micro-eMBA – Free Management Library’s Free Nonprofit Micro-eMBA Program is an especially great resource for students wishing to learn more about nonprofit management, but most of the lessons also apply to general business management. Completion of this program will not result in an MBA degree, but enrollment is free and the material is well structured.
  • Bookboon Free Business e-books – Hundreds of free business books online in PDF format.
  • TheStreet University – If you’re just starting out as a stock and bond investor or need a refresher’s course, this is the place to learn what you need to know.

History and World Culture

  • University of Washington’s OpenUW – Explore a variety of learning in several free history-centric online courses from the University of Washington.
  • Notre Dame OpenCourseWare – Notre Dame OCW is a free and open educational resource for faculty, students, and self-learners throughout the world.
  • Bio’s Best – Biography.com’s most popular biographies on notable historical figures.
  • UC Irvine OpenCourseWare (Social Science) – Rapidly with the addition of nearly 10 new courses every month. Many of our OCW offerings are directed at working adults seeking continuing education, with the option to enroll in instructor-led, for-credit courses, related to the OCW content.
  • Boston College Front Row (History) – Boston College Front Row is a Web site that offers free access through streaming media to tapes of cultural and scholarly events at Boston College.
  • MIT OpenCourseWare (History) – The MIT History Faculty offers about 70 subjects in the areas of Ancient, North American, European, East Asian, and Middle Eastern history.
  • Wikiversity School of Social Sciences – Wikiversity is a Wikimedia Foundation project devoted to learning resources, learning projects, and research for use in all levels, types, and styles of education from pre-school to university, including professional training and informal learning.
  • OpenLearn (Arts and Humanities) – The OpenLearn website gives free access to Open University course materials.
  • A Biography of America – A Biography of America presents history not simply as a series of irrefutable facts to be memorized, but as a living narrative of America’s story.
  • Have Fun with History – A resource for students, educators and all lovers of American History.
  • The USGenWeb Project – Free genealogy and family history resources online.
  • MacroHistory and World Report – Tell without illusions or ideological restraints the story of our ancestors, our parents and us.
  • World History HyperHistory – Navigates through 3000 years of World History with links to important persons and events of world historical importance.
  • American Digital History – Online American history textbook. An interactive, multimedia history of the United States from the Revolution to the present.

Law

  •  Duke Law Center for the Public Domain – Duke University is counted amongst the best schools in the South. If you’re interested in law, Duke’s open courseware in that subject area can go a long way towards helping you learn more about the justice system.
  • Intute Law – Provides free access to high quality resources on the Internet. Each resource has been evaluated and categorised by subject specialists based at UK universities.
  • Boston College Front Row (Law) – Boston College Front Row is a Web site that offers free access through streaming media to tapes of cultural and scholarly events at Boston College.
  • American University – Offers a selection of podcasts on a number of different law-related subjects. There is even a very interesting podcast on debt relief and the law.
  • Lewis & Clark Law School – Provides a number of podcast from the law school. Subjects include tax law, business law, environmental law and other areas of law. Interesting and insightful lectures on the law.
  • Case Western Reserve University School of Law – Offers a number of interesting lectures on different law subjects. These lectures are both podcasts and Web casts. You can look ahead to the coming school year, which already has a number of interesting subjects lined up.
  • Harvard Law School – Provides a number of Web casts of law lectures, symposia, panels and conferences. A great collection of relevant information and insights on how the law interacts with current events.
  • Stanford Law – Provides open courseware via iTunes on a variety of law subjects, including the theory of justice, mobile content distribution, gay marriage, judicial review and privacy protection. The tracks are available for free, but you’ll need iTunes. Put the lectures on your iPod or iPhone and listen them anywhere.
  • MoneyInstructor Business Law – From MoneyInstructor.com provides a look at a number of basics in business law. Learn how to define crimes under business law. Worksheets and curriculums are available for teachers. Ordinary folks will find them useful as well.
  • Wesleyan College Constitutional Law – From North Carolina Wesleyan College offers an overview of the U.S. Constitution and the laws springing from it. Online lectures and class notes are included, which can help you develop a strong understanding of the Constitution and how it forms the basis of our laws.

Computer Science and Engineering

  • VideoLectures.NET (Computer Science) – A free and open access educational video lectures repository. The lectures are given by distinguished scholars and scientists at the most important and prominent events like conferences, summer schools, workshops and science promotional events from many fields of Science.
  • Wikiversity School of Computer Science and Technology – Wikiversity is a Wikimedia Foundation project devoted to learning resources, learning projects, and research for use in all levels, types, and styles of education from pre-school to university, including professional training and informal learning.
  • New York State University (US), Computer Science – Hundreds of lectures, tutorials and links to educational material.
  • Dream.In.Code Tutorials – Lots of computer programming tutorials.
  • MIT OpenCourseWare (Engineering and Computer Science) – MIT OpenCourseWare is a free web-based publication of MIT course materials that reflects almost all the undergraduate and graduate subjects taught at MIT.
  • Maine University (US), Fogler Guide to Computer Science – An insanely detailed list of computer science resources.
  • FreeComputerBooks.com  – Free computer, mathematics, technical books and lecture notes.
  • Collection of Computer Science Bibliographies – A massive collection of bibliographies of scientific literature in computer science, updated weekly from original locations, more than 3 millions of references (mostly to journal articles, conference papers and technical reports), clustered in about 2000 bibliographies.
  • W3Schools – Web-building tutorials, from basic HTML and XHTML to advanced XML, SQL, Database, Multimedia and WAP.
  • FreeTechBooks.com – This site lists free online computer science, engineering and programming books, textbooks and lecture notes, all of which are legally and freely available over the Internet.
  • Free computer Tutorials – Free computer courses and tutorials site. All the courses are aimed at complete beginners, so you don’t need experience to get started.
  • Programmer 101: Teach Yourself How to Code – Several helpful resources for computer programming beginners.
  • Google Code University – Provides sample course content and tutorials for Computer Science (CS) students and educators on current computing technologies and paradigms.

Mathematics

  • Oxford University Mathematics OpenCourseWare – Various online mathematics classes provided free by Oxford University.
  • UMass Boston Mathematics – Various online mathematics classes provided free by UMass Boston.
  • Whatcom Online Math Center – Various math lessons provided free by Whatcom Community College.
  • VideoLectures.NET (Mathematics) – A free and open access educational video lectures repository. The lectures are given by distinguished scholars and scientists at the most important and prominent events like conferences, summer schools, workshops and science promotional events from many fields of Science.
  • Wikiversity School of Mathematics – Wikiversity is a Wikimedia Foundation project devoted to learning resources, learning projects, and research for use in all levels, types, and styles of education from pre-school to university, including professional training and informal learning.
  • AMSER Mathematics – AMSER (the Applied Math and Science Education Repository) is a portal of educational resources and services built specifically for use by those in Community and Technical Colleges but free for anyone to use.
  • Math.com – Math.com is dedicated to providing revolutionary ways for students, parents, teachers, and everyone to learn math.
  • Intute Mathematics – Provides free access to high quality resources on the Internet. Each resource has been evaluated and categorized by subject specialists based at UK universities.
  • Free-Ed College Mathematics – Offers a wide range of free online math courses and study programs.

English and Communications

  • Open Yale Courses (English) – Open Yale Courses provides lectures and other materials from selected Yale College courses to the public free of charge via the internet.
  • Writing Guidelines for Engineering and Science Students – These guidelines for engineering writing and scientific writing are designed to help students communicate their technical work.
  • MIT Writing and Humanistic Studies – The MIT Program in Writing and Humanistic Studies gives students the opportunity to learn the techniques, forms, and traditions of several kinds of writing, from basic expository prose to more advanced forms of non-fictional prose, fiction and poetry, science writing, scientific and technical communication and digital media.
  • Merriam-Webster Online – In this digital age, your ability to communicate with written English is paramount skill.  And M-W.com is the perfect resource to improve your English now.
  • National Novel Writing Month – Valuing enthusiasm and perseverance over painstaking craft, NaNoWriMo is a novel-writing program for everyone who has thought fleetingly about writing a novel but has been scared away by the time and effort involved.
  • Lifewriting – A complete text of the 9-week writing class a professor taught for years at UCLA.
  • Guide to Grammar and Writing – Grammar and writing techniques, lessons and quizzes.
  • Purdue Online Writing Lab – Over 200 free resources including lessons on: writing, research, grammar, and style guides.

Foreign and Sign Languages

  • BBC Languages – Teach yourself a new spoken language online.
  • American Sign Language Browser – Teach yourself sign language online.
  • Livemocha – Start learning a new language online for free.
  • Learn10 – Gives you a language learning habit that’s hard to kick. 10 new words; everywhere, every day.
  • One Minute Languages – Learn a new language via podcasts that are updated regularly.
  • Mango Languages – Over 100 lessons, shown to you in PowerPoint style with interstitial quizzes, to move you through any language without cracking a book.

Multiple Subjects and Miscellaneous

  • OpenLearn – The OpenLearn website gives free access to Open University course materials.  Multiple subjects are covered.
  • Capilano University OpenCourseWare – The Capilano University OpenCourseWare site is a free and open educational resource for faculty, students, and self-learners throughout the world.
  • University of Southern Queensland’s OpenCourseWare – Provides access to free and open educational resources for faculty members, students, and self-learners throughout the world.
  • YouTube EDU – Educational videos on YouTube organized by subject matter.
  • LearnHub Test Prep – Raise your test scores with free practice tests & counseling on various subjects.
  • iTunes U – Hundreds of universities — including Stanford, Yale and MIT — distribute lectures, slide shows, PDFs, films, exhibit tours and audio books through iTunes U.  The Science section alone contains content on topics including agriculture, astronomy, biology, chemistry, physics, ecology and geography.
  • United Nations University OpenCourseWare – Showcases the training and educational programs implemented by the University in a wide range of areas relevant to the work of the United Nations.
  • Brigham Young Independent Study – BYU Independent Study now offers free courses in different areas of study.  These areas include Family History, Family Life, and Religious Scripture Study, Personal Dev elopement, etc.  Use these courses as a starting point for your personal studies or just to add insight to an area of interest.
  • University of Utah OpenCourseWare – Provides access to free and open educational resources for faculty members, students, and self-learners throughout the world.
  • United States Nation Archives – The National Archives and Records Administration (NARA) is the nation’s record keeper.  Valuable records are preserved and are available to you, whether you want to see if they contain clues about your family’s history, need to prove a veteran’s military service, or are researching an historical topic that interests you.
  • Wikiversity – Wikiversity is a Wikimedia Foundation project devoted to learning resources, learning projects, and research for use in all levels, types, and styles of education from pre-school to university, including professional training and informal learning.
  • UMass Boston OpenCourseWare – Various online classes provided free by UMass Boston.
  • About U – A collection of free online educational courses from About.com.
  • Academic Earth – Online degrees and video courses from leading universities.
  • Free-Ed – Clusters of courses that support your preparation for today’s fastest-growing careers and critical academic disciplines.
  • Connexions – A place to view and share educational material made of small knowledge chunks called modules that can be organized as courses, books, reports, etc. Anyone may view or contribute.
  • TED – Motivational and educational lectures from noteworthy professionals around the world.
  • Intute – Provides free access to high quality resources on the Internet. Each resource has been evaluated and categorised by subject specialists based at UK universities.
  • Boston College Front Row – Boston College Front Row is a Web site that offers free access through streaming media to tapes of cultural and scholarly events at Boston College.

Free Books and Reading Recommendations

  • LibraryThing – LibraryThing connects you to other people who are reading what you’re reading and allows you to see which books are popular in various categories of reading.
  • Textbook Revolution – Links to free online textbooks and other educational materials.
  • Book TV – This is the companion site to Book TV on C-Span2. The site holds some current interviews with authors, many past interviews, opinions, reviews, and featured programs through online video.
  • Bookboon – Bookboon provides online textbooks for students in PDF format. The free ebooks can be downloaded without registration. Our books are legal and written exclusively for Bookboon. They are financed by a few in-book ads.
  • Scribd – Scribd, the online document sharing site which supports Word, Excel, PowerPoint, PDF and other popular formats. You can download a document or embed it in your blog or web page.
  • BookYards – BookYards is a web portal in which books, education materials, information, and content will be freely to anyone who has an internet connection.
  • Planet eBook – Free classic literature to download and share.
  • E-Books Directory – Thousands of ebooks on various subjects to download and share.
  • Read Print Library – Free online books library for students, teachers, and the classic enthusiast.GoodReads – Get great book recommendations and keep track of what you want to read.
  • The Online Books Page – University of Pennsylvania database with over 30,000 books.
  • Public Literature – Thousands of familiar classics, children’s books, plays and poems, as well as books by new authors.
  • Full Books – Thousands of full-text nonfiction and fiction books.
  • Many Books – Free fiction and nonfiction ebooks for your PDA, iPod or ebook reader.
  • Get Free Books – Thousands of free ebooks to download.
  • Project Gutenberg – More than 20,000 free books from the first producer of free e-books.
  • Bibliomania – Thousands of classic books, poems, short stories and plays.
  • Classic Reader – Large collection of free classic books, plays, and short stories from more than 300 authors.
  • Bartleby Fiction – Classic anthologies and volumes.
  • The Personal MBA Recommended Reading List – MBA programs don’t have a monopoly on advanced business knowledge: you can teach yourself everything you need to know to succeed in life and at work.  The Personal MBA features the very best business books available, based on thousands of hours of research.
  • Books Should Be Free – Free audio books from the public domain.

Educational Mainstream Broadcast Media

  • BBC Learning – Online learning, support, and advice. This site offers internal and offsite links to a vast amount of materials.
  • Biography – The site holds videos to past interviews and biographies on people in topics that range from Black history to women’s history.
  • Book TV – This is the companion site to Book TV on C-Span2. The site holds some current interviews with authors, many past interviews, opinions, reviews, and featured programs through online video.
  • CBC Archives — Relive Canadian history through thousands of available radio and television clips.
  • Discovery — This channel is home to several different networks that focus on the military, animals, travel, etc. The Discovery site offers a “Video of the Day” from its home page, a separate online video section, and a Discover Education center where teachers can accumulate materials for K-12 teaching. It’s impossible to list all their offerings here, so go discover!
  • History Channel – Visit the Video Gallery for a selection on historical topics. Like the Discovery Channel, this network provides many opportunities for you to gain access to information and reference materials.
  • NOVA — Watch current science shows or browse by category. PBS sponsors this channel.
  • Research Channel — Speakers, researchers and professors present revolutionary thoughts and discoveries. Use their Webstreams and an extensive video-on-demand library for research.
  • Weather Channel – You can learn about weather all over the world, but the Weather Channel also offers dynamic content based upon seasons and special conditions and a special multimedia and education section.

Online Archives

  • American Memory – The Library of Congress provides extensive multimedia offerings on various topics through their American Memory Collection, including their outstanding Built in America project that showcases historical buildings through photographs.
  • Fathom – This archive, provided by Columbia University, offers access to the complete range of free content developed for Fathom by its member institutions. The archives include online learning resources including lectures, articles, interviews, exhibits and seminars.
  • Internet Archive Open Educational Resources – A digital library of Internet sites and other cultural artifacts in digital form.
  • National Archives – Provides primary source materials from NARA along with lesson plans for teaching with those sources.
  • National Climatic Data Center – The NCDC, a division of NOAA, maintains climatic archives, including lists of storms in given counties, and records about global extremes, etc.
  • The Rosetta Project – A global collaboration of language specialists and native speakers building a publicly accessible online archive of all documented human languages.
  • September 11 Digital Archive – This site uses electronic media to collect, preserve, and present the history of the 9/11 attacks.
  • U.S. Census Bureau – If you think the Census Bureau is all about numbers, you might be surprised to learn about their archived photographs, daily radio features, and more available through their Newsroom.

Directories of Open Education

  • Google Scholar – Provides a simple way to broadly search for scholarly literature. From one place, you can search across many disciplines and sources: articles, theses, books, abstracts and court opinions, from academic publishers, professional societies, online repositories, universities and other web sites.
  • OpenCourseWare Consortium – This site provides a portal to search through hundreds of free courses or to add new courses you know about to the database.
  • iBerry – Check out this site for a huge directory of open courseware organized by school and subject matter that can point you in the right direction for any type of learning.
  • Self Made Scholar Directory – Free online directory of web-based classes and courses.
 
Comments Off on Places To Educate Yourself Online For Free

Posted by on September 22, 2014 in Important links, Self-Learning