before you lock yourself in with Microsoft MVC or WebForms

 All, Technology  Comments Off on before you lock yourself in with Microsoft MVC or WebForms
Sep 272013
 

For Software development, currently one of the ‘in things’ is the MVC coding pattern (along with it’s related counterparts MVP and other variations). Event Driven patterns are also quite popular and there are just as many good Event Driven frameworks on the net as there are MVC to satisfy every architects needs.

These days everyone including us are pushing their own development frameworks or coding standards. Microsoft is one of the dominant vendors in this area and they produce some very good development environments (Visual Studio and their Express counterparts). They also preach their MVC and WebForms (event driven) frameworks and these are quite popular if you check your local Job ads. They achieve what they were created to do and are constantly improving with each version – however there is a serious downside to how they are architected.

Microsoft’s MVC and WebForms frameworks have their front end (which runs in a browser) so tightly coupled with their back end (which typically runs on a server) they are difficult if not impossible to separate. For a business that develops in-house software only or wants to call themselve’s ‘a Microsoft House’ – some of the time it may not matter, however, time and time again, I’ve walked into a business and they have pondered how to adapt their .Net MVC and WebForm applications to work on non-Windows servers. Now, if they were to sit back and evaluate every available framework before they started their project, or perhaps just made some careful architectural decisions it may not have been an issue – and to be fair no-one can predict or cater for every future requirement or product direction.

Something to think about when choosing the right framework for your projects that you may not have already. How easy is it to replace the front end without the back end and vice versa? Can multiple backend’s be supported concurrently? Do you only want to install/host your software on a Windows server? What about Linux, OSX or Android? Android? Why would you want to host your web app on Android? With the right choice of technologies your web app will run hosted on android with no additional development, this will give your application the ability to work out of range of the internet – of course you could spend additional effort and develop a custom android solution, but then your customers are going to complain about lack of functionality… or you are going to add another 33% or more to your budget assuming you can share the same back end for two different clients?

As previously mentioned Microsoft produce some very good development environments and I regularly use Visual Studio by choice, actually it rocks! However using Visual Studio and C# (or VB.Net) doesn’t negate structuring your product in a way that gives you the flexibility you need/should have or the performance your customer’s expect. Structure your product right and you won’t have tied your entire application (front and back ends) to Microsoft for the foreseeable future.

tip: jQuery is a very good semi-low level library that I like to use in most projects and even Visual Studio itself uses to richen your product’s GUI experience. Interestingly, jQuery provides out of the box, much of the functionality you require to create in a very short time (less than a day) your very own nice, structured, flexible and maintainable Event Driven form pattern with loose coupling between the front and backends. You can of course with a little more time create a losely coupled MVC if that’s your preference.

JC

Seven more ways Mitsukibo’s new Web App framework “RapidOS” can add value to your business

 All, Business, Technology  Comments Off on Seven more ways Mitsukibo’s new Web App framework “RapidOS” can add value to your business
Sep 092013
 

Just a quick followup of 10 ways Mitsukibo’s new Web App framework “RapidOS” can add value to your business

11. Extensibility:

With its modular design, RapidOS is easily extensible allowing additional functionality to be added easily as your business grows.

12. B2B/Integration:

B2B Internet Services as well as in-house software integration facilities are already built into RapidOS allowing a greater choice in how you can provide your staff and customer services.

13. Longevity:

An important factor of any project often overlooked is the planned lifespan of a project when making technology choices on which to base it. RapidOS uses current mainstream marketplace technologies, so you should be able to look back in a decade’s time with a smile.

14. Resourcing:

Because of the mainstream technology choices for which RapidOS is based upon it is easy for you to find those additional development resources as you require.

15. Hosting:

RapidOS gives you a choice second to none of hosting options. Host it on a server or locally on any of the following – Linux, Windows, OSX or even on Android.

16. Supported:

We provide friendy ongoing support to customers RapidOS and RapidOS based products.

17. Future:

