Blogs

This week's edition takes a look at the question if openness can scale, Twitter's latest feat and gives Google Reader's former Product Manager a voice. Enjoy!

Drupal

TimOnWeb: 8 Awesome Drupal Snippets I Wish I Knew Before
A few issues ago we featured ​Tim Kamanin's initiative ​Dropbucket.org. In the meantime the Drupal snippet repository has grown and the initiator took a moment to select his eight favourite snippets.

Commerce Guys: Commerce Kickstart - Visualizing the birth of a distro

Commerce Guys' Nicolas Meyer visualized, with the help of Gource and the powers of their software version control tool, the collaborative history of the Drupal Commerce Kickstart distribution.

Technology

The Verge: Twitter gets a patent on... Twitter
In the week Twitter turned seven, the microblogging service made the headlines for different reasons.

Food for thought

Accelerating reinventions: Openness does not scale
Laurent Haug reflects on the experiences he made with the Lift Conference.

Opinion

Quora: Why is Google killing Google Reader?
Question-and-answer service Quora might not be one of the social media platforms which is particularly well known in the mainstream. Nevertheless some interesting answers were provided on last week's hot button issue.

By Dagmar Muth 21st March 2013

I was hired as a Project Manager to ensure that projects are managed according to timeline and budget and that the story always ends with a happy end, a delighted customer. 

During my first four weeks I have written a lot of offers. Coming from an agile product company I have never thought that I will once again specify an entire project before its start. But our clients need a price tag and a rough timeline to their initially planned project. For most of them it is the first big web project with lots of unknowns, fears and high expectations at the same time. 
 
As a first step, we do a first rough proposal when there is a RFP (request for proposal) or a sort of specification by the client.  When total costs are split up amongst the feature sets the pricing becomes transparent for the client. This is a great basis for discussing what the critical points are in the project and where further detail is needed.
 
We clearly communicate that this first proposal will need to be replaced by a more detailed proposal. The second proposal is hard work between the client and the agency. We need to dig into the critical parts of the project to come up with a solution together. It is not only about defining the functionalities, i.e. the deliverables by the agency. It is also essential to document what the client needs to deliver, such as content, translations etc. and when it is due so that the project timeline can be met. As this might be the first web project for the client, we need to take time to educate and explain. To a big part we shape how our clients are to work with. At the end, the contractual basis is a specifications document and a project plan which includes a list of deliverables by the client. 
 
This is it, we have a plan and no more changes?
 
Well, not really. While defining the user experience, design and workflows, questions and change requests will arise. The good thing is that we have this wonderful proposal we can refer to when things change. There are two ways to handle additional requirements: The price is kept fixed by reducing requirements in another area or items are being added as additional costs. 
 
In the coming weeks I will explore further topics like:
  • how to establish a prioritized backlog for a Drupal project 
  • how to organize sprints for Drupal projects, i.e. unite site builders, themers and back-end developers.  
  • how to integrate the client as early as possible in the project, e.g. for content creation, feedback etc.

 

By Daniel Truninger 18th March 2013 Business

On Saturday the Voice of Switzerland reached its climax. During the live shows our head technology Michael Schmid was present to ensure that the Drupal powered website ran smoothly.

Here are some exclusive behind the scenes shots he made.

Despite SXSW having yielded a torrent of interesting items this week - we opted to take off the Austin biased blinkers for this issue. Enjoy!

Design

New York Times: Introducing A New Article Design
The New York Times granted the general public a glimpse of its redesign this week. Admittedly it looks gorgeous but let's see if it manages to be as game-changing as the Boston Globe's introduction of Responsive Design in 2011.

SEO

Charles Lewis - Page Rank
If reading isn't your preferred method of gaining knowledge - give this a go. Charles Lewis aka SEO Rapper will teach you the essentials of Google's PageRank in the next two and a half minutes.

Technology

Techcrunch: Google Closes The Book On Google Reader On July 1, Seven Other Products Also Get The Chop
This week Google announced the closure of its popular RSS reader service. Anyone else feel reminded of Yahoo's supposed shut down of Delicious? Regardless it might be time to move to a new service or just take control of your feeds with this Drupal workaround.

