Web Design
Quick Course On Effective Website Copywriting
Many dismiss copywriting as something that ad agency people do. Truthfully, all of us need to pay close attention to copywriting if we want to achieve our business objectives.
The goal of a "regular" text is to inform or entertain. The goal of Web copy (and ideally your website in general) is to get people to do something—to sign up, make a purchase, or something similar. Hiring a professional copywriter can be very expensive, which is one of the reasons why this is a valuable skill to have yourself.
A Foot On The Bottom Rung: First Forays Into Responsive Web Development
Responsive design is the hottest topic in front-end Web development right now. It’s going to transform the Web into an all-singing, all-dancing, all-devices party, where we can access any information located anywhere in the world. But does responsive design translate well from the text-heavy Web design blogosphere to the cold hard reality of commercial systems?
Rumors came through our office grapevine that management was looking to revamp our mobile presence. There was talk of multiple apps being built externally that could be used on some of the major mobile devices.
The Practical Guide to Multiple Relationships Between Posts in WordPress
With the introduction the custom post type feature, WordPress has made a very important move from just a blogging solution (very powerful but limited with it’s concept) to full-fledged CMS system. All 3.x releases more or less are evolving steps in the same direction. But some quite common tasks that we’re expecting from CMS are still missing in the Core leaving the battlefield open for plugin developers. One such task is creating and management of many-to-many relationships between posts of different types.
Fortunately there is an excellent plugin "Posts 2 Posts" by Silviu-Cristian Burcă aka scribu which solves that task. It’s beautifully coded and deadly simple to use. It provides as with very simple but powerful API allowing the creation of connections and the out-of-the-box administrative UI allows you to manage them. With the following tutorial I’m going to show you how to use this plugin to create and manage connections between posts of different types in practical steps.
Let me first describe the task. Assume we have a custom post type at our WordPress-powered site named "project" to represent (how surprisingly) projects of some nature (eg. some downloadable apps or plugins). At the same time we post notes or updates related to these projects in the blog (representing with default "post" post type). Of course we would like to clearly state this relation - in every project’s page we’d like to have links to notes in the blog and vice versa - in every blog post we’d like to have links to related project(s). This could be achieved manually but the disadvantages of such an approach are quite obvious. So we would use Post 2 Post plugin to make this possible through the following steps:
- register "project" post type and register it’s connection with "post" post type
- create connections between published items using appropriate metabox
- create template tags to help us list related posts or projects
- edit "single" post template to use our introduced template tag for presenting related items
Bonus: At the end we’ll make things a bit more complicated to see the full power of Posts 2 Posts plugin - we’ll provide registered relationships with additional metadata nearly the same way we could have such metadata for posts themselves.
A Note about Code PlacementFollowing Thord Daniel Hedengren’s (wpmu.org) advice I’d try to be smart enough and would not recommend you to include the following code into the theme functions.php file. Instead I would recommend to create your own Custom Functionality Plugin to handle all code that is connected with content of your site and powers the functionality that should not disappear just because you switched the theme. So it’s the perfect place for registering custom post types and creating relationships between them. It’s worth mentioning also that to make the code below work you need to install Post 2 Post plugin first and activate it in WordPress admin.
Registration function frl_p2p_registrations(){ /* Register 'project' post_type */ $register_args = array( 'label' => __('Projects', 'frl'), 'labels' => array( 'name' => __('Projects', 'frl'), 'singular_name' => __('Project', 'frl') ), 'public' => true, 'rewrite' => array('slug'=>'project', 'with_front'=>false), 'show_in_menu' => true, 'hierarchical' => false, 'menu_position' => 5, 'supports' => array('title','editor','thumbnail', 'excerpt'), 'show_in_nav_menus' => false ); register_post_type('project', $register_args); /* Register connection */ $connection_args = array( 'name' => 'project_post', 'from' => 'project', 'to' => 'post', 'sortable' => 'any', 'reciprocal' => false, 'admin_box' => array( 'show' => 'any', 'context' => 'normal', 'can_create_post' => true ), 'admin_column' => 'any' ); p2p_register_connection_type($connection_args); } add_action('init', 'frl_p2p_registrations');The heart of Post 2 Post API is a p2p_register_connection_type function which is quite similar to other register_something WP functions and allows us to register relations between posts of different types and customise it’s behaviour through the set of accepted parameters:
- name - an unique identifier of connection type
- from - post type(s) on "from" side of the connection
- to - post type(s) on "to" side of the connection
- prevent_duplicates - whether to allow duplicated connections
- sortable - whether to allow connections to be ordered via drag-and-drop.
- reciprocal - whether to allow the same post type on "from" and "to" sides of connection
- admin_column - whether to display column with related posts list in posts table in admin
- admin_box - set of parameters that customise connection’s metabox appearance, in particular:
- show - whether to show default metabox and where ("any", "from", "to")
- context - regular metabox context parameter ("normal" or "advanced"),
- can_create_post - whether to allow create new post directly from connection metabox
For the full set of registration parameters and their default values please consult the core/api.php file of the plugin.
First we prepare the registration of project post type as described in the Codex. Then we register connection with post post type with necessary parameters. All these registrations we wrap into a separate function to be able to call it upon init hook.
Creating Connection in MetaboxP2P plugin creates a connection metabox on edit post screens for connected post types if it was configured upon registration. The usage of this metabox is quite intuitive. Simply start typing the desired post name in the search box, select the appropriate item from the drop-down list and click the add icon. To remove a connection click trash icon. Create as many connections per each post/project as needed.
Among other admin UI goodies P2P plugin creates (if configured) the column for a list of connected items in the posts' management table for each of the connected post types. The latest version of the plugin introduces also an informational admin screen (located under "Tools" menu) containing reference data about registered connections and their parameters.
Listing Related Posts function frl_list_related($post_id, $title = ''){ $query_args = array( 'connected_type' => 'project_post', 'connected_items' => intval($post_id), 'nopaging' => true ); $query = new WP_Query($query_args); if($query->have_posts()): if(empty($title)) $title = __('Related items', 'frl'); ?> <h3><?php echo $title; ?></h3> <ul class="related-items"> <?php while($query->have_posts()): $query->the_post(); ?> <li><a href="<?php the_permalink();?>"><?php the_title();?></a></li> <?php endwhile;?> </ul> <?php endif; wp_reset_postdata(); }One of the greatest advantage of P2P plugin is an ability to get connected posts using standard (and familiar) WP_Query syntax. Everything you need is to pass additional query variables to limit set of posts:
- connected_type - the identifier(s) of the connection used when registering
- connected_items - ID of post(s) from one side of the connection to search
- connected_direction - optional parameter allowing to restrict the direction of queried connections ("from", "to", "any"), when omitted the direction is inferred from connected_type + connected_items combination.
In our example we wrap the query into a separate function - frl_list_related template tag. This function query connects posts based on submitted $post_id parameter. If the query produces any results the function lists them using the standard WordPress Loop approach. It also accepts $title parameter to customise the title of related items’ block depending of context.
Template Editing /* code for project template - single-project.php */ if(function_exists('frl_list_related')) frl_list_related($post->ID, __('Related Posts', 'frl')); /* code for post template - single.php */ if(function_exists('frl_list_related')) frl_list_related($post->ID, __('Related Project(s)', 'frl'));Finally we should edit the template files that represent "project" and "post" post types respectively (most likely the single-project.php and single.php files of your theme) so they included the call of our new template tag. We also passed the title string when calling our function for setting the correct title of the connected posts list. The result (eg. for particular "project") after some styling is similar to the following:
More Complicated ExampleAssume that blog posts related to a particular project could be divided into different types, eg. changelog and how-to information. On the project page we’d like to list posts of different types separately and apart from that accompany each link with a short comment. All these enhancements could be easily achieved using the connection metadata functionality provided by P2P plugin. Connection metadata behaves the same way as other types of metadata supported by WordPress (eg. postmeta, usermeta etc.). To use them we will implement the following steps:
- rewrite connection registration function to support "type" and "comment" meta-fields
- add metadata values to existing (and new) connections
- rewrite post listing function to behave as described above
- use new function in template
We have added fields array to the list of connections registration parameters. The used configuration creates two fields in the connection metabox: the "type" field allows you to select from two possible options and the "comment" field allows you to type comment text.
After filing in the metadata for all created connections we can access it the using "meta_query" syntax or using P2P API function p2p_get_meta. Our new listing template tag is going to use both.
function frl_list_related_by_type($post_id, $type, $title=''){ global $post; $query_args = array( 'connected_type' => 'project_post', 'connected_items' => intval($post_id), 'nopaging' => true, 'connected_meta' => array( array( 'key' => 'type', 'value' => $type, ) ) ); $query = new WP_Query($query_args); if($query->have_posts()): if(empty($title)) $title = __('Related items', 'frl'); ?> <h3><?php echo $title; ?></h3> <ul class="related-items"> <?php while($query->have_posts()): $query->the_post(); ?> <li> <a href="<?php the_permalink();?>"><?php the_title();?></a> <span class="comment-meta"><?php echo p2p_get_meta($post->p2p_id, 'comment', true );?></span> </li> <?php endwhile;?> </ul> <?php endif; wp_reset_postdata(); }First of all, our renewed function accepts the $type parameter which allows us to select related posts based on stored "type"-field value. We achieve this using connected_meta query variable. It has syntax similar to regular WordPress meta_query query. Then when printing each found post inside the loop we access the value of its "comment" meta-field with p2p_get_meta function. Each related post found with our query stores the id of the appropriate connection in the $post->p2p_id property. With this id p2p_get_meta allows us to get any connection metadata by it’s key. The third boolean parameter indicates whether we are expecting a single value or array of possible values (as it required by WordPress Metadata API).
/* code to list 'changelog'-type posts on project template - single-project.php */ if(function_exists('frl_list_related_by_type')) frl_list_related_by_type($post->ID, 'changelog', __('Project\'s Changelog', 'frl'));The result of this function implemented somewhere in the single-project.php file for "changelog"-type posts (as an example) could look as follows:
And so this is practically the end of our demonstration. You can download the whole PHP code as a separate plugin below.
Download ConclusionThere are a number of discussions in the WordPress community whether such features as posts relationships should be in the core or not. The practical result of these discussions belongs to the future. Meanwhile we could solve this relationship problem, in particular, with the help of Posts 2 Posts plugin through a few easy steps.
Of course, the example used in the tutorial is quite a basic one but it demonstrates the logic and flexibility of the P2P approach and its excellence in terms of integration with the core. If you have examples of interesting and creative implementations of this approach please share your experience with us. Lastly, let me use the last sentence to say many thanks to the P2P developer for the great and inspiring work.
How To Customize The WordPress Admin Easily
If you're just getting started with WordPress, or have been running with default functionality for a while and now want to dig in with some useful and easy ways to customize your WordPress site, a great place to start is the WordPress Admin area, or backend. One of the great things about WordPress is that each part of the backend is easily customized using simple PHP functions.
In this article, you'll learn how to customize the login page with your own logo, add new widgets to the dashboard, add custom content to the admin footer, make it easier to get in and out of the Admin area, and more. When combined, these techniques can improve branding, accessibility, and usability of your WordPress-powered site.
Backpack Algorithms And Public-Key Cryptography Made Easy
E-commerce runs on secrets. Those secrets let you update your blog, shop at Amazon and share code on GitHub. Computer security is all about keeping your secrets known only to you and the people you choose to share them with.
We’ve been sharing secrets for centuries, but the Internet runs on a special kind of secret sharing called public-key cryptography. Most secret messages depend on a shared secret—a key or password that everyone agrees on ahead of time. Public-key cryptography shares secret messages without a shared secret key and makes technologies like SSL possible.
Responsive Web Design – Ideas, Technology, and Examples
The web design industry is constantly evolving, whether that be with the latest trends in design – big header images, large photographic backgrounds, etc, or with the latest technologies – HTML5, jQuery, CSS3, and so on. It's important as a web designer and developer to keep up with these ever changing “trends” within the industry.
One of the biggest “trends” that has hit this field over the past year or so, is the concept of responsive web design. It has become much more than just a buzz word and has taken the industry by storm. It is clearly not going away. If anything, if you haven’t already got on board with it, it maybe it's about time to start warming to the idea.
Responsive web design is the term given to the concept of designing and developing a website so that the layout changes depending on the device/viewport on which the website is being viewed. By device, this could be a mobile phone, tablet, laptop, desktop computer, or even a smart TV. The term 'Responsive Web Design' was coined by its creator, Ethan Marcotte – his book is highly recommended reading “A Book Apart - Responsive web design”
Image source: Flickr
In the book, Ethan covers where the term 'Responsive Web Design' came from and why it was required.
As a start, its' important to understand that responsive web design is not one particular technology or item but in fact it is a collection of techniques and ideas, which together establish a new way of thinking in moving the web design industry forward.
Why is Responsive Web Design Such a Big Thing?With technologies evolving and new products and devices being introduced to the market it's only natural that consumers will want to keep up with the latest gadgets that we become more and more reliant on.
First it was desktop computers and laptops, then mobile phones and tablets. What's next?
The fact that we are in an era where it is becoming easier to browse the web means that we need to make it easier for consumers to “reach” us and see what we have to offer, at their convenience.
We naturally have a requirement as designers and developers to provide our end user with the option, or rather, convenience to browse through whatever medium (within reason) they see fit. Therefore, we need to provide a clearer means of portraying the information on different screen sizes, whether this be big or small, vertically or horizontally.
Image source: Flickr
It has been noted that in the past creating different versions of a website was the way forward, however it was not the most practical solution, especially as in most cases the user would end up having to download a lot of extra code and design, alongside receiving a poor user journey.
This is why responsive web design has become such a big thing.
Responsive web design provides us with the solution of meeting these requirements without having to create and design different versions of a website depending on the device.
One point to make is that from a business perspective it is not essential we make these changes or adjustments, but rather by doing so we are inevitably meeting the unconscious needs of our end user.
OK so we know what responsive web design is and we know why we may need it. The next step would be how to go about producing it.
How to Make a Website ResponsiveAs mentioned earlier responsive web design is a collection of techniques and ideas. The two main techniques consist of flexible grid and media queries.
Flexible grid
When designing a website we first start off in Photoshop, making sure each element is designed to pixel perfect measurements. We then translate this design into code, all again based on pixels.
This is fine, and still correct. The website will be viewable all on devices, however not in the most convenient manner, or the prettiest. Stating pixel measurements and viewing on a screen smaller than the one it is intended for forces horrible scrollbars to appear.
Hence we need a solution that is fluid, more relative to the issue, but also keeps its proportional values.
To find a proportional value of an item we use the formula:
“ target / content = results ”
Image source: Flickr
It's quite an important formula and one that is key to making designs responsive.
If all values are proportional then the grid based design will scale nicely between devices. So, in other words, no scrollbars.
So, for example, using a Photoshop design mock up, we can find the layout width, typically this could be 960px (this being your main body container). Now say you want this container to “shrink” to 310px wide then the formula would read as follows:
310px / 960px = 0.32291666666667
To obtain the percentage value we multiply by 100 to get: 32.291666666667%
More often than not the percentage value may result in NOT being a whole number. If this is the case then it is important to NOT round up or down to the nearest whole number. Although it may look pretty, your machine will understand the figures in a proportional manner, so its important to keep them as they are!
The Grid System
Perfect grid layout that can be very useful.
Once the fluid grid is in place, the web design is scalable but not responsive.
That is where media queries come into play.
Media QueriesCSS3 media queries go hand in hand with the flexible grid to make responsive web design work.
Luckily CSS3 is supported by many modern browsers.
Media queries were first investigated by W3C a few years ago. A media query allows you to gain information about the viewport from which the user/visitor is looking at the website and target that particular screen size by applying specific CSS styles.
For the purpose of making web sites responsive it can be said that the most important media feature is the “min-width”, this property allows us to apply specific CSS styles if the browser window (in pixels) drops below a particular width.
As a starting point, and possibly the most common pixel min-widths that are targeted are the following:
- 320px
- 480px
- 600px
- 768px
- 900px
- 1200px
Image source: Flickr
It goes without saying that targeting more resolutions will naturally require more time and effort, so it generally depends on the clients' requirements and your judgment as to whether targeting all resolutions is necessary or not.
Progressive EnhancementProgressive enhancement is the term or rather strategy for web design which focuses on the content, rather than device or browser. The aim is to enhance the web design by creating semantic HTML markup and giving prominence to accessibility and content.
Many web designers will argue that content is the most important element of a website project and should therefore be considered ahead of the presentation layer, or design.
With this in mind, we could relate progressive enhancement to responsive web design by aiming to design for mobile first.
Essentially when designing for mobile first the restriction due to the smaller screen automatically pushes the thought process into considering what important elements (content) need to be featured for this device. Therefore we naturally start to design around content.
Obviously as the screen sizes differ between tablets, laptops and desktops more space is available and therefore secondary content (social media or RSS links) can be added in a "nice to have" manner for the larger mediums.
It can be said that designing for mobiles enriches the experience of the user by focusing on the content and providing them, the user, with what is considered the most important elements on first view/load.
Showcase of Responsive Web Designs in ActionBelow are a few examples of responsive web design in action. The screenshots show a couple of the variations, however to see the full variation of each site (in some cases there are more than others), view the website and change the browser window size. Alternatively view the website on a different device.
Responsive Web Design Resources- Mobile Web Resources
- CSS3 Media Queries
- Responsive Images: Experimenting with Context-Aware Image Sizing
- Creating Intrinsic Ratios for Video
- Fluid Images
- Beginner’s Guide to Responsive Web Design
- A Better Photoshop Grid for Responsive Web Design
Responsive web design concentrates quite heavily on devices, viewports and how to gracefully degrade the designs we create across these mediums. In all of the “hype” about RWD we shouldn’t forget Progressive enhancement and its relationship with responsive web design.
ConclusionIt's safe to say that as technology evolves and new gadgets are invented, new trends happen.
Do you think responsive web design is here to stay? What do you think of responsive web design? Let us know what you think at the bottom of this article.
SASS vs. LESS
"Which CSS preprocessor language should I choose?" is a hot topic lately. I've been asked in person several times and an online debate has been popping up every few days it seems. It's nice that the conversation has largely turned from whether or not preprocessing is a good idea to which one language is best. Let's do this thing.
Really short answer: SASS
Slightly longer answer: SASS is better on a whole bunch of different fronts, but if you are already happy in LESS, that's cool, at least you are doing yourself a favor by preprocessing.
Much longer answer: Read on.
The Much Longer Answer The Learning Curve with Ruby and Command Line and WhateverThe only learning curve is the syntax. You should use an app like CodeKit to watch and compile your authored files. You need to know jack squat about Ruby or the Command Line or whatever else. Maybe you should, but you don't have to, so it's not a factor here.
Winner: Nobody
Helping with CSS3With either language, you can write your own mixins to help with vendor prefixes. No winner there. But you know how you don't go back and update the prefixes you use on all your projects? (You don't.) You also won't update your handcrafted mixins file. (Probably.) In SASS you can use Compass, and Compass will keep itself updated, and thus the prefix situation is handled for you. Yes you'll have to keep your local preprocessor software updated and compile/push once in a while, but that's trivial and thinking-free.
So what this comes down to is: SASS has Compass and LESS does not. But it goes deeper than that. The attempts at creating a real robust project like Compass for LESS haven't succeeded because the LESS language isn't robust enough to do it properly. More on that next.
Winner: SASS
Language Ability: Logic / LoopsLESS has an ability to do "guarded mixins." These are mixins that only take affect when a certain condition is true. Perhaps you want to set a background color based on the current text color in a module. If the text color is "pretty light" you'll probably want a dark background. If it's "pretty dark" you'll want a light background. So you have a single mixin broke into two parts with these guards that ensure that only one of them takes effect.
.set-bg-color (@text-color) when (lightness(@text-color) >= 50%) { background: black; } .set-bg-color (@text-color) when (lightness(@text-color) < 50%) { background: #ccc; }So then when you use it, you'll get the correct background:
.box-1 { color: #BADA55; .set-bg-color(#BADA55); }That is overly simplified, but you likely get the idea. You can do some fancy stuff with it. LESS can also do self-referencing recursion where a mixin can call itself with an updated value creating a loop.
.loop (@index) when (@index > 0) { .myclass { z-index: @index; } // Call itself .loopingClass(@index - 1); } // Stop loop .loopingClass (0) {} // Outputs stuff .loopingClass (10);But thats where the logic/looping abilities of LESS end. SASS has actual logical and looping operators in the language. if/then/else statements, for loops, while loops, and each loops. No tricks, just proper programming. While guarded mixins are a pretty cool, natural concept, language robustness goes to SASS. This language robustness is what makes Compass possible.
For example, Compass has a mixin called background. It's so robust, that you can pass just about whatever you want to that thing that it will output what you need. Images, gradients, and any combination of them comma-separated, and you'll get what you need (vendor prefixes and all).
This succinct and intelligible code:
.bam { @include background( image-url("foo.png"), linear-gradient(top left, #333, #0c0), radial-gradient(#c00, #fff 100px) ); }Turns into this monster (which is unfortunately what we need for it to work with as good of browser support as we can get):
.bam { background: url('/foo.png'), -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #333333), color-stop(100%, #00cc00)), -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #cc0000), color-stop(100%, #ffffff)); background: url('/foo.png'), -webkit-linear-gradient(top left, #333333, #00cc00), -webkit-radial-gradient(#cc0000, #ffffff 100px); background: url('/foo.png'), -moz-linear-gradient(top left, #333333, #00cc00), -moz-radial-gradient(#cc0000, #ffffff 100px); background: url('/foo.png'), -o-linear-gradient(top left, #333333, #00cc00), -o-radial-gradient(#cc0000, #ffffff 100px); background: url('/foo.png'), -ms-linear-gradient(top left, #333333, #00cc00), -ms-radial-gradient(#cc0000, #ffffff 100px); background: url('/foo.png'), linear-gradient(top left, #333333, #00cc00), radial-gradient(#cc0000, #ffffff 100px); }Winner: SASS
Website NiceitudeLESS has a nicer, more usable website. The SASS documentation isn't awful. It's complete and you can find what you need. But when competing for attention from front end people, LESS has the edge. I don't doubt this plays a large role in LESS currently winning the popularity race. Things may be changing though.
Winner: LESS
The @extend ConceptSay you declare a class which has a bit of styling. Then you want another class which you want to do just about the same thing, only a few additional things. In LESS you'd likely:
.module-b { .module-a(); /* Copies everything from .module-a down here */ border: 1px solid red; }That's an "include" essentially. A mixin, in both languages. You could use an include to do that SASS as well, but you're better off using @extend. With @extend, the styles from .module-a aren't just duplicated down in .mobule-b (what could be considered bloat), the selector for .module-a is altered to .module-a, .module-b in the compiled CSS (which is more efficient).
.module-a { /* A bunch of stuff */ } .module-b { /* Some unique styling */ @extend .module-a; }Compiles into
.module-a, .module-b { /* A bunch of stuff */ } .module-b { /* Some unique styling */ }See that? It rewrites selectors, which is way more efficient.
Winner: SASS
Variable HandlingLESS uses @, SASS uses $. The dollar sign has no inherit meaning in CSS, while the @ sign does. It's for things like declaring @keyframes or blocks of @media queries. You could chalk this one up to personal preference and not a big deal, but I think the edge here is for SASS which doesn't confuse standing concepts.
SASS has some weirdness with scope in variables though. If you overwrite a "global" variable "locally", the global variable takes on the local value. This just feels kind of weird.
$color: black; .scoped { $color: white; color: $color; } .unscoped { // LESS = black (global) // SASS = white (overwritten by local) color: $color; }I've heard it can be useful but it's not intuitive, especially if you write JavaScript.
Winner: Tossup
Working with Media QueriesThe way most of us started working with @media queries was adding blocks of them at the bottom of your main stylesheet. That works, but it leads to mental disconnect between the original styling and the responsive styles. Like:
.some-class { /* Default styling */ } /* Hundreds of lines of CSS */ @media (max-width: 800px) { .some-class { /* Responsive styles */ } }With SASS or LESS, we can bring those styles together through nesting.
.some-class { /* Default styling */ @media (max-width: 800px) { /* Responsive styles */ } }You can get even sexier with SASS. There is a really cool "respond-to" technique (see code by Chris Eppstein, Ben Schwarz, and Jeff Croft) for naming/using breakpoints.
=respond-to($name) @if $name == small-screen @media only screen and (min-width: 320px) @content @if $name == large-screen @media only screen and (min-width: 800px) @contentThe you can use them succinctly and semantically:
.column width: 25% +respond-to(small-screen) width: 100%Note: requires SASS 3.2, which is in alpha, which you can install with gem install sass --pre. I don't think there is any doubt this is a very nice way to work.
Winner: SASS
MathFor the most part, the math is similar, but there are some weirdnesses with how units are handled. For instance, LESS will assume the first unit you use is what you want out, ignoring further units.
div { width: 100px + 2em; // == 102px (weird) }In SASS, you get a clear error: Incompatible units: 'em' and 'px'. I guess it's debatable if it's better to error or be wrong, but I'd personally rather have the error. Especially if you're dealing with variables rather than straight units and it's harder to track down.
SASS will also let you perform math on "unknown" units, making it a bit more futureproof should some new unit come along before they are able to update. LESS does not. There is some more weird differences like how SASS handles multiplying values that both have units, but it's esoteric enough to not be worth mentioning.
Winner: Narrowly SASS
Active DevelopmentAt the time of this writing...
Number of open issues on LESS: 392
Number of open issues on SASS: 84
Pending pull requests on LESS: 86
Pending pull requests on SASS: 3
Number of commits in the last month in LESS: 11
Number of commits in the last month in SASS: 35
None of that stuff is any definitive proof that one project is more active than the other, but the numbers do seem to always leans toward SASS. As I understand it, both of the leads work on the languages in whatever little free time they have, as they both have other major new projects they are working on.
Winner: Probably SASS
More Reading- Chris Eppstein: SASS/LESS Comparison
- Jeremy Hixon: An Introduction To LESS, And Comparison To Sass
- Ken Collins: Too LESS? Should You Be Using Sass?
- Johnathan Croom: Sass vs. LESS vs. Stylus: Preprocessor Shootout
SASS vs. LESS is a post from CSS-Tricks
Stop Redesigning And Start Tuning Your Site Instead
In my nearly two decades as an information architect, I’ve seen my clients flush away millions upon millions of dollars on worthless, pointless, “fix it once and for all” website redesigns. All types of organizations are guilty: large government agencies, Fortune 500s, not-for-profits and (especially) institutions of higher education.
Worst of all, these offending organizations are prone to repeating the redesign process every few years like spendthrift amnesiacs. Sadly, redesigns rarely solve actual problems faced by end users. I’m frustrated because it really doesn’t have to be this way. Let’s look at why redesigns happen, and some straightforward and inexpensive ways we might avoid them.
Artistic, Creative and Imaginative Painted Fingers and Hands
Boredom or spare 'empty' time can inspire people to do the strangest things with great results!
Finger art is just one of those strange but magical pastimes. There is probably more patience than skill required for the majority of examples of finger art, but in my opinion, patience is a skill in itself.
Here we have collected some very creative and effective finger art, followed by some painted hands that are truly artistically, imaginatively and skillfully created.
The following showcase is from the painted hands created by Guido Daniele, which have been given the name 'hanimals'. They are examples of stunning artistry and creativity. They can all be found on the Guido Daniele website.
The following hand paintings are also the creations of Guido Daniele, and are from a range created for an advertising campaign.
ConclusionI hope the painted fingers made you smile, and the painted hands produced the wow-factor for you.
Have you come across any painted fingers that are comical or cleverly imaginative that we missed from this list?
Please share your opinions and links with us in the section below.
Responsive Images and Web Standards at the Turning Point
Mat Marquis keeping us up to date on the responsive images hot drama. Good reminder at the end about not picking sides.
Direct Link to Article — Permalink
Responsive Images and Web Standards at the Turning Point is a post from CSS-Tricks
ShopTalk Episode 18
With ol' Mean Gene Crawford! We talk about crazy clients, responsive images, health, and all kinds of other shoptalk. Thanks to Mijingo for sponsoring this episode.
Direct Link to Article — Permalink
ShopTalk Episode 18 is a post from CSS-Tricks
Zocial Button Set: 72 CSS3 Buttons
The idea behind this project was to produce a consistent set of buttons that could be used for the range of social actions frequently taken in Web applications. These actions are often important goals for users, such as connecting third-party accounts or sharing content to third-party platforms, so their appearance has to be attractive and clear.
The standard buttons provided by third parties (such as Facebook, Twitter and SoundCloud) vary in size, style and interactivity. A consistent button set could reduce a lot of that visual noise and inconsistency. Furthermore, having it in CSS format means that changing the text for certain actions would be a breeze for developers, and it also allows administrators of non-English websites to translate labels into their native languages.
Betterment: Make Your Money Work Harder for Freelancers
Studies have shown, that if you can picture your future-self, it’s easier to increase savings – so how do you see yourself in the future?
People always have the mindset of working hard for money to secure their future or retirement but in these uncertain times where inflation, high cost of living, economic crisis and other mitigating factors, just working hard may not be the solution for a comfortable life in the future. This is especially important for freelancers where a fixed salary is often impossible. So you would want to make your money work harder, but how?
Well, you could try your luck on the lottery or gambling but this is definitely not recommended as the risk is high and the returns are unreliable. So the next thing you can turn to is investment, but are you undecided about which type of investment portfolio suits you? Do you lack the knowledge of what type of investment product to invest in? Do the terms, stocks, options, futures, bonds, mutual funds, certificates of deposit, money market investments, ETFs, Unit trusts and annuities confuse or even intimidate you?
That is where Betterment comes in.
What is Betterment?Betterment is a smart, simple way to invest, especially for freelancers and designers. Betterment allows freelancers to enjoy the investment benefits that their corporate counterparts receive, without having employer-sponsored retirement or investing benefits. This is because they can open both regular investing accounts to save for things like a house or more education, as well as IRA accounts to get some tax-advantaged retirement savings.
Well, let’s look at the idea behind Betterment. By shouldering the complexity of various investment products and removing lots of unnecessary choices, it’s investment made easy with Betterment.
Here’s a video run-down of how Betterment works:
Why Betterment is Great for FreelancersBetterment is a perfect investing product for freelancers and designers because:
- It has a sleek and simple UI - Signing up takes less than a minute, and determining how much money you want to invest in stocks versus bonds (your asset allocation) is as simple as moving a slider.
- Betterment is quick and easy to use. Freelancers are busy with their projects and clients and do not have time to constantly check and manage investment accounts. Everything with Betterment is a matter of a quick click or slider. Moreover, customers do not have to spend time picking the stocks or bonds in which they'd like to invest since Betterment has already done the work of creating a diversified portfolio (representing over 3500 companies in the US and abroad through 8 ETFs) for all of their customers.
- You can even access your Betterment account online or on your iPhone.
- Freelancing/design work can often be unpredictable as far as income is concerned, so freelancers often need to have quick access to their cash in an emergency. Most investment accounts come with minimums and withdrawal penalties, but with Betterment, there are no minimums and you can access your money at any time without a fee or penalty. Betterment combines the ease of online banking with the higher returns of investing in stocks and bonds.
- Many designers, freelancers, and entrepreneurs are already using Betterment! You can check out some of them here.
- Betterment was built by some of the best developers and designers in the financial technology space, so they understand how designers think! They won Best NY Startup at Tech Crunch Disrupt in 2010 and Best of Show at Finovate Fall 2010.
- Aside from those details, the way Betterment works is simple: You sign up, link your bank account, and set up investing goals, whether those goals are retirement, a vacation, a house, etc. They will recommend the right asset allocation and monthly contributions to make in order to achieve those goals, and you can always go back to the Betterment platform for more advice.
- Betterment takes care of important details for you: you are automatically diversified across the 8 ETFs, they automatically re-balance your account, and you can set up automatic deposits so you can regularly invest without lifting a finger.
The only fee Betterment customers ever pay is an annual management fee, which is 0.15% to 0.35% of your balance. You can see more details on pricing here.
Great FeaturesBetterment is very different from a traditional brokerage. After you open a Betterment account and connect a bank account, you will then choose your investing goal and timeline followed by your asset allocation.
After that, Betterment basically goes into autopilot mode and handles the rest. You are free to move on and let Betterment do their work. Betterment will invest your money in a mix of six stock Exchange Traded Funds (ETFs) and/or two Treasury bond ETFs. If you set up an automatic investing transfer (highly recommended) then Betterment will pull the money each month and invest it using the original asset allocation.
They also periodically re-balance your investments so that you maintain the proper asset allocation. For the management of your investments, Betterment charges a fee of 0.15% to 0.35%, depending on your account balance. There are no others fees that Betterment charges and no hidden fees, and there are also no minimum balance or investing requirements.
Free Allocation and Visualization toolsBetterment offers free allocation and visualization tools that they have available. The tools make it easy for the average investor to see what kind of returns they might project (given historical returns) if they invest with a 5, 10, 20 or even 30-year time horizon. Once you decide upon an allocation and time horizon that you are comfortable with, simply hit the button to change your allocation, and within a few minutes your changes are made!
You can check out their online demo here.
ConclusionInvesting could be a very tedious and time-consuming chore. That’s why Betterment comes in to take over your investment woes so you can concentrate on other more immediately important stuff. Betterment is very easy to use and simple to get started in less than 5 minutes. They strongly encourage automated investing and offer retirement investing through IRAs.
The best part is that they are highly liquid so you can move your money in and out of the brokerage without any fees or lock-in requirement. With the transparency of their fees and their sound knowledge of fund choices to broad index-based ETFs, Betterment could be well worth a try for anyone.
Disclaimer: Please note that Betterment is only for customers in the US.
PS: The opinions and views presented in this article on Betterment are solely those of the author and do not necessarily represent those of the company. We strongly encourage you to try the recommended product/service to experience it personally.
Random PostsSmashing Daily #1: Mobile Device Lab, Browsers and Animated GIFs
Editor's Note: This post is the first in the new Smashing Daily series on Smashing Magazine, where we highlight items to help you stay on the top of what's going on in the industry. Vasilis van Gemert will carefully pick the most interesting discussions, tools, techniques and articles that were published recently and present them in a nice compact overview. Smashing Daily #2 and Smashing Daily #3 are now published, too.
Vasilis goes through dozens of RSS feeds and hundreds of tweets so that you don’t have to. Do you find the new series interesting? What would you like to have? And what wouldn’t you like to see? Let us know! We’d love to hear your feedback in the comments!
The Font Wars: A Story On Rivalry Between Type Foundries
I had thought terms like “intellectual property” and “intellectual theft” were of fairly recent provenance, so my eye was caught by the latter’s use in a headline of a 1930 edition of the US trade journal The American Printer.
The article it headed proved to be equally intriguing, a response by the president of American Type Founders (ATF) to a June 1929 article in the German journal Gebrauchsgraphik by the designer Rudolf Koch, calling the ATF a “highway robber of German intellectual property.” At issue was a typeface marketed by the ATF earlier in 1929 called Rivoli.
Showcase of 50 Stunning Poster Designs
Although often overlooked, posters are, for sure one of the most excellent ways in which you can effectively communicate your clients’ information to their prospective customers or buyers. Although in the graphics industry designing or printing a poster is one of the most excruciating areas where clients would like to convey the whole thing from company to product to catch the attention of the most number of prospective customers.
Poster designs symbolize the fundamental nature of a business or event, and therefore can be a great way to demonstrate one’s creativity. They permit artists to put themselves across in innumerable ways. Unlike other print media, posters do not confine graphic designers with certain layouts and design elements. In this post, we have compiled a list of 50 Poster Designs for your inspiration. Hope you enjoy this assortment.
Showcase of Stunning Poster Designs Movie Posters Retro Futurism in Poster Design Vector Posters DesignSound Idea Presentation Cover Page
Microsoft Virtualization: Universe
Sony NEX 5: A little professional, Press
We are sure that after browsing this collection of poster designs you are now convinced that poster design is always an essential part of a designer’s profile. Posters can be designed for a variety of reasons be it movies or events or only for personal reasons, the design needs to be convincing so that you do not have to force the viewers to think from your perspective. What do you have to say about this assortment?
Taming The Wild Mind
Myths have developed around and researchers have studied how the human brain juggles creativity and organization. Popular theory tells us that the left brain is structured and logical, while the right brain is artistic and imaginative, and that all human beings use predominantly one side of the other.
Working in a creative field means challenging that theory, or else challenging the schedules and deadlines that managers impose on writers, designers and other creatives. As a project manager in a UX design agency, as well as a writer, I believe it is necessary to challenge both the assumptions about schedules and the belief that creativity implies disorganization.
Which responsive images solution should you use?
There are a bunch of techniques going around for dealing with responsive images lately. That is, solutions to help us serve the right image for the occasion (e.g. size of screen and bandwidth available). They all do things a bit differently. To keep track, Christopher Schmitt and I have created this spreadsheet of techniques.
The spreadsheet has the data, but let's digest it through thinking about it through the lens of practical questions.
To choose which technique is right for you and your project these questions may help as a guide. Many of the questions may apply to your project, so you'll have to sort out which techniques fit what scenarios and find the overlap.
Do I have legacy content?Which really means... do I have legacy content that is impractical to update? For instance, I have thousands of pages of content on CSS-Tricks and a writing staff of one.
Yeahhhh... I'm not going to go back and update every <img> on the site, so I need a technique that will allow me to leave those alone.The only technique I know of that works with absolutely no markup changes is Adaptive Images. It works by routing requests for images through a PHP file which intelligently serves (and creates if need be) images of the appropriate size for the screen width.
Another question to ask yourself is if you care about legacy content. Perhaps the vast majority of traffic to your site is for newer content in which you can make markup changes and thus take advantage of other techniques. If that's the case, read on to discover those other techniques.
If you have a small project, a brand new project, or a project with legacy content that you are able go back and update, you are also able to choose a technique which does require special markup, so also read on.
Do I care about special markup?This is really a sub-question of the above. Many of the techniques require you to use special HTML. For example, HiSRC has you put higher resolution images as data-attributes:
<img src="200x100.png" data-1x="400x200.png" data-2x="800x400.png">I'd say this is a clean, valid, semantic technique, but it also means that you need these attributes on every <img> on your site, which may not be possible on sites with loads of legacy content.
If you know that special markup (or specialized CSS) is not an option for you, really the only option is Adaptive Images. Even Sencha.IO requires prefixing the src attribute which may not be possible with legacy content.
Do I care about semantics?Some responsive images techniques involve markup which isn't strictly semantic. Ultimately, there is only one way an image can be semantic. That is if the src of it points to a real image and it has alt text describing that image. Brad Frost sums it up nicely:
@stowball Unfortunately its not that simple. A picture of a horse needs to be a picture of a horse or else its not a picture of a horse. :)
— Brad Frost (@brad_frost) April 5, 2012
In other words, if the technique requires at any point the src of the image to be missing or link to a transparent GIF (or the like), that's not semantic.
So why do some responsive images techniques do this? Because having an image with a src that points to that image of a horse means that that image will start downloading as soon as that image gets parsed by the browser. There is no practical way to prevent this. Even if you super quickly swap out that src with a more appropriate version, now you're downloading two images instead of one which is a performance hit instead of a performance gain. You may decide that's acceptable (e.g. "desktop" environments typically have more bandwidth). Usually if this technique is employed, the image in the src is the smallest possible image.
If semantics is important to you, you should look at Adaptive Images (covered above) or HiSRC, a plugin by Christopher Schmitt which you can use with a semantic src attribute.
A few of the techniques use <noscript> tags in which to place a fallback <img> in the case of no JavaScript being available. I'll let you decide if that's semantic or not.
Do I care about validity?Validity as in "Does it validate?" according to the W3C Markup Validation Service. Validation is a tool to help you find problems and write better markup. But just because something doesn't validate doesn't make it bad or wrong. If invalid code works wonderfully in all browsers, you nor anyone else should care.
If you do care about validity (perhaps a client irrationally requires it from you and is holding your paycheck randsom) then there are a few techniques that you can't use. The picturefill technique, for instance, uses the <picture> element to work its magic. This may ultimately be standarized, but it isn't yet, so it's technically invalid syntax. It's also required that <img> elements have a src attribute, so techniques that remove that to get around the double-image-request problem are invalid.
I'd recommend these techniques if validity is a requirement for you: Adaptive Images, HiSRC, or Responsive Enhance. All of which use simple, valid <img> syntax that include a src.
Do I care about art direction?Some responsive images techniques serve different resolution versions of the exact same image. While that makes things easier (i.e. less work) it may not acceptable. Here's a visual example:
On the left, the "mobile" and default src. In the middle, a slightly larger image that could be used on (ahem) "tablets". On the right, the largest of the images.(credit)These images are hand-crafted by a designer, cropped to retain meaning and impact. If you took the image on the right and just scaled it down, the people in the image would be very small and the feel of the image my be lost.
If this idea of art direction is important to your project, you'll need a technique that will allow you to specify exactly which src to serve under which circumstances. This is picture perfect (GET IT?) for picturefill which allows you to be very specific about sources and what circumstances get what.
<picture alt="description"> <source src="small.jpg"> <source src="medium.jpg" media="(min-width: 400px)"> <source src="large.jpg" media="(min-width: 800px)"> </picture>JavaScript takes it from there.
Do I care about JavaScript?Most of these responsive image techniques utilize JavaScript to work their magic. Some only a tiny bit to set a cookie, but JavaScript none the less. Some of them have you put an <img> in a <noscript> tag so that there is a fallback image in the case that the user has JavaScript turned off. If you don't like that, and you need to make absolutely sure that your images work without JavaScript, Sencha.IO is your best bet. This service works by identifying your device through it's User Agent string and serving an appropriately sized image. So you link to the largest (reasonable) version you have of it and Sencha will squeeze it down and server smaller versions if need be (it doesn't scale up, for obvious reasons).
What about JavaScript *library* dependency?HiSRC and rwdImages are both jQuery dependent. If your project is using a different library, these probably aren't for you. But hey, you could port it and open source that! If you aren't using a library, well, you probably should be but let's not get into that.
Do I care about Server Side Components?Some of these techniques aren't solely JavaScript dependent. Adaptive Images works it's magic primarily through .htaccess and PHP. Well, .htaccess presupposes an Apache server. And, while of course we all know and love PHP (ahem), many websites run on technologies like Ruby or Python.
Responsive Images (the original Filament Group technique) also uses .htaccess. So if you're using something like Nginx as web server, this is either out or you'll have to port over the .htaccess component to Nginx's similar-but-different syntax.
Do I care about bandwidth testing?Testing the browser window width and making decisions on what image to serve based on that is pretty cool and fundamental to the concept of responsive images. But it's really only half of what the decision of what image should be served should be based on. The other half is available bandwidth. If the user has a very fast internet connection speed, serving large images is OK. If the user has a very slow internet connection speed, they should get smaller images (regardless of screens size). Unfortunately native bandwidth media queries don't exist.
Two of the current techniques do bandwidth testing as part of their decision making: Foresight.js and HiSRC (both are based on the technique in Foresight.js). It works by downloading a test file and measuring how long it took (configurable). The test itself is a slight performance hit, but theoretically the savings gained by serving images based on knowing the current bandwidth is a net (GET IT?) gain.
Do I care about relying on third parties?Sencha.IO is a completely third-party way of handling responsive images. As far as I know, it works great and hasn't been inflicted with any major downtime, but of course you always run that risk.
You might be thinking: Wow, the Sencha.IO technique is really cool but I worry about the third-party dependency. I wish I could run that on my own server. If you want to go down that road, there is the public WURFL database and this Server Side Responsive Images technique which puts that to work locally.
There are also third-party services like Device Atlas Cloud which does device detection for you. It's also a third-party dependency for your app. No doubt their goal and focus is staying up and fast at all times, but you have to be very careful about who and what you rely on for your business.
Is there a specific CMS with specific CMS powers involved?Say your project is in WordPress. WordPress has a media uploader built in. When you upload an image with it, it can create multiple versions (scaling down) of that image for you. That's pretty cool and powerful and you could/should take advantage of that. Keir Whitaker talks about using that ability in his article Automatic Responsive Images in WordPress.
This isn't just a WordPress thing though. I'm sure the concepts at work here could be done (or made to be done) in any Content Management System.
Can I wait for the future?The release of the "new iPad" (the third one, for longevity) is what sparked a lot of these techniques and conversations. Its high pixel density is great for vectors and big photos, but actually not great for things like small icons that need to be scaled up to be the correct size and can be blurry. But serving higher resolution icons means larger file sizes and slower websites. Hence, the need to only serve them in situations/environments that need them.
The world of web standards is aware of this problem. There is a whole group dedicated to talking about it. In time, they may solve it and then we can start using whatever way they come up with (assuming its awesome and better than what we have now).
It may be flipping out the src of images through CSS content like Nicolas Gallagher suggested. It might be the <picture> element. It might be a srclist attribute in HTML or src property in CSS. It might be a prefix.
More resources
- Jason Grigsby has an epic three-part series on responsive images starting here.
- Christopher Schmitt's slides on a whole talk about responsive images.
- Mat Marquis on Responsive Images: How they Almost Worked and What We Need
Which responsive images solution should you use? is a post from CSS-Tricks
7 Non-Web-Based Wireframe Tools
Wireframes are a simple yet effective way to plan and prototype the layout of a website before writing any code. They help structure ideas and test assumptions, and are great for facilitating early feedback from clients. That's why, over the past few years, wireframing has become an integral part of web design and web development. Therefore, the question is not whether to create wireframes, but rather how.
Although there are dozens of web-based wireframe tools available, I prefer to do my wireframing in a native desktop application for the following reasons:
- I can work offline at places with poor or no internet connection, e.g. when riding the train or a plane.
- I am not dependent on someone else to take good care of their servers.
- I prefer to pay a one-time fee instead of monthly subscription charges.
- I have the freedom of knowing that I can continue using the tool even if its vendor goes out of business tomorrow.
In this article, I will introduce you to seven desktop-based wireframing tools for Windows, Mac OS X or Linux.
Non-Web-Based Wireframe ToolsWireframeSketcher
WireframeSketcher can be installed as a plug-in for any Eclipse-based IDE and is also available as a standalone application for Windows, Mac OS X and Linux. It lets you choose between two different styles for the look of your wireframes: Sketch (to make wireframes appear hand-drawn) and Clean (with crisp, straight lines). Other major features include the ability to create interactive prototypes and the possibility to present wireframes as storyboards.
WireframeSketcher can be tested for 14 days without restrictions; afterward, you have to pay $99 for a single-user license.
PowerMockup
PowerMockup is an add-on for turning Microsoft PowerPoint into a wireframe tool. It provides a library of wireframe elements and icons that you can drag and drop onto a PowerPoint slide. You can also create your own elements using standard PowerPoint shapes and add them to the library.
PowerMockup works with PowerPoint 2007 and 2010 (Windows only) and can be tested as a trial version free of charge. The full version is priced at $39.95.
SketchFlow
Another wireframing solution for Windows only is SketchFlow, a UI prototyping tool provided by Microsoft as part of its Expression Studio suite. While SketchFlow is a little complicated to use and has a rather steep learning curve, it is extremely powerful when it comes to creating interactive prototypes that simulate real functionality. You can bind controls to data sources or even make use of the .NET Framework for adding application behavior.
Expression Studio 4 Ultimate, which includes SketchFlow, costs $599. A 60-day free trial version can be downloaded from the Microsoft website.
Axure RP
Axure RP is one of the oldest and most comprehensive prototyping solutions available. It supports the whole chain from drawing quick wireframe sketches to creating interactive, high-fidelity design prototypes and generating detailed specifications.
Axure RP is available for Windows and Max OS X. To try it out, you can download a 30-day trial version from the Axure RP website. A single-user license for Axure RP costs $589.
Pencil
Among the seven tools listed in this article, Pencil is the only one that's completely free and Open Source. It can be installed as a Firefox add-on or as a standalone application for Windows, Mac OS X or Linux. Pencil is easy to use, includes a large set of stencils, supports linking between pages, can export to various formats, and allows you to create your own personal collection of stencils.
As mentioned before, Pencil is free (released under GPL version 2). Don't hesitate to give it a try.
MockupScreens
By default, MockupScreens uses a Windows XP style for the screen prototypes that you create. This makes them look a bit outdated at first, but you can easily switch to a different skin via a drop-down menu in the toolbar. Compared to other wireframing tools, MockupScreens provides a relatively small number of basic user interface elements and icons. Two great features of this tool are its ability to annotate individual elements and the possibility to group and arrange screens in scenarios.
MockupScreens is available for both Windows and Mac OS X. The price for the full version is $99.95.
DesignerVista
DesignerVista allows you to create both low-fidelity wireframes and high-fidelity GUI mockups. It supports page templates and themes, can export to HTML and PDF, has a slide show feature, and is able to generate UI specification documents.
DesignerVista runs on Windows XP or higher and is priced at $79.99 per license. A free 20-day trial version is available for download at the DesignerVista website.
Although some of these wireframe tools may seem costly, online tools can cost around $60 per month, so in the long run, offline tools can save you money and they are far more convenient.
Do you use an offline or web-based wireframe tool? Which is your choice? Please share your comments with us in the section below.
Interaction Design In The Cloud
Interaction designers create wireframes in tools such as Adobe Illustrator, OmniGraffle and Microsoft Visio. However, emailing your old static designs will feel old fashioned once you see what these new tools can do. Going a step further, there are tools for the user review process, too. Just upload your ideas, from simple mockups to final layouts, link them together, and share them for comment.
This article walks you through the current selection of cloud-based tools and provides some recommendations. The number of offerings and amount of functionality are pretty vast. We’ll address two functions: prototyping and wireframing. But if you’re intrigued, you might want to explore cloud-based image editing, mind-mapping tools and other UX activities. These tools are already out there, and surprisingly good.
