Entries by admin

Hasselblad Heroines continues to feature talented female photographers

Original Source: http://feedproxy.google.com/~r/abduzeedo/~3/SiniteABQg4/hasselblad-heroines-continues-feature-talented-female-photographers

Hasselblad Heroines continues to feature talented female photographers
Hasselblad Heroines continues to feature talented female photographers

AoiroStudioMar 05, 2020

It’s always honorable seeing brands like Hasselblad create initiatives to celebrate women at making their mark into the photography industry and that is pretty male-dominated. They are back with Hasselblad Heroines that will be kicking off the second-year installment on 8 March 2020, International Women’s Day. For 2020, they will be featuring seven (7) photographers and we have taken the liberty to feature them here. By putting a spotlight on these talented creatives, Hasselblad Heroines hopes to encourage the next generation of female photographers to go against the grain and bring their creative visions to life.

In their words

Hasselblad proudly continues its second year of Hasselblad Heroines, which highlights various female photographers making their mark in the photographic industry. Kicking off the second-year instalment on 8 March 2020, International Women’s Day, is the first Hasselblad Heroine Swee Oh. Through weekly spotlights over a total of seven weeks, each Heroine will share their experiences in their career, challenges in a typically male-dominated industry, and inspiration in their art through short video interviews.

By Swee Oh

Julia Fullerton-Batten

By Bara Prasilova

By Natalia Evelyn Bencicova

By Clarissa Bonet

By Chiara Zonca

By Celia D. Luna

Last year we received a resoundingly positive response to the Hasselblad Heroines series, and we want to continue celebrating artists who represent true creative ingenuity. Since its inception nearly eighty years ago, Hasselblad carries a vested interest in the growth and development of the photographic arts and the nourishment of diverse and innovative creators

Marketing Manager Bronius Rudnickas

About Hasselblad

Founded in 1941, Hasselblad is one of the leading manufacturers of digital medium format cameras and lenses. True to its Scandinavian heritage, Hasselblad cameras are renowned for their iconic ergonomic design, uncompromising image quality and extremely high performance. For over half a century, Hasselblad cameras have captured some of the world’s most iconic images – including the first landing on the Moon – and helped shape the way we look at the world through genuine photographic artistry. Trusted by NASA and used by some of the greatest photographers in the world, Hasselblad continues to develop products that enable all types of creatives to capture their artistic vision.

More on Hasselblad


Inspirational Websites Roundup #13

Original Source: http://feedproxy.google.com/~r/tympanus/~3/0TO3-heD4ww/

Today we have a special collection of really interesting and creative website designs for you! Some outstanding works have been released over the past few weeks and we’re very excited to share these masterpieces with you. So many cool new trends are mixed and combined including beautiful 3D graphics, outlined text, unusual layouts and neat hover trails.

We hope you enjoy this selection and get a good dose of fresh inspiration!

Bruno Ortolland

Socialclub

Voir plus loin

Kevin van der Wijst

Pest Stop Boys

Luigi De Rosa

Davide Baratta

DDNA

Illuminating Radioactivity

Vallourec

Tula microphones

Alessandra Zanghi Studio

Connect Homes

Six N. Five

LEQB

Bite Toothpaste Bits

Yelloworld

Loer Architecten

Violet Office

Krause Studio

Sandy Dauneau

80s Fever

Elias Akentour

Josh W Comeau

PenzGidroMash

WØRKS

56k

Viens-là

The Markup

PANAMÆRA

Érika Moreira

kern inc.

DEADWATER

unspun

Playground Paris

Zenly

This is Spotify

Inspirational Websites Roundup #13 was written by Mary Lou and published on Codrops.

Subtle K-Y rebrand is a stroke of genius

Original Source: http://feedproxy.google.com/~r/CreativeBloq/~3/EWK1pGrwxjk/k-y-rebrand

With International Women's Day approaching on Sunday, lubricant brand K-Y Jelly has revealed a rebrand focused on female sexual empowerment.

Design Bridge New York's new logo design emphasises the ruby in its centre, turning it into a much prouder celebration of the vulva than before, and a "strong symbol of female sexual power". The ruby was always part of the logo, but diagonalising the 'Y's descender to meet the 'K' creates a new outer diamond, making the effect far more obvious. 

K-Y old and new logo

The old logo (left) compared to the new one (right)

"We've loaded it with meaning," says Claire Parker from Design Bridge, "and brought a sensuality and confidence to the brand that was lacking before."

