Wednesday, 19 February 2014

JRebel

JRebel is a JVM plugin that allows Java developers to change code and see the effect without redeploying the application or restarting Tomcat. It supports Spring as well (Spring beans additions, removals etc. on the fly).

( from http://zeroturnaround.com/software/jrebel/trial/ )

What Does JRebel Do?

Instant Reload

See all changes to Java code instantly in the browser. Save and refresh!
The same is true for your other project files.

Ecosystem Support

All major IDEs, application servers, servlet containers and frameworks are
supported out of the box.

Zero Configuration

Start using inside 5 minutes, no docs needed.

Monday, 17 February 2014

ClassicMenu Indicator

Here we go Lads for all of you missing that menu where you can get to everything:


This way you can quickly go through your applications, specially if you are using Unity.

What is ClassicMenu Indicator?

ClassicMenu Indicator is a notification area applet (application indicator) for the top panel of Ubuntu’s Unity desktop environment.

It provides a simple way to get a classic GNOME-style application menu for those who prefer this over the Unity dash menu. Like the classic GNOME menu, it includes Wine games and applications if you have those installed.


Requirements:

  • python-gmenu
  • python-appindicator
  • python-gtk2
  • python-gobject

  • sudo apt-get install python-gmenu python-appindicator python-gtk2 python-gobject

    Download the DEB:

    http://www.florian-diesch.de/software/classicmenu-indicator/dist/classicmenu-indicator_0.08ubuntu2_all.deb

    Enjoy
    ©®

    http://www.florian-diesch.de/software/classicmenu-indicator/

    Saturday, 15 February 2014

    How to get sound working for Skype @ Ubuntu 13.10

    Hi, I just resolved a problem with the sound on Skype, since I installed the last version of Ubuntu, 13.10. Basically there is a bug with libsound2, and Skype had no sound at all, it needs the specific version for i386. The solution is to install it from the repositories instead of the official site.

    What i have done , is to uninstall it,

    sudo apt-get remove skype --purge 

    And uncomment the Ubuntu's Partners repositories.

    deb http://archive.canonical.com/ubuntu saucy partner 
    deb-src http://archive.canonical.com/ubuntu saucy partner 

    Now, install it from repository, it will be Skype 4.2.0.11

    sudo apt-get install skype 

    restart now, or kill pulseaudio and start it, and you should get sound back.

    Friday, 14 February 2014

    Cool front-end technologies we should be inviting to "the party"


    Backbone.js (or other MV* frameworks)

    Backbone is used for building single page architecture applications, and by single page meaning that the entire page, screen, view handling is performed internally by the application inserting/generating DOM content and not by requesting a new HTML page from the server.

    In Backbone concerns are split into views, models and collections - this excerpt from the Backbone.js website explains them eloquently:

    "With Backbone, you represent your data as Models, which can be created, validated, destroyed, and saved to the server. Whenever a UI action causes an attribute of a model to change, the model triggers a "change" event; all the Views that display the model's state can be notified of the change, so that they are able to respond accordingly, re-rendering themselves with the new information. In a finished Backbone app, you don't have to write the glue code that looks into the DOM to find an element with a specific id, and update the HTML manually — when the model changes, the views simply update themselves."

    You don't store and query the DOM for your data this means, everything happens directly from your models, so that working with JSON and REST is the preferred method of working with the server.

    Examples:


    http://www.usatoday.com/
    https://soundcloud.com/
    https://www.easel.io/
    http://earth.nullschool.net/
    http://www.jolicloud.com/

    Benefits:

    • Far more organised and scalable!
    • Decouples front and back end development - a lot of the features/functionality of the Backbone.js client application can be developed in isolation from the server, using mock JSON obects. This means environment set-up is less of an issue. When problems occur on an env. back-end devs won't waste time fixing, front/back-end aren't so dependent on what each other is working on.
    • The client / server application paradigm makes testing easier. Backbone.js plays nice with unit testing frameworks Qunit, Jasmine and SinonJS - TDD on JavaScript
    • Requesting chunks of HTML from the server to replace blocks of the page is over, instead, when a change occurs on a model, a view listening to state changes will automatically re-render that information where ever it exists on the page and target the change to the exact DOM node on the page if necessary - no page reloads to update the view state!
    • All data on the page is in sync. and consistent
    • User experience is much slicker - interface is much more responsive, page changes and fragment loading is handled gracefully
    • Page state is handled via URI hashes or HTML5 push state - A router object listens to URL changes and handles state changes via method calls. Behavioural analytic tools like Piwik and GA integrate well
    • Back-end developers would look at views as JSON outputers, no need to worry about handling JSPs and assigning ActionBean properties
    • Backbone.js using technologies like Require.js (AMD) encourages composite development. This makes scaling JS applications, adding and changing functionality is much easier

    Asynchronous Module Definitions - Require.js

    Require.js allows JavaScript code to be separated into self-contained modules and then intelligently handles a module's dependencies.

    Sprinkling Asset.load calls down the page in no particular order is bad practice! How do you explicitly handle dependencies? The only way to do it is by changing the order of calls in the document and that isn't practical or explicit. Instead Require.js uses one single entry point on the page, one single <script> tag in the head which loads the Require.js library, then starts your application and loads the define module which starts your application.

    Your code is then split up into modules where the dependencies of that module are explicitly called at the top. The global window object is not polluted!

    When deployed into production, there is a build process that bundles modules up into one or two files so that 20 HTTP file requests become 1.

    http://requirejs.org/

    Handlebars.js - templating

    Handlebars is a templating framework where templates are compiled in the browser. It uses syntax based on Mustache and comes with logic for block expressions, conditions, iterating over collections and an assortment of helpers which are customisable.

    Working on Virgin Money i've witnessed some pretty crazy practice where UI is generated by calling the Mootools Element method and then layered up until the desired structure of that dynamically generated DOM content is created. The code to do this was complicated, ugly and not maintainable. A Handlebars template is straight forward, intuitive and highly maintainable.

    http://handlebarsjs.com/

    Bootrap 3.0

    Bootstrap is a UI toolkit full of common UI components and best practice patterns for HTML/CSS development - it uses a consistent naming standard/conventions so multiple devs working on the same CSS document making changes don't get carried away with their own quirky, esoteric way of labelling - they have to conform to a standard that everyone will intuitively understand and adhere to. This means that theming is very easy to achieve and ultimately everything is consistent. Plus an awful lot of boiler plate code is scrapped in the process by using and reusing common components.

    http://getbootstrap.com/

    LESS / SASS - CSS pre-compilers

    Extends CSS to allow nested rules, mix-in functions, expressions and variables within CSS. This then compiles into standard CSS when deployed into production, and in development a JS plugin compiles in the browser.

    http://lesscss.org/
    http://sass-lang.com/

    Server Sent Events and WebSockets

    This is just cool more than anything else. These technologies allow your interface to be essentially real time. WebSockets aren't HTTP! It's not about request, response, die. Client and server establish one single connection for the entire session, then exchange data via messages which are two way. Any update to a database or other event on the server can be immediately be published as an event to the subscribed client. You can simulate this using "HTTP long polling", where a client makes an HTTP call to a server, and only when an event occurs will the server send a response to that call, the client makes an another long poll and continues in that fashion repeatedly - it's quite inefficient though.

    http://socket.io/ - this is just for Node.js - not sure how this would work with Tomcat/JBoss in Java to be honest
    http://stackoverflow.com/questions/11077857/what-are-long-polling-websockets-server-sent-events-sse-and-comet
    http://stackoverflow.com/questions/5195452/websockets-vs-server-sent-events-eventsource

    Thursday, 13 February 2014

    Need a Home Server, Look no Further - AMAHI

    AMAHI Home Server



    http://www.amahi.org/

    So, why would you need a Home Server?

    In the modern home, there are sometimes a lot of media and computing devices. At one point last year, my home network consisted of:



    1. A Console (XBOX or PS3/4)
    2. Minumum of a Laptop
    3. A Desktop PC
    4. Mobile Phone
    5. A PAD (iPad or Android Tablet)
    6. And friends that come around wanting to use your connection for free.

    They all need to access shared media (movies, music and such) and all could benefit from 
    a backup every now and again. 

    A Home server can provide:
    • A central place to store files and media and well as stream those on your home network.
    • A central backup location for computers.
    • Printer sharing.
    • And More (http://www.amahi.org/gallery)
    Best of all is GNU/Linux Server that comes on two flavours (Ubuntu and Fedora) - https://wiki.amahi.org/index.php/Main_Page)



    By the way Jose, the founder is a Spanish Guy called Carlos Puchol (https://www.amahi.org/team)

    Get that rusty all Box out of the cupboard an put it to use.

    Cheers
    ©®

    Wednesday, 12 February 2014

    Barkeep

    Who is the Barkeep? Barkeep is "the friendly code review system" — a fast, fun way to review code. Engineering organizations can use it to keep the quality bar high. With it you can watch commits made to any Git repository, see diffs, write comments, and have those comments emailed to your fellow committers. getbarkeep.org

    Monday, 10 February 2014

    Developers! Start Rolling your VirtualBoxes

    TurnKey Linux - Virtual Appliance Library

    The Turnkey Linux Virtual Appliance Library is an open source project developing a free virtual appliance library of pre-packaged servers based on Debian (previous versions based on Ubuntu) that can be deployed on virtual machines, in cloud computing infrastructures or installed in physical computers.




    Bitnami

    Bitnami is an open source project that produces open source installers or software packages for web applications and development stacks as well as virtual appliances. Bitnami is sponsored by Bitrock, a company founded in 2003 in Seville, Spain by Daniel Lopez Ridruejo. Bitnami stacks are used for installing software on Linux, Windows, Mac OS X and Solaris.


    ENJOY!

    References:

    Saturday, 8 February 2014

    Hello World

    Hello, this is an interesting article about how to choose between a responsive web or a Native App. Basically they say it depends how much money you have and you want to spend. In the end, it is all about Money!!! Responsive design or mobile app???