Kostenlose T-Shirts – Ein erfolgreiches Werkzeug zur Kundenbindung

Jeder freut sich über Geschenke. Noch größer ist die Freude, wenn man diese Geschenke völlig unerwartet bekommt.

Haben Sie schon einmal darüber nachgedacht Ihren Kunden eine Freude zu machen und sich damit für deren Treue zu bedanken? Ob kleines oder großes Unternehmen, kostenlose T-Shirts sind eine sehr interessante Möglichkeit dies zu tun. Die Vorteile liegen auf der Hand: Ihr Kunde erhält nicht nur ein unerwartetes Geschenk von Ihnen und assoziiert Ihr Unternehmen daraufhin mit einem positiven Erlebnis; im besten Fall gefällt ihm das T-Shirt sogar richtig gut, sodass er es in der Öffentlichkeit trägt und damit für Sie zu einem kostenlosen Werbeträger wird!

Wenn diese Person dann auch noch Social Media Affin ist und sogar einen Blog betreibt, stehen die Chancen gut, dass der oder die Beschenkte im Internet seinen Freunden davon berichtet.

Den selben Effekt werden Sie mit einer herkömmlichen Werbeanzeige oder Onlinewerbung nicht erzielen. Wenn man nun noch die dazu anfallenden Kosten vergleicht, wird sehr schnell deutlich, wie interessant die beschriebene Methode der Kundenbindung ist, die gleichzeitig viele Neukunden bringen kann, die schon vor ihrem ersten Kontakt mit Ihnen eine positive Meinung über Sie haben!

Voraussetzung dafür sind aber nicht nur qualitativ hochwertige Textilien sondern auch gut gestaltete T-Shirts, die nicht wie eine einzige Werbefläche aussehen. Denn schließlich sollen Ihre Kunden das T-Shirt auch von sich aus tragen wollen! Ein Weg um dies zu erreichen wäre z.B. ein Design-Wettbewerb, für den Interessierte Vorschläge einreichen dürfen.

Welchen positiven Effekt eine solche T-Shirt-Kampagne haben kann, zeigt das Beispiel von MailChimp, einem Anbieter für Newsletter-Marketing Lösungen. Auch dort waren die oben beschriebenen Reaktionen der beschenkten Kunden zu beobachten.

Einen hilfreichen Artikel zum Thema “How To Make Great Brand Merchandise” finden Sie hier.

Neuausrichtung des Blogs

Bisher war dieser Blog vor allem an Entwickler und Programmierer gerichtet und in englischer Sprache verfasst. Ab sofort wird sich dies jedoch ändern – wir werden nun vermehrt über Themen der Bereiche Social Media, Marketing, Mobile, Web-Trends, und natürlich unsere Produkte berichten. Zusätzlich verabschieden wir uns von der englischen Sprache und schreiben nun auf Deutsch.

Wir hoffen damit einen noch breiteren Interessentenkreis zu bedienen und wünschen Ihnen viel Freude am lesen!

How To Create Your Own Contao Module

Contao is a wonderful tool for creating professional websites. We already know that. But there’s one major flaw which can easily destroy all the fun you had with Contao so far:
That really awful documentation for developers.