If you ask us, the vulvarisation (sorry) of the logo is a stroke of genius. The old logo looks positively prudish, clinical even, compared with this playfully confident rebrand. And if anyone needs help spotting the visual reference, Design Bridge's accompanying video (below) for the rebrand ensures that the new ruby looks, well, nice and inviting. 

K-Y Jelly was one of the first lubricants aimed specifically at women. Launched in 1904, it entered a marketplace aimed predominantly at men. This new identity is a brilliantly strong statement of the brand's mission to, as K-Y puts it, to "empower women to have the best sex, always".

KY packaging

Are you ready for this jelly?

As well as the new logo, the rebrand includes bespoke typography and iconography for the product's packaging, as well as a refined colour palette with consistent use of the brand's "deep, ruby red – a colour that universally represents love and passion". We love it. 

Related articles

Durex hits the spot with sexy new rebrandThe problem with period product brandingDesigners react to bizarre Gucci rebrand

Introducing Alpine.js: A Tiny JavaScript Framework

Original Source: https://www.smashingmagazine.com/2020/03/introduction-alpinejs-javascript-framework/

Introducing Alpine.js: A Tiny JavaScript Framework

Introducing Alpine.js: A Tiny JavaScript Framework

Phil Smith

2020-03-05T11:30:00+00:00
2020-03-05T21:09:09+00:00

Like most developers, I have a bad tendency to over-complicate my workflow, especially if there’s some new hotness on the horizon. Why use CSS when you can use CSS-in-JS? Why use Grunt when you can use Gulp? Why use Gulp when you can use Webpack? Why use a traditional CMS when you can go headless? Every so often though, the new-hotness makes life simpler.

Recently, the rise of utility based tools like Tailwind CSS have done this for CSS, and now Alpine.js promises something similar for JavaScript.

In this article, we’re going to take a closer look at Alpine.js and how it can replace JQuery or larger JavaScript libraries to build interactive websites. If you regularly build sites that require a sprinkling on Javascript to alter the UI based on some user interaction, then this article is for you.

Throughout the article, I refer to Vue.js, but don’t worry if you have no experience of Vue — that is not required. In fact, part of what makes Alpine.js great is that you barely need to know any JavaScript at all.

Now, let’s get started.

What Is Alpine.js?

According to project author Caleb Porzio:

“Alpine.js offers you the reactive and declarative nature of big frameworks like Vue or React at a much lower cost. You get to keep your DOM, and sprinkle in behavior as you see fit.”

Let’s unpack that a bit.

Let’s consider a basic UI pattern like Tabs. Our ultimate goal is that when a user clicks on a tab, the tab contents displays. If we come from a PHP background, we could easily achieve this server side. But the page refresh on every tab click isn’t very ‘reactive’.

To create a better experience over the years, developers have reached for jQuery and/or Bootstrap. In that situation, we create an event listener on the tab, and when a user clicks, the event fires and we tell the browser what to do.

See the Pen Showing / hiding with jQuery by Phil on CodePen.

See the Pen Showing / hiding with jQuery by Phil on CodePen.

That works. But this style of coding where we tell the browser exactly what to do (imperative coding) quickly gets us in a mess. Imagine if we wanted to disable the button after it has been clicked, or wanted to change the background color of the page. We’d quickly get into some serious spaghetti code.

Developers have solved this issue by reaching for frameworks like Vue, Angular and React. These frameworks allow us to write cleaner code by utilizing the virtual DOM: a kind of mirror of the UI stored in the browser memory. The result is that when you ‘hide’ a DOM element (like a tab) in one of these frameworks; it doesn’t add a display:none; style attribute, but instead it literally disappears from the ‘real’ DOM.

This allows us to write more declarative code that is cleaner and easier to read. But this is at a cost. Typically, the bundle size of these frameworks is large and for those coming from a jQuery background, the learning curve feels incredibly steep. Especially when all you want to do is toggle tabs! And that is where Alpine.js steps in.

Like Vue and React, Alpine.js allows us to write declarative code but it uses the “real” DOM; amending the contents and attributes of the same nodes that you and I might edit when we crack open a text editor or dev-tools. As a result, you can lose the filesize, wizardry and cognitive-load of larger framework but retain the declarative programming methodology. And you get this with no bundler, no build process and no script tag. Just load 6kb of Alpine.js and you’re away!

Alpine.js