With the investment we have already put into RapidOS, we continually research and invest back into the product providing our customers with regular enhancements, bug fixes and if they ever arise, timely security patches.

JC

UX

 All, Rants, Technology  Comments Off on UX
Jul 292013
 

UX (User Experience) is a term that’s thrown around left, right and centre these days with little thought to what it means.
I guess you could look up the World’s source of truth – Wikipedia and you’d quickly find what the community at large generally argues UX to be.  Mostly UX related articles talk mostly about emotion and look and feel (they tend to ignore the usability part feel bit for most part – and few mention it).  If you ignore usability you will soon get angry or aggravated users who won’t want to use your system.  A system that looks great but works like shit, is less valuable than a system that works great that looks shit, however its important to strike a good balance between the two.

I had the luxury of working with a client to perform a UX survey  of over 5000 of their users and what was interesting, the majority of feedback we got went somewhat against current market trends. They didn’t disagree that products shouldn’t look great but they didn’t like the fact that most Web Apps were slow, cumbersome and just plain tedious to use when performing everday tasks.

Our core audience were divided into two main categories of users. The first category which made up about 1300 users, were the ones that used the system daily but irregularly throughout the day to perform minor tasks. Generally their volume of data was low and they were more focused at doing a specific one-off task for the day before leaving the terminal.

The rest (the bulk) of the users where larger volume users who typically spent a great portion of their day, or long periods during the day entering data among other related tasks.

Interestingly the most requested feature of the test system was to have the ability to open and work on more than one form at a time.  A close second was the ability to print directly to a printer including from mobile devices and thirdly, friendly keyboard control was requested. Then followed a variety of adhoc features and functions.

In looking at the market for such systems and frameworks that provided as a minimum, the most requested features it became quite obvious that there weren’t a lot of choices – from our perspective we wanted something fast, secure and reliable (these btw were requested but not among the top 3).  Probably the closest we found was a commercial product called bindows which does a pretty good job of what it set out to do – that is provide a Windows look and feel for the Web App.  After some consideration of multiple open source frameworks (including Microsoft’s MVC, Backbone.js, CakePHP, Dojo, ExtJS, FuelPHP, jQuery, MooTools, Node.js, Twitter Bootstrap, Yii, YUI, Zend and some others), tools and technologies we chose the following for which to start our project:

– JavaScript + jQuery as they are good and established client-side technologies that could easily be expanded as required in addition to being able to find additional resources easily.

– PHP + C# for similar reasons than the JavaScript + jQuery options. In fact we chose PHP as our priority for server-side technology as it has a lot more hosting options – in particular with 3rd party hosts and on Android devices. Of course we have also proven we can switch the server to C# with little impact to the client.

– RapidOS lots of hard effort was put into this custom framework using plain JavaScript and jQuery to come up with something very solid, reliable, fast, flexible, secure and easily maintainable set of coding patterns in which to quickly develop our apps.

Our first product using the RapidOS framework extensively is RapidFMS and so far our clients love it.

JC

Fiddling with my Lint, Minification and Closure

 All, Technology  Comments Off on Fiddling with my Lint, Minification and Closure
Jun 172013
 

Fiddling with my Lint, Minification and Closure

Here are a few tools that more JavaScript developers should be using.

Fiddling:

A cool little tool for experimenting with JavaScript is JSFiddle.net. It provides a very good online tool for which you can create isolated scenarios in a sandbox with little or no setup or just to run little code fragments and share them with the community.

Lint:

I cannot believe how many developers don’t know of JavaScript Lint. JavaScript Lint is probably the most useful tool outside of a browser for JavaScript developers and if you haven’t used it until now, it’s time you start using it. Like most interpreted languages, JavaScript syntax errors are not picked up until it’s time to execute the code. Unlike most interpreted languages, the interpreters for JavaScript within the browsers don’t all behave the same when it comes to syntax errors. Now the kicker – 99% of JavaScript syntax errors can be picked up by a tool before you test and deploy your code and JavaScript Lint is one such tool that does this work for you. In fact, with very few exceptions (we’ll get to that later), there is NO reason to deploy a piece of code that is full of Lint errors. Available in both a command line tool which you can batch your entire project and an online tool, JavaScript lint will take your source file, and give you a report on which lines are wrong or good coding suggestions which should be adhered to.