If you want to develop a custom module, you’re pretty much left alone. The official ressources (http://www.contao.org/en/developers-guide.html) don’t show the complete creation process, which is highly needed in my opinion.

To help you out a little bit, I created a very simple slideshow module. Its really nothing special, but should show you whats happening behind the scenes.

Feel free to do whatever you want with this piece of code, and if you have any questions, don’t hesitate to drop a comment.

Download

How To Improve Your Workplace Efficiency

Working with many people on a big project can be though. Asana solves this problem for you. The startup founded by Facebook co-founder Dustin Moskovitz and fellow-Facebooker Justin Rosenstein, develops collaborative task and project management software and managed to do what many others have unsuccessfully tried and spent millions of dollars on: They improved the way how people collaborate on projects and work in teams.

Asana Screenshot

Contrary to other big group collaboration tools for enterprises, Asana is free and will stay free of charge. It reduces the amount of work you have to do in order to keep everyone on the same project status. The app makes it extremely easy to add new tasks to a project for example. Everything you have to do is simply typing in the text on a blank canvas and hitting return on your keyboard. After that you get the chance to assign this task to certain people, add notes, set a due date or attach a file. After that you and your assigned co-workers are able to comment on this task. This way you’ll keep updated on the progress of your colleagues without having to bother them by asking about it.

Opposed to many other collaboration tools, Asana is purpose-built for the web and is very well structured so that you’ll still be able to keep up with the developments of the projects if they grow and you have many comments under the various tasks. Your news feed will notify you, when a task you’re involved with is completed, without someone needing to separately remember you by email. Working with Asana will decrease your email usage and save you a lot of time. Besides of that, it is actually quite fun to work with.

You’ll find two videos with a quick tour trough Asana right here:

Intro to Asana
Using Asana for Individual Task Management

Small Mootools Twitter Class

For a current project, we had to implement a custom Twitter widget. After some time searching the web, I found this article on David Walsh’s Blog. Even if its a bit outdated, it did the trick.

Based on the old class, I present the updated and extendend version!

var TwitterWidget = new Class({

	Implements: [Options, Events],

	options: {
		count: 3,
		insertElement: null,
		actionSeparator: '<span class=\"tweet_actions_separator\">.</span>',
		dateFormat: '%e %b'
	},

	initialize: function(username, options) {
		this.setOptions(options);
		this.username = username;
	},

	getTweets: function() {
		new Request.JSONP({
			url: 'http://api.twitter.com/1/statuses/user_timeline.json',
			data: {
				screen_name: this.username,
				count: this.options.count
			},
			onComplete: function(data) {
				data.each(function(tweet) {
					tweet.text = this.linkify(tweet.text);
				}, this);
				this.fireEvent('fetchComplete', [data]);
				this.insertTweets(data, this.options.insertElement);
			}.bind(this)
		}).send();
		return this;
	},

	linkify: function(tweet) {
		//totally stolen from Jeremy Parrish / David Walsh
		return tweet.replace(/(https?:\/\/\S+)/gi,'<a href="$1">$1</a>')
					.replace(/(^|\s)@(\w+)/g,'$1<a href="https://twitter.com/$2">@$2</a>')
					.replace(/(^|\s)#(\w+)/g,'$1<a href="https://search.twitter.com/search?q=%23$2">#$2</a>');
	},

	insertTweets: function(tweets, element) {
		if (element == null) {return;}
		tweets.each(function(tweet) {
			var tweetDate = Date.parse(tweet.created_at)
			var tweetContainer = new Element('div', {
				html: '<span>' + tweet.text + '</span>',
				'class': 'tweet'
			});
			new Element('div', {
				html: '<a href=\"https://twitter.com/' + this.username + '/status/' + tweet.id_str + '\">' +
					 tweetDate.format(this.options.dateFormat) + '</a>' +
					 this.options.actionSeparator +
					 '<a href=\"https://twitter.com/intent/tweet?in_reply_to=' + tweet.id_str + '\">reply</a>' +
					 this.options.actionSeparator +
					 '<a href=\"https://twitter.com/intent/retweet?tweet_id=' + tweet.id_str + '\">retweet</a>' +
					 this.options.actionSeparator +
					 '<a href=\"https://twitter.com/intent/favorite?tweet_id=' + tweet.id_str + '\">favorite</a>',
				'class': 'tweet_actions'
			}).inject(tweetContainer);
			tweetContainer.inject(element);
		}, this);
		this.fireEvent('insertComplete');
	}

});

Usage

Let’s say you have the following HTML snippet,

<div id="twitter_container">
</div>

and you want your recent 5 tweets in this container, then simply use the following code:

var widget = new TwitterWidget('yourveryownusername', {
    insertElement: $('twitter_container'),
    count: 5
}).getTweets();

But what if you don’t like the date format and want an other separator between reply, retweet and so on? No problem.

var widget = new TwitterWidget('yourveryownusername', {
    insertElement: $('twitter_container'),
    count: 5,
    dateFormat: '%B-%d-%Y',
    actionSeparator: '|'
}).getTweets();

(for the date format options head over to http://mootools.net/docs/more/Types/Date#Date:format)

That’s it! Simple.
But be aware that you need to add the Request.JSONP and the Date module if you are using Contao. These two things are not included in the Mootools-More pack by default.

On this page, you can see how it could look like on your website.

Have fun, and oh, please let me know if this could come in quite handy on any project you’re working on.

The benefits of using Contao

As we are now using the Contao content management system (cms) for nearly every website we create, I wanted to give you a brief overview over the benefits of the system. Maybe this helps you to get a better impression of it and leads to even more people using Contao.

contao back end

Contao back end

So what makes it that good?

Most of our customers who switched over from different content management systems were very impressed with Contao’s simplicity and easy-to-accustom ways to keep their site up-to-date. In fact we had several clients who wanted us to build them a new site just because their former cms was way too complicated to use. It is important for our clients and also ourselves to know that the system we’re using can be expanded flexibly and inexpensively. Contao is fantastic in making that possible. A great example is it’s extension catalog which offers a big database of extensions you can use on your web site. It’s biggest plus is that you can install these extensions right there, in Contao. You don’t need to download it, then upload it via FTP and then include it into your system. Contao does all that on its own.

Furthermore Contao offers a high security standard and allows us to develop search engine friendly websites which are also accessible for people with disabilities.

Is doesn’t matter whether you have a big or a small site, Contao is the optimal solution for both variants. Especially at bigger web sites it offers the possibility to work with multiple people, even simultaneously. It is no problem to manage and create new user accounts for every one of your colleges who update your site.

These and many other built-in features made Contao one of the most popular open source content management systems on the market. We are really recommending you to give it a try! Give us a call or simply drop a mail if you have any questions!

Head over to contao.org to see videos and tutorials or download it.

New Ebersbach Mediendesign website released!

This is the point where I could write an essay about how cool the new website is, but now that this is a blog about development, we should stick to the boring and nerdy facts.

Overview

If I’d have to describe the page in a few words, I would likely say “sprite & javascript madness”.

Javascript

In the first few drafts, the only scripted element was the slideshow in the header. But while being in the development phase, we came up with some neat (and mostly tricky) ideas to improve the user experience using javascript.
Lets take the logo as an example. In the final layout draft it was just a white logo, nothing more, nothing less. As I accidentally mixed up the logo and the header, a new idea was born. It solved the issue about a missing mouseover and looks pretty awesome (though, even if the repeating image is nowhere near perfect, its close enough).

CSS-Sprites

The sprite stuff is something that nearly drove me insane. At first, every background was a separate image. Ok, thats basically nothing to worry about, but after seeing the performance graph with all these separated requests being made, I realized that there is no way around sprites.
There are some pre-made solutions for that, Sprite Me for example, but either I’m too dumb the get some decent results with them, or they did not fit the situation. So I was forced to combine them myself. As someone with zero experience in image editing software, I felt like a 3-year-old in an art academy.
But after some minutes it wasn’t so bad after all. For example layers. First being a feature straight from hell, they appeared to be pretty helpful in structuring the image.
And so, after hours of testing, resizing, repositioning and exploring the world of graphic designers, the huge sprite was created. It contains 16 single images and so reduces the amount of requests by 15, pretty neat if you ask me.

And where’s the code?

Yep, there is no code yet. If you are interested in how something works on the new page, just launch Firebug and see for yourself. It will be partially explained in the next blogposts though.

Now for some statistics! Everybody loves statistics.

159 lines of javascript
800 lines of css
7 images in total
3 custom templates
3 custom contao modules with 39 files in total

All sizes in uncompressed and unoptimized format.

Hello world!

Welcome to the new Ebersbach Mediendesign Developer Blog!

As this is a new blog it will take a bit of time to fill it with great content, but we’ll get there! We’ll be writing about all sorts of stuff concerning Android app development, web development and other interesting topics in this area. So please be patient!

If you are interested in what we’re doing, you can also follow us on TwitterFacebook and Google+.