JQuery

Vue.js

React + React DOM

Coding style

Declarative

Imperative

Declarative

Declarative

Requires bundler

No

No

No

Yes

Filesize (GZipped, minified)

6.4kb

30kb

32kb

5kb + 36kb

Dev-Tools

No

No

Yes

Yes

When Should I Reach For Alpine?

For me, Alpine’s strength is in the ease of DOM manipulation. Think of those things you used out of the box with Bootstrap, Alpine.js is great for them. Examples would be:

Showing and hiding DOM nodes under certain conditions,
Binding user input,
Listening for events and altering the UI accordingly,
Appending classes.

You can also use Alpine.js for templating if your data is available in JSON, but let’s save that for another day.

When Should I Look Elsewhere?

If you’re fetching data, or need to carry out additional functions like validation or storing data, you should probably look elsewhere. Larger frameworks also come with dev-tools which can be invaluable when building larger UIs.

From jQuery To Vue To Alpine

Two years ago, Sarah Drasner posted an article on Smashing Magazine, “Replacing jQuery With Vue.js: No Build Step Necessary,” about how Vue could replace jQuery for many projects. That article started me on a journey which led me to use Vue almost every time I build a user interface. Today, we are going to recreate some of her examples with Alpine, which should illustrate its advantages over both jQuery and Vue in certain use cases.

Alpine’s syntax is almost entirely lifted from Vue.js. In total, there are 13 directives. We’ll cover most of them in the following examples.

Getting Started

Like Vue and jQuery, no build process is required. Unlike Vue, Alpine it initializes itself, so there’s no need to create a new instance. Just load Alpine and you’re good to go.

<script src=”https://cdn.jsdelivr.net/gh/alpinejs/alpine@v1.9.4/dist/alpine.js” defer></script>

The scope of any given component is declared using the x-data directive. This kicks things off and sets some default values if required:

<div x-data=”{ foo: ‘bar’ }”>…</div>

Capturing User Inputs

See section in Sarah Drasner’s article →

x-model allow us to keep any input element in sync with the values set using x-data. In the following example, we set the name value to an empty string (within the form tag). Using x-model, we bind this value to the input field. By using x-text, we inject the value into the innerText of the paragraph element.

See the Pen Capturing user input with Alpine.js by Phil on CodePen.

See the Pen Capturing user input with Alpine.js by Phil on CodePen.

This highlights the key differences with Alpine.js and both jQuery and Vue.js.

Updating the paragraph tag in jQuery would require us to listen for specific events (keyup?), explicitly identify the node we wish to update and the changes we wish to make. Alpine’s syntax on the other hand, just specifies what should happen. This is what is meant by declarative programming.

Updating the paragraph in Vue while simple, would require a new script tag:

new Vue({ el: ‘#app’, data: { name: ” } });

While this might not seem like the end of the world, it highlights the first major gain with Alpine. There is no context-switching. Everything is done right there in the HTML — no need for any additional JavaScript.

Click Events, Boolean Attributes And Toggling Classes

See section in Sarah Drasner’s article →

Like with Vue, : serves as a shorthand for x-bind (which binds attributes) and @ is shorthand for x-on (which indicates that Alpine should listen for events).

In the following example, we instantiate a new component using x-data, and set the default value of show to be false. When the button is clicked, we toggle the value of show. When this value is true, we instruct Alpine to append the aria-expanded attribute.

x-bind works differently for classes: we pass in object where the key is the class-name (active in our case) and the value is a boolean expression (show).

See the Pen Click Events, Boolean Attributes and Toggling Classes with Alpine.js by Phil on CodePen.

See the Pen Click Events, Boolean Attributes and Toggling Classes with Alpine.js by Phil on CodePen.

Hiding And Showing

See section in Sarah Drasner’s article →

The syntax showing and hiding is almost identical to Vue.

See the Pen Showing / hiding with Alpine.js by Phil on CodePen.

See the Pen Showing / hiding with Alpine.js by Phil on CodePen.

This will set a given DOM node to display:none. If you need to remove a DOM element completely, x-if can be used. However, because Alpine.js doesn’t use the Virtual DOM, x-if can only be used on a <template></template> (tag that wraps the element you wish to hide).

Magic Properties

In addition to the above directives, three Magic Properties provide some additional functionality. All of these will be familiar to anyone working in Vue.js.

$el fetches the root component (the thing with the x-data attribute);
$refs allows you to grab a DOM element;
$nextTick ensures expressions are only executed once Alpine has done its thing;
$event can be used to capture a nature browser event.

See the Pen Magic Properties by Phil on CodePen.

See the Pen Magic Properties by Phil on CodePen.

Let’s Build Something Useful

It’s time to build something for the real world. In the interests of brevity I’m going to use Bootstrap for styles, but use Alpine.js for all the JavaScript. The page we’re building is a simple landing page with a contact form displayed inside a modal that submits to some form handler and displays a nice success message. Just the sort of thing a client might ask for and expect pronto!

Initial view of the demo app

Initial view (Large preview)

View of the demo app with modal open

Modal open (Large preview)

View of the demo app with success message displaying

Success message (Large preview)

Note: You can view the original markup here.

To make this work, we could add jQuery and Bootstrap.js, but that is quite a bit of overhead for not a lot of functionality. We could probably write it in Vanilla JS, but who wants to do that? Let’s make it work with Alpine.js instead.

First, let’s set a scope and some initial values:

<body class=”text-center text-white bg-dark h-100 d-flex flex-column” x-data=”{ showModal: false, name: ”, email: ”, success: false }”>

Now, let’s make our button set the showModal value to true:

<button class=”btn btn-lg btn-secondary” @click=”showModal = true” >Get in touch</button>

When showModal is true, we need to display the modal and add some classes:

<div class=”modal fade text-dark” :class=”{ ‘show d-block’: showModal }” x-show=”showModal” role=”dialog”>

Let’s bind the input values to Alpine:

<input type=”text” class=”form-control” name=”name” x-model=”name” >
<input type=”email” class=”form-control” name=”email” x-model=”email” >

And disable the ‘Submit’ button, until those values are set:

<button type=”button” class=”btn btn-primary” :disabled=”!name || !email”>Submit</button>

Finally, let’s send data to some kind of asynchronous function, and hide the modal when we’re done:

<button type=”button” class=”btn btn-primary” :disabled=”!name || !email” @click=”submitForm({name: name, email: email}).then(() => {showModal = false; success= true;})”>Submit</button>

And that’s about it!

See the Pen Something useful built with Alpine.js by Phil on CodePen.

See the Pen Something useful built with Alpine.js by Phil on CodePen.

Just Enough JavaScript

When building websites, I’m increasingly trying to ask myself what would be “just enough JavaScript”? When building a sophisticated web application, that might well be React. But when building a marketing site, or something similar, Alpine.js feels like enough. (And even if it’s not, given the similar syntax, switching to Vue.js takes no time at all).

It’s incredibly easy to use (especially if you’ve never used VueJS). It’s tiny (< 6kb gzipped). And it means no more context switching between HTML and JavaScript files.

There are more advanced features that aren’t included in this article and Caleb is constantly adding new features. If you want to find out more, take a look at the official docs on Github.

Smashing Editorial
(ra, il)

How to Optimize Your YouTube SEO

Original Source: http://feedproxy.google.com/~r/Designrfix/~3/jhl9bdls2zU/how-to-optimize-your-youtube-seo

Video marketing has absolutely exploded in the last few years and for good reason. Most people prefer to consume information via video rather than read a lengthy blog post. YouTube has over 1 Billion users and has become the third-largest search engine so if it’s the best place for you to publish your videos. In […]

The post How to Optimize Your YouTube SEO appeared first on designrfix.com.

How to design the perfect sticker for your brand

Original Source: http://feedproxy.google.com/~r/Designrfix/~3/LuebWSaeoQQ/how-to-design-the-perfect-sticker-for-your-brand

Stickers are one of the many tools you can use to increase brand awareness. They’re cost-effective and get your name out there – wherever you want. To make the perfect sticker for your brand, you need to think about what it’s for, and where it’s going to be used. Then you can figure out the […]

The post How to design the perfect sticker for your brand appeared first on designrfix.com.

Twitter tests Fleets – its new disappearing Stories

Original Source: http://feedproxy.google.com/~r/CreativeBloq/~3/mKScGYmRc50/twitter-fleets

Twitter has started testing its own version of Stories – Fleets. These fleeting tweets disappear after 24 hours, bringing Twitter in line with other apps that have a disappearing Story feature – namely Snapchat, Facebook and Instagram. Fleets will be primarily text-based, but can include videos, GIFs or photos.

The feature is currently being tested in Brazil and may be rolled out across the rest of the world depending on user feedback. Unlike with normal tweets, users won't be able to retweet, like or comment on a Fleet, although they will be able to send a DM or emoji. Twitter hopes that those who normally feel that tweeting is too public feel more comfortable with Fleeting (we're not sure it's a capitalised verb yet, but we'll go with it).

On the day after the announcement, Fleets are already trending on Twitter, but perhaps not in the way Twitter anticipated. The hashtag #RIPTwitter has taken off, with people posting various savage memes about how they don't want Twitter Stories. We can't say yet just how fleeting this anger will be. 

For a social media trick that's available right now, read our post on how to change the font in your Instagram bio.

Do we really need Twitter Stories (sorry, we mean, Fleets)? Well, the answer is of course, no. But that doesn't mean that Fleets won't take off, and we do love the name. However, Fleets may end up being one of those features that most people basically ignore – a bit like Instagram TV or Facebook Watch (yes, we had to look that one up), and not at all like Instagram Dark Mode, which everyone seems to love.

From a content creator's point of view, Fleets will either be another way to reach your audience, or another way for your audience to ignore you. The addition of Fleets could also mean that people will stop scrolling through other users' Twitter feeds in an attempt to find something racist, or offensive to call them out on. Might there be an increase in screenshots, perhaps?

All potentially offensive views – okay, all views – can now have their own disappearing platform, just like they do on other social media networks. We can only imagine what politicians will do with these Fleets if they do eventually roll out across the globe. Just imagine the press briefings. 

You can read the blog announcement from Twitter here (in Portuguese).

Read more:

10 must-know Instagram tips for creativesDisney character 3D fossils are strangely adorableEverybody hates new Twitter

Design for Browser Inconsistency With Lambdatest

Original Source: https://www.webdesignerdepot.com/2020/03/design-for-browser-inconsistency-with-lambdatest/

When the web was young, a 56k connection was fast, CSS was new, and Flash was but a glint in Macromedia’s eye, there was a phrase that graced half of all splash screens: Best viewed in IE6.

You see, back in the early 00s, the web was a lot less competitive. It was perfectly possible to ignore 40% of your users and still turn a profit. In fact, given the expense of maintaining a different codebase for every browser, it was often financially inviable to build for more than a single browser.

front-end code still renders very differently in different browsers

Over the years, the web became far more competitive, and developers serious about building profitable sites looked for ways to code sites for a wider audience; web standards began to emerge.

It’s difficult to envisage how we would have coped with the exponential growth of the mobile web without the backbone of web standards. However, web standards have fed the misconception that browsers display code consistently; The truth is that front-end code still renders very differently in different browsers.

Why Aren’t Browsers Consistent?

Despite near-industry wide commitment to web standards, browsers still render web pages very differently. There are a few reasons for this:

Evolving Web Standards

Releasing a new feature of CSS3, HTML5, and especially ECMAScript takes a long time. From initial proposal to recommendation there are hundreds of revisions and amendments.

The problem is that early-adopters frequently find themselves going to production with an out-dated version of the specification.

Take CSS’s Flexbox, which enjoys excellent support across all major browsers, officially, even IE; Unfortunately Microsoft coded in an older version of the specification and anyone who still needs to support IE will find they need to run backwards compatible code.

Scope for Interpretation

Web standards deliberately leave a lot of scope for interpretation. There are numerous properties that are rendered differently because the specification refers to a default setting, without defining that default.

While is may be frustrating, there’s a solid reason for this flexibility: Compare a select element on macOS’s Safari browser, with the same select on iOS’ Safari browser; Not only is the select styled differently — as it would be on Edge, or Chrome — it’s an entirely different UI element!

Bugs, Legacy Code, and Hacks

Like all coders, the engineers that build browsers aren’t perfect. They work with the same pressures, deadlines, and marketing departments that the rest of us contend with. The result is patchy code that’s often buggy, especially in edge cases.

There’s a classic browser bug that only appears in Chrome: Input fields with placeholder text, rotated 180 degrees on the Y axis, unexpectedly override the backface-visibility property. The reason? Somewhere down the line, someone working on Chrome’s engine (probably in an effort to speed up rendering) chose to toggle visibility instead of detecting the current current state.

Designing for Inconsistency

We’re lucky that the browser wars are far behind us. But for the reasons listed above, developers must embrace the fact that in subtle, but unmistakable ways, browsers are inconsistent.

Naturally, websites don’t need to look the same on every browser and device — one of the reasons that there are multiple browsers is that different users have different preferences — but a site must function, and be familiar (especially across mobile and desktop) however the user chooses to access it.

One way of testing sites is to buy 10–20 computers, and 20–30 mobile devices, install multiple browsers onto each one, and painstakingly test on each one, every time you tweak your code.

The smarter way is to use a cross-browser testing app like Lambdatest.

Designing with Lambdatest

Lambdatest is a SaaS that enables testing on a huge range of devices from the comfort of your development machine. You don’t need any special equipment, just log into the site for a range of different testing options:

Cross Browser Testing

Lambdatest lets you perform live, and interactive testing across over 2000 different browsers installed on numerous devices. These aren’t simulators, they’re real browser instances that you access remotely.

Through an intuitive UI you can navigate through the top browsers on macOS, iOS, Windows, and Android. Compare inconsistencies, and even use the screenshot and video options to record problem areas as buggy.

This manual approach to testing is flexible, and ideal for checking individual components of your build. It’s great for checking that bug-fixes are fully resolved. But for really comprehensive testing a manual test is too labor intensive, for that Lambdatest provides automated testing.

Automated Testing

Where Lambdatest really comes into its own is with automated testing. Automation allows you to test your design against up to 2000+ browser implementations. Simply select your OS and the browsers you want to test on, run the automated screenshot process, and review the results in your dashboard.

For ongoing testing during development you probably only want to compare your target browsers, but for any build milestones it’s worth testing as comprehensively as possible.

Using the restful API you can automate logs, test metadata, and hunt down bugs at world-record pace, saving you time, money, and reputation.

Third-Party Integration

As well as manual testing, and automation, Lambdatest also integrates with a wide range of third-party tools including Jira, GitLab, and Trello. This means you can test your site thoroughly, without ever leaving the safety of your existing workflow.

There are also a Chrome extension, and a WordPress plugin. Both allow you to take a screenshot of your site, on 2000+ browsers, with a single click either in your browser, or in the WordPress admin panel.

Smart Comparison Testing

Perhaps the feature we like the best, is the Smart UI testing feature. What this innovative feature does is automatically detect when something’s gone wrong. It’s great for designers and developers working remotely, who don’t have a colleague’s fresh pair of eyes to borrow to check changes.

Simply pull up one of the screenshots from Lambdatest’s automated testing to use as a baseline, then run the Smart Comparison Testing tool, and it will flag up any notable differences.

It’s a fantastic tool for when you’re rapidly fixing bugs, and need to double-check your fix didn’t break something else. Given that the vast majority of bugs in code are introduced when hacking around browser inconsistencies, it’s always wise to check that the solutions you introduce aren’t bringing with them a host of all-new problems.

Why Choose Lambdatest

The number of different browsers and devices you need to test on, just to cover the more popular brands on the market, is prohibitively expensive for most teams. Not to mention the constant demand to keep updating. Lambdatest eliminates this cost and brings comprehensive testing within reach of every web professional. Without the cross-browser testing that Lambdatest enables, it’s all but impossible to design and build a modern website.

What we love about Lambdatest is that it’s a flexible way to work comprehensive and reliable testing into your existing workflow. There are other apps that allow you to test across different browsers, but they typically force a new way of working on you, Lambdatest doesn’t.

You can try Lambdatest for free by taking advantage of the freemium plan that gives you 6 x 10 minutes of testing, 10 sessions of screenshots, and 10 sessions of responsive tests. Once you’re happy that Lambdatest is right for you and your team, plans start at just $15/month.

 

[– This is a sponsored post on behalf of Lambdatest –]

Source

p img {display:inline-block; margin-right:10px;}
.alignleft {float:left;}
p.showcase {clear:both;}
body#browserfriendly p, body#podcast p, div#emailbody p{margin:0;}

The Objective of a Profitable Email Marketing Campaign

Original Source: http://feedproxy.google.com/~r/Designrfix/~3/WotKyDi9X0Q/the-objective-of-a-profitable-email-marketing-campaign

Email marketers are in a never-ending quest to send emails that have a great impact and produce tremendous results. They tirelessly design the excellent message and fine-tune tactics for breaking through inbox clutter. Then they scrutinize results for ideas on how to improve in the next round.  However, no matter how much is learned in […]

The post The Objective of a Profitable Email Marketing Campaign appeared first on designrfix.com.