NBC PhotoBlog: Witnessing papal history changes with digital age
Ever wondered how the world of technology infiltrated everyday life in the last eight years? Just compare these two pictures of 2005 and last Wednesday of the Catholic faithful at St. Peter's Basilica and it becomes obvious.

Tweets that cut through the noise

Less than 24 hours after Acquia's cold calling gaffe, CMO Tom Wentworth already was able to see the lighter side...

 

By Victor Künzig 13th March 2013 Drupal

If you’re adding JavaScript to your custom module it is very easy and tempting to simply add it like this:

jQuery(document).ready(function($){
  alert(‘hot dog flavored water’);
});

Now this code works perfectly fine but what if your JavaScript needs to be executed on page load and after an AJAX request? Imagine you have a view that uses “Views Infinite Scroll” and you want add a CSS class to every result like this:

jQuery(document).ready(function($){
  $('.view-display-id-page .views-row').addClass('fancy-pants');
});

This will work for the results that are displayed initially but for all the results that are loaded by Infinite Scroll's AJAX call the class is not added. That’s where Drupal behaviors come in handy.  The behaviors will be executed on every request including AJAX requests, so let's do the equivalent of the code above but this time using this method:

Drupal.behaviors.infiniteScrollAddClass = {
  attach: function (context, settings) {
    $('.view-display-id-page .views-row').addClass('fancy-pants');
  }
};

I admit that was quick - so here are some explanations:

  • infiniteScrollAddClass: This is your namespace and should be unique. For example, this is typically the name of your module, but it isn't mandatory.
  • context: This is actually really really cool, on page load the context will contain the entire document and after an AJAX request will have all the newly loaded elements. This way you can treat content that is loaded in via AJAX differently than others.
  • settings: This contains information passed on to JavaScript via PHP, it is similar to accessing it via Drupal.settings. For further comprehension I recommend this source.

There obviously are cases where some functionality should not be executed on every request. In such a case its great to use jQuery's .once() method. So let's say we want to give all the initially loaded results in our view an additional class, for something like this we would proceed like so:

Drupal.behaviors.infiniteScrollAddClass = {
  attach: function (context, settings) {
    // these are the elements loaded in first
    $('.view-display-id-page').once(function(){
      $(this).find('.views-row').addClass('i-was-here-first');
    });

    // everybody
    $('.view-display-id-page .views-row').addClass('fancy-pants');
  }
};

This will add the class “i-was-here-first” to all the view results present on page load, everybody else joining in via AJAX will just get the “fancy-pants” class.

So that’s a quick look at Drupal behaviors, if you haven’t used it do use it!

If you are looking for additional theoretical insight into this topic I can recommend these two sources for further reading:

 

Dear reader, this week's edition takes a look at a creative recruiting initiative, Facebook's latest announcement and why the Swiss word of the year "shitstorm" probably doesn't represent the public opinion once it occurs. Enjoy!

Jobs

Forbes: Pizza Hut To Hold 140-Second Interviews For Social Media Manager Position At SXSW

The well known Pizza franchise is trying to recruit a new "Manager of Digital Greatness" in an unique fashion. If you are looking for something more Drupal related - we've got a vacancy too.

Drupal

DrupalCon Portland 2013: Accepted Sessions
DrupalCon Portland is only two months away. If you are heading to Portland, like some of us will, you can start building your schedule now.

DrupalEasy Podcast: Vice President of Drupal
Episode 100 of the DrupalEasy podcast features Angie Byron as a guest. A great listen if you want to learn more about some behind the scenes activities of the Drupal community. 

Social Media

The Verge: Facebook redesigns News Feed with multiple feeds and 'mobile-inspired' interface
This week Facebook introduced that is about to launch a redesigned News Feed. If you want you can already join the waiting list to be one of the first users of the feature. Just don't mention that it looks like Google+...

Food for thought

Wired.co.uk: Twitter debates don't represent opinions of general public
A study conducted by the Pew Research Centre has shown that despite Twitter being the fastest growing social platform its regular storms of controversy don't necessarily have to represent the public opinion. It might sound like common sense but sometimes reminders of this nature are helpful.

By Daniel Truninger 7th March 2013 Team

