private bower components, a simple solution

Bower is an amazing solution to bring structure into javascript based projects. Without bower the reusing of components on git repositories would be a mess. During my current project I searched for a solution to integrate private bower based components into my closed source project. All I had was a private git server with the option to create infinite repositories.

 

 

When you google you find many options to setup a separate bower registry which means the backend behind bower. This is very useful if you want to search in a database for a component. This approach also helps bigger organisations to allow everybody to publish a component and the rest of the research and development department should be able to find it.

In our case the situation was more simple. We are a very small team and everybody is able to see our official git repositories on our centralized git server. Only repositories on this server are allowed to be used in customer facing projects. There are many private git repositories but these do not contain public code. Coming from this situation we wanted a solution which comes without an extra server component.

Searching again made me sure that it should be possible to add a git url into the bower.json file. Our git server is configured for the https protocol only and for this just copying the repository url did not work. After checking out the bower code base a solution was on the horizon:

git+https://YOURGITREPO

The important thing here, git+https. This gives the bower code the hint to use the git protocol over http. Just using https:// would not work because bower thinks it’s a http based directory download.

Small teams should be able to work well with this solution, especially when the git server is part of a team management system which contains wiki and document components as well.

BYOD = Bring-Your-Own-Device or Bring-Your-Own-Disaster? Part1

Good to read if you are fighting with BYOD or COPE

MyWorkspace by Matrix42

68c55855cebcab0372f4e1f95e90d2f5

In my last blog about the evolution of End-User Computing I briefly touched on the “Consumerization of IT” challenge. In this blog I want to drill down into the Bring -Your-Own-Device (BYOD) part of Consumerization. IT usually does not like the idea of employees accessing sensitive corporate apps and data on a device that is not owned nor controlled by IT. Where the user can easily store company data in his personal cloud without letting the organization know. The BYOD trend is often perceived as dangerous from IT. But is it really?

BYOD is a hot topic for 2-3 years and I had a lot of strategic and technical discussion with customers about it. There is still a lot of buzz around it and customers currently implement tons of processes and tools to address the challenge. Before I answer if I believe the “D” in BYOD stands for Disaster or…

View original post 1,318 more words

Technologies of End-User-Computing – Evolution to the sky

Check out our new workspace aggregator blog 🙂

MyWorkspace by Matrix42

I’m an architect and so I spend the last 10 years to find out what my product managers want to have next to keep the product stable and changeable at the same time. So I will do that in this blog as well and try to support Oliver and his product visions with some more technical information and outlooks  on what drives the End-User-Computing space into the next decade from the architects and developers perspective 🙂

evolution-to-the-sky

In the good old days IT departments started managing infrastructures and devices. The enterprise was able to define a 1:1 relationship between user and device. Does this management paradigm fit to our new world today? We are in 2013, driven by mobile & virtualisation paradigms changes. The end user is no more using just one device but is expecting to consume information from any device on any place all over the world. Today devices become…

View original post 1,299 more words

Ensure two div-elements will get the same height (jquery solution)

Currently I’m working on a small web application with the requirement to bring the height of two side-by-side div elements on the same level. The content of this two elements are different and the width depends on the browser window. This means the div content floats in the elements and the height depends on the height of the inner content. I tried to find a working solution based on CSS only. At the end I want to share a jquery based solution which works well for me

  1. The following markup can be found in many web apps
    https://gist.github.com/3965331/77a38858b214ae71c2cf521fa3ee0c0048e1bca8
  2. First I added  jquery and code to identify the div with the maximum height. After that this height will be set at the second div element as well
    https://gist.github.com/3965331/1fbbfbbd2a3116ad48ed03f874695d9bfb4d7589
  3. Finally moving out the code into a separate function helps to reuse this code in other apps as well. It could als be a good idea to build a small jquery plugin
    https://gist.github.com/3965331/81308dec45be018cd4f29220460ee6f770fa5005

 

 

HockeyApp your Rails App

I’m an excited user of HockeyApp and we are really successfully with collecting crash dumps and deploying our apps to beta users. Since I’m working on different rails backends I’m wondering why not using the same infrastructure for collection crash dumps as well. Based on the amazing airbrake gem I was able to hack an extension which redirect the crash report directly to HockeyApp. Check this out and feel free to give feedback, open issues or fork the project:

https://github.com/dei79/hockeybrake

Happy to get feedback 🙂

git-tf for Homebrew