Minification & Obfuscation:

Another type of tool that is often used by JavaScript developers is a minifier or compression tool. Minifiers originally were designed to reduce the file size of JavaScript code modules to both improve download speeds (less to download) and increase performance (reduce parsing overheads). These tools can also have the positive side effect of making your code some-what obfuscated (making it difficult for other’s to read your code – we might cover obfuscation another day). A quick search of Google will result in a whole lot of choices for both online and offline minification or compression tools.

Closure:

Google’s Closure Compiler is a free tool by Google that isn’t used as often as it should be for JavaScript-based projects.

What Google’s Closure Compiler is, is a JavaScript compiler that generates JavaScript. This sounds odd – but in practice it is a unique and extremely useful development tool.
Compilers these days can generate very good code and often improve on the code of developers. Based on this bold statement, a compiler that can take a working but not as efficient as it could be code file from a developer might be able to turn it into a better code file. This is what Google’s Closure Compiler attempts to do and it does a pretty descent job at it. It doesn’t mean you should stop trying to be a better developer, but a good developer should adopt good tools where possible to make yourself an even better developer.

Here are a couple of examples of the Closure Compiler in action. I have specifically kept the original identifiers to single letters to highlight the logic optimisation, however if the identifiers were long – they would have been minified in the process. I have also performed a compression of the same source files using the Online JavaScript Compression tool so you can see the difference in the way they work.

Example 1 Original Code:

function g()
{
t = this;

this.h = function()
{
return ‘Hello’;
};

this.w = function()
{
return ‘World’;
};

alert(t.h() + ‘, ‘ + t.w() + ‘!’);
}

g();

Example 1 Closure Compiled Code:

function g(){t=this;this.h=function(){return”Hello”};this.w=function(){return”World”};alert(t.h()+”, “+t.w()+”!”)}g();

Example 1 Online Compression Tool Compressed Code:

function g(){t=this;this.h=function(){return”Hello”};this.w=function(){return”World”};alert(t.h()+”, “+t.w()+”!”)}g()

Example 1 Closure Compiled Code + Online Compression Tool Compressed Code:

function g(){t=this;this.h=function(){return”Hello”};this.w=function(){return”World”};alert(t.h()+”, “+t.w()+”!”)}g()

Example 2 Original Code:

function g()
{
t = this;

function h()
{
return ‘Hello’;
}

function w()
{
return ‘World’;
}

alert(h() + ‘, ‘ + w() + ‘!’);
}

g();

Example 2 Closure Compiled Code:

function g(){t=this;alert(“Hello, World!”)}g();

Example 2 Online Compression Tool Compressed Code:

function g(){function e(){return”Hello”}function n(){return”World”}t=this;alert(e()+”, “+n()+”!”)}g()

Example 2 Closure Compiled Code + Online Compression Tool Compressed Code:

function g(){t=this;alert(“Hello, World!”)}g()

Comparing the output of both examples, you can see how certain coding constructs (in particular here local functions vs public functions) are treated differently by the Closure Compiler – the latter having only local functions was able to be compiled to be a smaller file than the former. This is because being local functions, the compiler knows that there can be no other code relying on this (keeping reflection type techniques out of the equasion). In the case of a straight compression tool, it does it’s best – in fact in the first example we can see both tools did a very similar job. Both tools actually complement eachother.

Conslusion:

Interestingly the output of the Closure Compiler and minification tools give a lot of warnings for Lint – however, that is because Lint provides recommendations for best coding practices. This isn’t to say that Closure or minification cannot be the cause of your code breakage (they can), but – performing a Lint, Obfuscation, Closure, and Minification in that order before TESTING your deployable product will yield very good results. Of course you should at least use Lint to rid your code of human error if you don’t use the other tools.