Drumroll, please! It's our pleasure to introduce our team's latest addition Corina Schmid. With the end of her General Management bachelor degree course approaching rapidly Corina will join as trainee to offer a practical outlet for her studies.

When not helping Dania with looking after the operational part of the Lab, Corina enjoys snowboarding and expanding her vast collection of shoes.

Welcome to the team and all the best for your graduation.

It's been a cold month here in Switzerland. Nevertheless here are five things which warmed warmed our cockles this week. Enjoy!

Inspiration

Niice. A search engine with taste.
If using Google's image search annoys you due to its uninspiring results - give search engine a go. Niice is the self proclaimed search engine with good taste.

Drupal

Drupal Snippets Repository | Dropbucket.org
Sharing is an important necessity in every open-source project. With that in mind Tim Kamanin started this initiative to make sharing of Drupal code snippets easier.

Content Management Systems (CMS)

Friendly Machine: Drupal Gains Market Share
John Hannah crunched the numbers on W3Techs' CMS monthly stats. Despite Drupal's future looking rosy there is still a long way to go to reach the 10% market share.

Technology

The Next Web: Dropbox: 1 billion files are now being uploaded every day
We all know the big numbers which the likes of Facebook, Twitter and YouTube generate. Here is one you probably don't know yet.

Unfortunate domain of the week

wtflucerne.org
Seriously, or should we actually say WTF? Abbreviating World Tourism Forum Lucerne for ones domain to wtflucerne.org should have raised an eyebrow with every web savvy person involved.

By Andrew McClintock 28th February 2013 Fun, Team

One Swiss Februar from Our Swiss Life on Vimeo.

Team Texas has been in Zurich the past three weeks, hangin' with our better half. This time I thought it would be fun to shoot some video of our stay and toss it together will a little Willie Nelson number. I hope you enjoy it as much as we do our time in Switzerland.

By Sascha Eggenberger 25th February 2013

Allow me to take your fear. Designing for Retina displays isn't hard but there are a few things you should know and keep in mind.

Use vectors

Don't create bitmap graphics when you are designing for Retina. Why? It can be that you have to up- & downscale your document during the design process. You don't want to end up with blurred graphics, right?
 
Instead create simple vectors directly in Photoshop with the shape or the free-form pen tool. For more complex graphics I recommend you use an external graphic tool like Illustrator. For less complex vector graphics I use Sketch.
 

Don't mix resolutions

The biggest problem with different pixels per inch (PPI) settings for PSD documents appears when you copy layer styles between documents. Imagine you add a 2px border to a layer on a 72 PPI document and you want to transform the style to a document with 163 PPI settings, it will automatically scale up. So the only way to prevent this from happening is to use the default 72 PPI for all documents.
Note: There's a big difference between print and web design - for print design PPI is really important - but in web design is not.
 

Designing @1× or @2×? It is up to you!

There is no explicit advantage to starting your design at @1× over starting at @2×. I prefer building the initial design @1× and scale it up later to @2× for some fine tuning.
 

Use Slicy for the export

I'm a huge fan of the tiny but yet powerful tool called Slicy. You can easily export @1× and @2× graphics at once - and save a lot of time. It doesn't matter if you start designing @1× or @2×, with ease Slicy can magically enlarge your vectors and layer styles or it can fill in missing @1× versions.
 
 

Pages

Subscribe to Amazee Labs Blog

Latest comments

  • Adam Hummell's picture

    Hop on one foot for 1 minute or Gimmie 20. Starting now....GO

    Adam Hummell
  • infojunkie's picture

    Thanks for using Views Auto-Refresh and glad it's working out for you! The new version at http://drupal.org/project/views_autorefresh now uses an area handler to allow site builders to set it up. It should be functionally equivalent to the Views Hacks version, in addition to the bug fixes that went into it since it moved.

    infojunkie
  • daniel truninger's picture

    @Gurpreet

    Not sure I understand your question fully.

    If you try run this on your local without a web server you might get a bunch of errors or no unicorn at all. Vectron uses Ajax requests to get the SVG file, for this you need to have a local web server or run it on a real environment. More about this issue can be found here.

    If your question is of a different nature why not ask it over on Stack Overflow, where you can ask your question to a broader audience. I'm sure somebody there will have had the same challenge as you.

    Daniel Truninger