A couple weeks ago Microsoft released a tool chain called git-tf. It’s a great working git-TFS bridge which is working much better then the old SVN-Bridge. The best at all now active component on the TFS server needs to be installed. Check out the blog comment and the project on codeplex:

http://gittf.codeplex.com/

http://www.infoq.com/news/2012/08/git-tf_oss

I’m using this tool for our MAC OS X Development and it’s awesome. To simplify the setup of this java based implementation I created a Homebrew Formula and created a pull request for merging  into the master. Cross the fingers and vote for it 🙂

https://github.com/mxcl/homebrew/pull/14423

If you want to use my fork in your brew installation pleas use the following command line

cd `brew --prefix`
git remote add git-tf-fork https://github.com/dei79/homebrew.git
git pull git-tf-fork master
brew install git-tf

Comments and contributions to this Homebrow Formula ar welcome

How to build a SaaS offering – Part 1

During the last weeks and month I had the opportunity to get an idea how different companies (Start-Ups and existing player) realized their software as a service offerings. In a series of blogs posts I would like to share technical ideas and best practices to realize similar projects. Let’s start with a couple of assumptions:

  • Most software as a service offerings are web based applications based on HTML, CSS and JavaScript (I will call them HTML5 apps)
  • Most software as a service offerings are using a specific web framework which is responsible for rendering the application, e.g. PHP, Ruby on Rails or ASP.NET MVC
  • Most software as a service offerings are implementing a multitenant ready backend (shared or isolated data storage)
  • Most software as a service offerings want to follow the paradigm “pay as you go” for their infrastructure

In the first part of this blog series I would like to focus on the “pay as you go” paradigm, which allows to scale out  your infrastructure just as you need (and of course to shrink if necessary) – be elastic 🙂

Traditional Web-Application-Architecture

The good news is, many web applications are following the same main architecture shown below:

The system offers a storage backend for relational data (SQL or NO-SQL Database) and a way to store mass data (files, attachents, photos,….). On top of the storage backend the web worker is responsible for processing all user request in the system (complex applications have also background worker, of course). The load-balancer in front of the system delegates requests to the next free worker server.

Step a way from this picture and think about the requirements we have on the different roles and layers of our system:

  • Storage Backend
    • Highly Available
    • Reliable with support for backup and restore mechanisms
    • Fast / Reactive
  • Web-Worker (Computer Nodes)
    • Independent from each other
    • High processing rate
    • Stateless
  • Load-Balancer
    • SSL Manager
    • Highly Available

The components of an Infrastructure as a Service Provider

Today, Amazon AWS is not the exclusive IaaS provider but is one with a sophisticated infrastructure. I’m using Amazon AWS in these articles because you have the option to try it out for free, right now. Amazon offers a Free-Tier-Program for all new customers without any fee.

Let’s have a look what Amazon offers:

  • Storage Backend
    • Amazon S3 – A highly scalable and distributed storage system for mass data, which allows storing nearly everything behind a unique key. Every element is accessible through a RESTful web service.
    • Amazon RDS – To make it simple, it’s MySQL for the Cloud. Amazon offers a multi site, sharded database system, which allows to create as many databases as you need.
  • Web-Worker
    • Amazon EC2 – The elastic cloud (EC2) allows to get virtual machines on demand as needed. This machines are provisioned based on an existing AMI (Amazone Machine Image) and will be provided immediately.
    • Amazon AutoScaling – The AutoScaling service allows to add new EC2 nodes into your cluster automatically and of course to reduce the amount of cluster of necessary –  be elastic J
  • Load Balancer
    • Amazon ELB – The Elastic Load Balancer is responsible for receiving all HTTP(S) request and redirects the request to a free node in the cluster. The ELB is also highly integrated in the AutoScaling service so  if needed the cluster behind the ELB can be expanded automatically.

Recap for our Web-Application-Architecture

With the new knowledge about the different components it’s easy to generate a new picture of the system (and I know there are many other ways to realize a solution but for me personally this solutions fits best):

And now?

In the next parts of this series I would like to cover some more detailed topics, e.g.

  • Build a Ruby on Rails application which relies on Amazon S3 and Amazon RDS as backend storage system
  • Bake an AMI for the EC2 nodes and handle the application deployment and upgrade scenarios
  • Rolling out a primary infrastructure with a minimum set on servers, load balancers and storage backends
  • Implement AutoScaling in detail to handle the first customer storm J
  • Calculate the CAPEX and OPEX for a SaaS offering