JS Fiddle: http://jsfiddle.net/

JavaScript Lint: http://www.javascriptlint.com/
Online JavaScript Lint Tool: http://www.javascriptlint.com/online_lint.php

Online Javascript Compression tool: http://jscompress.com/

Google’s Closure Compiler: https://developers.google.com/closure/compiler/
Online Closure Compliler tool: http://closure-compiler.appspot.com/home

JC

 

Job Search Websites Top 3 likes and Top 3 dislikes

 All, Rants  Comments Off on Job Search Websites Top 3 likes and Top 3 dislikes
Jun 042013
 

Which job search website do you use most and if a new entry came to the market, what are your top 3 must have requirements and also your top 3 dislikes of existing sites?  Please state whether you are an employer, recruiter or job seeker.

http://webrenovators.com.au/survey.php#JS0001-Which%20job%20search%20website%20do%20you%20use%20most%20and%20if%20a%20new%20entry%20came%20to%20the%20market%2C%20what%20are%20your%20top%203%20must%20have%20requirements%20and%20also%20your%20top%203%20dislikes%20of%20existing%20sites%3F%20%20Please%20state%20whether%20you%20are%20an%20employer%2C%20recruiter%20or%20job%20seeker.

JC

10 ways Mitsukibo’s new Web App framework “RapidOS” can add value to your business

 All, Business, Technology  Comments Off on 10 ways Mitsukibo’s new Web App framework “RapidOS” can add value to your business
May 072013
 

When you development a new Web App, it is common to choose one of the many frameworks available so you can focus attention on the business functions rather than the technical and fast-track your product. With so many frameworks available it can be a daunting task to research each and every one of them to ensure they are up to the task.  Even if you have the time to perform such research, should you want to do something different, it can be a sizable task in itself to develop your own. Many businesses choose to skip any real architectural design choices and end up with slow barely maintainable apps with a higher cost of ownership than should have been .

Here are 10 ways which Mitsukibo’s new Web App framework “RapidOS” can add value to your business.

1. Development:

Web Apps can be developed and brought to market quicker enabling the other benefits to be brought forward sooner as well as lowering costs and reducing the risks of long running projects.

2. Efficiency:

Users whether they are clients, staff or management can work more efficiently by working with multiple forms and documents at the same time. This multitasking capability enables a continuous flow of work with less interruption.

3. Security:

Your important data is secured from exploitation giving you peace of mind. Security was part of the systems design from the start and will remain important for the life of the system.

4. Performance:

Users will wait less. RapidOS is faster and smarter! Intelligent caching and lower network traffic than your traditional Web App enables high performance even over a 3G mobile network. Background processing let’s larger tasks run without user interruption.

5. Multiplatform:

Your users expect software to run on their device. With out-of-the-box support for Windows, OSX, Linux, Android and IOS you will have catered for almost everyone.

6. Printing:

Most business applications have the need to print, be it reports, labels or charts. RapidOS has inbuilt printing services including the ability to print to locally attached printers, over a network, over the internet and even from mobile devices using Android and IOS.

7. Charting:

We found charting was so desirable to our clients we built charting services into RapidOS. You can display multiple charts of multiple styles, report on them or just watch them update in near real-time.

8. Branding:

Branding is your businesses identity and its important for client-facing and even sometimes internal-facing Apps that they are branded for your business.

9. Accessibility:

To make your Web Apps more accessible to people with physical impairments, voice recognition facilities are provided to allow speech to text conversion as well as total application control.

10. Flexibility:

You are not tied to any particular look and feel, in fact almost any look and feel can be created with RapidOS gaining instantly the security, performance and platform independence. Want RapidOS to power your conventional looking website but with greater speed? Not a problem.

Contact Mitsukibo today to find out how your new application or an upgraded legacy application could benefit from using RapidOS.

JC