Tuesday, March 12, 2013

Your Daily digest for Tech Geek`s Tools, Tips, Tricks and Tutorials

Tech Geek`s Tools, Tips, Tricks and Tutorials
Pipes Output
Testing an Ad-Free Microtransaction Utopia
Mar 13th 2013, 00:05

MrAndrews writes "After reading a Slashdot story about adblocking and the lively discussion that followed, I got to wondering how else sites can support themselves, if paywalls and ads are both non-starters. Microtransactions have been floated for years, but never seem to take off, possibly because they come off as arbitrary taxation or cumbersome walled-garden novelties. Still, it seems like the idea of microtransactions is still appealing, it's just the wrapping that's always been flawed. I wanted to know how viable the concept really was, so I've created a little experiment to gather some data, to put some real numbers to it. It's a purely voluntary system, where you click 1, 2 or 3-cent links in your bookmark bar, depending on how much you value the page you're visiting. No actual money is involved, it's just theoretical. There's a summary page that tells you how much you would have spent, and I'll be releasing anonymized analyses of the data in the coming weeks. If you're game, please check out the experiment page for more information, and give it a go. Even if you only use it once and forget about it, that says something about the concept right there."

Share on Google+

Read more of this story at Slashdot.



IBM Designing Superman Servers For World's Largest Telescope
Mar 12th 2013, 23:22

Nerval's Lobster writes "How's this for a daunting task? By 2017, IBM must develop low-power microservers that can handle 10 times the traffic of today's Internet — and resist blowing desert sands, to boot. Sound impossible? Hopefully not. Those are the design parameters of the Square Kilometer Array (SKA) Project, the world's largest radio telescope, located in South Africa and Australia amid some of the world's most rugged terrain. It will be up to the SKA-specific business unit of South Africa's National Research Foundation, IBM, and ASTON (also known as the Netherlands Institute for Radio Astronomy) to jointly design the servers. Scientists from all three organizations will collaborate remotely and at the newly established ASTRON & IBM Center for Exascale Technology in Drenthe, the Netherlands. By peering into the furthest regions of space, the SKA project hopes to glimpse 'back in time,' where the radio waves from some of the earliest moments of the universe — before stars were formed — are still detectable. The hardware is powerful enough to pick up an airport radar on a planet 50 light-years away, according to the SKA team."

Share on Google+

Read more of this story at Slashdot.



France Demands Skype Register As a Telco
Mar 12th 2013, 22:41

jfruh writes "Skype made a name for itself by largely bypassing the infrastucture — and the costs, and the regulations — of the legacy telecommunications industry. But now the French telecom regulator wants to change that, at least in France. At issue is not the service's VoIP offering, but rather the Skype Out service that allows users to dial phones on traditional networks. Regulators say that this service necessitates that Skype face the same regulations as other telecoms."

Share on Google+

Read more of this story at Slashdot.



StarCraft 2: Heart of the Swarm Released
Mar 12th 2013, 22:00

Today Blizzard launched its first expansion to StarCraft 2, titled Heart of the Swarm. When initially developing StarCraft 2, Blizzard made the decision to split the game into three parts, each with a campaign as long as the original StarCraft. The initial release in 2010, Wings of Liberty, centered on the story of the Terrans. The newly-released Heart of the Swarm is focused on the Zerg. The final release, Legacy of the Void, will dedicate its campaign to the Protoss (and does not have a projected release timeframe yet). In addition to the new campaign, new units have been introduced for multiplayer and new maps have been added, which ought to shake things up in the competitive landscape. Blizzard has also made long-awaited improvements to the social system, including support for groups and clans.

Share on Google+

Read more of this story at Slashdot.



Ancient Mars Could Have Supported Life
Mar 12th 2013, 21:17

sighted writes "NASA is announcing that analysis of a rock sample collected by the Curiosity rover shows ancient Mars could have supported living microbes. Scientists identified sulfur, nitrogen, hydrogen, oxygen, phosphorus and carbon in the powder Curiosity drilled out of a sedimentary rock near an ancient stream bed in Gale Crater last month. The announcement quotes Michael Meyer, lead scientist for NASA's Mars Exploration Program: 'A fundamental question for this mission is whether Mars could have supported a habitable environment. From what we know now, the answer is yes.'"

Share on Google+

Read more of this story at Slashdot.



Is It Time To Enforce a Gamers' Bill of Rights?
Mar 12th 2013, 20:35

adeelarshad82 writes "The SimCity launch debacle is only the latest in an increasingly frustrating string of affronts to gamers' rights as customers. Before SimCity, we had Ubisoft's always-on DRM (that the company only ended quietly after massive outcry from gamers). We had the forced online and similarly unplayable launch of Diablo III. We had games like Asura's Wrath and Final Fantasy: All the Bravest that required you to pay more money just to complete them after you purchase them. And let us never forget the utter infamy of StarForce, SecuROM, and Sony's copy protection, which installed rootkits on computers without users' knowledge. As one recently published article argues, maybe it's time for gamers to demand adoption of a Bill of Rights."

Share on Google+

Read more of this story at Slashdot.



Japan Extracts Natural Gas From Frozen Methane Hydrate
Mar 12th 2013, 19:53

ixarux writes "For the first time ever, a Japanese company has successfully extracted natural gas from frozen methane hydrate off its central coast. The Nankai Trough gas field, located a little more than 30 miles offshore, could provide an alternative energy source for the island nation, reducing its dependence on foreign imports. 'A Japanese study estimated that at least 1.1tn cubic meters of methane hydrate exist in offshore deposits. This is the equivalent of more than a decade of Japan's gas consumption. Japan has few natural resources and the cost of importing fuel has increased after a backlash against nuclear power following the Fukushima nuclear disaster two years ago.'"

Share on Google+

Read more of this story at Slashdot.



U.S. Calls On China To End Hacking; Start Cyberspace Dialogue
Mar 12th 2013, 19:13

New submitter trickymyth writes "For the first time, the United States has mentioned the People's Republic of China in relation to cyber crime, officially acknowledging what has been long suspected by private security experts and the U.S. business community. The Obama Administration seeks to get the Chinese government to acknowledge the problem, to cease any state-sponsored hacker activity, and to start a dialogue on normative behavior on the internet. This announcement follows the recent 60-page report from the American cybersecurity firm Mandiant, who spent two years compiling evidence against the so-called 'Comment Crew.' They traced IP addresses, common behavior, and tools to track the group's activity, which led to a Shanghai neighborhood home to the People's Liberation Army (PLA's) Unit 61398. This tracking came at the behest of the Times, who has experienced some trouble with hacking in the past. The Chinese government rejected the report as 'unprofessional' and 'lacking technical evidence.' This announcement also comes amid a delicate leadership transition in China and numerous new reports on the vulnerability of U.S. business and government networks to attack."

Share on Google+

Read more of this story at Slashdot.



'Freedom of Information, Finally Made Easy' by MuckRock (Video)
Mar 12th 2013, 18:32

The quote in the title is from www.muckrock.com/about/. And that is exactly what MuckRock is all about: Making FOIA (Freedom of Information Act) requests for you (and investigative reporters) so you don't have to deal with the often-daunting paperwork and runarounds you may run into when you try to pry information out of a recalcitrant government agency. In theory, most government information is public. In practice, many local, state and federal government bodies would just as soon never tell you anything. This is why Tim Lord talked with MuckRock co-founder Michael Morisy, and why we're running this interview in the middle of Sunshine Week, which exists "...to educate the public about the importance of open government and the dangers of excessive and unnecessary secrecy."

Share on Google+

Read more of this story at Slashdot.



Ask Slashdot: Building a Cheap Computing Cluster?
Mar 12th 2013, 17:46

New submitter jackdotwa writes "Machines in our computer lab are periodically retired, and we have decided to recycle them and put them to work on combinatorial problems. I've spent some time trawling the web (this Beowulf cluster link proved very instructive) but have a few reservations regarding the basic design and air-flow. Our goal is to do this cheaply but also to do it in a space-conserving fashion. We have 14 E8000 Core2 Duo machines that we wish to remove from their cases and place side-by-side, along with their power supply units, on rackmount trays within a 42U (19", 1000mm deep) cabinet." Read on for more details on the project, including some helpful pictures and specific questions.

Share on Google+

Read more of this story at Slashdot.



Intrade Shutdown Hurts Academics
Mar 12th 2013, 17:04

New submitter jader3rd writes "Intrade, a popular Irish website that lets people bet on anything, has shut down. In addition to being used by gamblers, Intrade has been used by academics and pundits to track public sentiment. '"... broad crowds have a lot of information and that markets are an effective way of aggregating that information," says Justin Wolfers, "and they often turn out to be much better than experts."' Being forced to lose their U.S. customers couldn't have helped.

Share on Google+

Read more of this story at Slashdot.



Dr. Robert Bakker Answers Your Questions About Science and Religion
Mar 12th 2013, 16:23

Yesterday we ran the first half of Dr. Robert Bakker's essay in response to your questions. Below you'll find the second part which focuses on the history of science and religion, and the patron saint of paleontology, St. Augustine of Hippo. A big thanks goes out to Dr. Bob for his lengthy reply.

Share on Google+

Read more of this story at Slashdot.



Evidence For Comet-Borne Microfossils Supports Panspermia
Mar 12th 2013, 15:43

New submitter onyxruby writes "On December 29th of last year a comet exploded over Sri Lanka. When examined by Cardiff University one of the comet samples was found to contain micro-fossils akin to plankton. NASA's Marshall Space Flight Center tested additional samples with similar results. The research paper was published in the Journal of Cosmology. In practice this means that the argument that life did not start on Earth has gained additional evidence." Update: 03/12 16:59 GMT by S : On the other hand, Phil Plait says the paper is very flawed; the sample rocks the researchers tested may not even be meteorites.

Share on Google+

Read more of this story at Slashdot.



Canadian File Sharing Plaintiff Admits To Copyright Trolling
Mar 12th 2013, 14:54

An anonymous reader writes "Canipre, a Montreal-based intellectual property rights enforcement firm, has admitted that it is behind the Voltage file sharing lawsuits involving TekSavvy in what is described as a 'speculative invoicing' scheme. Often referred to as copyright trolling, speculative invoicing involves sending hundreds or thousands of demand letters alleging copyright infringement and seeking thousands of dollars in compensation. Those cases rarely — if ever — go to court as the intent is simply to scare enough people into settling in order to generate a profit. The Canipre admission is important because it is consistent with arguments that the case involves copyright trolling and that the Canadian Federal Court should not support the scheme by ordering the disclosure of subscriber contact information."

Share on Google+

Read more of this story at Slashdot.



Defcad.com Wants To Be the Google of 3D-Printable Guns
Mar 12th 2013, 14:13

Sparrowvsrevolution writes that at this year's SXSW, Defense Distributed founder Code Wilson has announced a for-profit spinoff of his gun-printing project, from which people will be able to search for and download gun-related CAD files. "Though the search engine will index all types of files, Wilson says he hopes the group's reputation for hosting politically incendiary content will mean users trust that it won't censor search results. 'When we say you should have access to these files, people believe we mean that,' says Wilson. 'No takedowns. No removals. We'd fight everything to the full extent of the law.' Along with the SXSW announcement, Wilson also released a provocative video where he lays out the plan for Defcad.com and criticizes gun control advocates and 'collusive' 3D printing companies like Makerbot."

Share on Google+

Read more of this story at Slashdot.



What If Manning Had Leaked To the New York Times?
Mar 12th 2013, 13:25

New submitter minstrelmike points outs a two-page editorial in the NYTimes "about what would have been different legally, morally, and security-wise," had the military information released through WikiLeaks been published by the Times instead. "'If Manning had delivered his material to The Times, WikiLeaks would not have been able to post the unedited cables, as it ultimately did, heedless of the risk to human rights advocates, dissidents and informants named therein. In fact, you might not have heard of WikiLeaks. The group has had other middling scoops, but Manning put it on the map.' The writers also discusses what the Times would and would not have done, admitting they probably wouldn't have shared with other news outlets, but also admitting they would definitely have not shared everything."

Share on Google+

Read more of this story at Slashdot.



UX Strategy: Designing For The Multifaceted User
Mar 12th 2013, 12:58


  

Designing with users in mind is a tricky thing. Not only does it require of us a sound understanding of who our users are, but the actual act of translating what we know about them into a well-designed product is not always an obvious or easy path.

Currently, our user experience tools tend to focus on "who" users are. I believe this is a hangover from how we traditionally approached marketing and market research. A couple of years ago, I stumbled across a somewhat different method, which has proven useful in a few of my own projects. It has been particularly handy for building value propositions and for clarifying assumptions we make about our users' behaviours. Most of all, I like how it helps with prioritizing product design decisions.

So, first, let me explain where I think our current toolset falls short, and then I'll walk you through an example that uses this newer technique. By the end of this article, you should be ready to give it a try yourself.

We Are Multifaceted

Put yourself in the shoes of a user for a moment. Imagine that a friend has introduced you to a new Facebook group about a subject you both like. If you are the shy sort, like me, you would lurk around for a little while. Once you became more familiar with the group's dynamics, you might gradually become bold enough to post a comment or share an appropriate link.

Imagine also, then, that you've stumbled upon a blog post on a topic that you care strongly about. Someone has posted a comment that you completely disagree with — I'll wager that, if you're fired up, you would post almost immediately, rather than take the time to absorb previous posts. You remain the same person, yet your reaction to something will depend on what it is and what is happening at the time. This is normal.

SGreenier_EmotionWheel-11
Acting differently according to circumstance and context is natural. Image source.

What does this mean for us as designers? For me, it means that our deliverables right now are probably too prescriptive in their details about who the user is. We would probably do better to work towards a clearer understanding of the user's varying contexts — contexts that would yield different behaviors and decisions.

In short, our current tools tend to focus on the person, not on predicting their reactions and, therefore, what we should effectively be designing for.

Personas, User Journeys, Mental Models?

Personas, when created properly based on research, distill what we know about a few key user profiles. They have many advantages, particularly in enabling a common language among stakeholders about who our users are. User journeys and experience maps show a potential path that a user can take through an application or website. They are great for understanding flows and for mapping user needs to functionality.

However, both of these tools, and others similarly derived, take on a depth-wise view of the user. User journeys can map out specifically what a user may do, too, but not take into account why they make certain decisions. With personas, you garner some degree of knowledge about users' background contexts and activities, but they might contain more detail about particular user profiles than what you need to design app-wide features.

Consider what is actually involved in your typical design process. At any stage, your design needs to cater to different activity flows. As designers, we often have to collapse a complex range of user behaviors into quantifiable feature sets that could feasibly fit a product management schedule.

Between personas and user journeys, it would get unwieldy to explore and map these complex ranges of behavior in a way that wouldn't give us a headache. The closest tool we have at our disposal is the mental model, with which you map out a user's intentions and tasks. However, a generic use of mental models doesn't always take different contexts into account at a glance.

The question remains, how can we better position a product or design an interface that maps onto users' decision patterns when their behaviors and motivations span a spectrum?

Modelling User Groups

I finally found a semblance of the method I'd been looking for while gate-crashing a guest lecture by a friend and colleague, David Rollert, a designer with extensive experience.

Holding a roomful of smart design-engineering students at his attention, David showcased a number of user experience tools that day, including a way to model groups of users. Using a dating website as an example, he explained how we can define key "dimensions" of customer groups (figures 1 and 2 below). This first step is not dissimilar to what we often already do when creating personas. The following diagrams are quoted from David's slide deck, with his blessing.

Demographic dimensions for a dating service
Figure 1. Demographic dimensions for a dating service.

Psychographic dimensions for a dating service
Figure 2. Psychographic dimensions for a dating service.

This next step is where we start to look for patterns. Then, picking two of these dimensions, he showed an example of a 3 × 3 matrix where you could map someone's immediate goal relative to the role they preferred to play (figure 3). In order to fill in the matrix, David asked the question, "What does each group need?"

Mapping target customers: what does each group need?
Figure 3. Mapping target customers: What does each group need?

A similar technique of user modelling is mentioned in A Project Guide to UX Design by Russ Unger and Carolyn Chandler (chapter 6, page 90), but it barely spans a page. While emphasizing the need for real user research, this reference still aligns with what we've always done — grouping users according to who they are, rather than what the users want to do or what drives them.

I thought it was fascinating. Rather than asking the question of "who" these customer groups are, what if we were to ask different questions? Such as, "What do these groups of users want to do?" or "What do they need to know?" Over my next few projects, I started incorporating this technique into my own work with clients, and it has turned out to be a useful tool on many occasions.

Before getting much further, I want to point out that this method is not a deliverable. It is not something you just draw up and send over to your client or product manager for sign-off. It is a technique that is most effectively used in a workshop format with all stakeholders in the same room.

Exploring Our Assumptions About Users

"User" has become such a loaded word. We pile all our beliefs, interpretations and emotional baggage onto the word "user" and on what they would want. Having been on many teams, I've started to realize that it's a common problem that not all stakeholders and team members understand the word "user" in the same way. This is why having a set of personas internally can help iron out the issue of language.

However, the problem with personas is that they place a particular user on a map discretely, but they are not necessarily the best high-level tool for looking at continuous spectrums of user contexts.

The matrix technique explores what we know and what we don't know about our users by looking through the lens of contexts for their behaviors and motivations.

I've used this method to do the following:

  • to establish key audiences;
  • to understand or validate value propositions;
  • to help prioritize research areas and product features — to identify what we already know and where we lack data;
  • to pinpoint which features are vital.

It is essentially a structured brainstorming tool to make sense of user patterns. Best of all, it can be an easy way to unpack assumptions that each stakeholder is making about their users.

Step 1: Draw Your Matrix

In the many times I've since done this little thinking process with clients or workshop attendees, a 3 × 3 grid has worked best for me. This is probably because it gives enough variation without being too precise — thereby keeping us from getting analysis-paralysis.

A blank matrix.
Figure 4. A blank matrix.

Step 2: Identify Important Axes

The next step is to identify how many of these different "selves" of our users can exist in this system we are designing for.

Let's talk about the example of a potential social app for runners. It's a straightforward offering with which local runners can post routes and visiting runners can find routes. We could imagine virtual competitive elements; a runner might have previously posted a time that you are trying to beat on the same route. Or you might just want a scenic run as a way to explore a new city's environments.

What kinds of behavioural attributes can we come up with for runners who would likely use this app? I tend to think in terms of "opposing" attributes. You might end up with a list looking like this and the corresponding user stories:

  • explorative
    "I want a new way to experience this city through running."
  • competitive
    "I like to race against someone else, or against myself."
  • frequent
    "I run a lot, several times a week to every day."
  • occasional
    "I run once a week or less."

Your axes might then look like this:

curious engaged
social individual
explorative competitive
frequent occasional
visitor local

Depending on the project you are working on, you may or may not know something about the users you are talking about. The team with which we explored the idea of this social app belonged to a sports shoe company and consisted entirely of runners who travel fairly frequently to run marathons. They had also done studies previously and gotten some ideas of the spectrum of novice runners to advanced runners, and some insight into the kinds of people who use an existing Web app that they produced.

As you go through this exercise, keep in mind what you know about your users and what you are presuming. From the list above, choose two axes that most interest you or that you think are worth exploring. Choosing might be difficult if you are just starting with this method; in which case, the best thing to do is to dive in and see what happens. If it doesn't work or if ideas don't seem to flow, change your axes and keep going.

A blank matrix with a pair of key axes.
Figure 5. A blank matrix with a pair of key axes.

Step 3: Identify Key Questions

I liken this step to a "magic 8 ball" process. Ask a question! I generally like, "What would these users want to do?" Or, even more simply, "What do they want?" The latter question would cover what users want to know and what they would want to do. You could also ask questions like, "How would they feel?" as a kind of emphatic exercise.

As you think up questions, keep a list handy. You'll need it later.

In this example, let's stick with "What can they do?" Or, from a user's perspective, "What can I do with this app?"

A blank matrix with axes and question.
Figure 6. A blank matrix with axes and a question.

Step 4: Fill It Up

Fill in the matrix as best you can. If you already have some insights from research, then mark which things you know for certain, as opposed to things you believe to be true but have nothing yet to back it up.

Generally, by the time you've filled the first matrix, you'll have a fairly good idea of what information you already know about your users and what further research might be required.

Filling in a matrix.
Figure 7. Filling in a matrix.

Step 5: Iterate

Once you are done with the first matrix, set that aside, and draw another blank grid.

You can do one of two things:

  1. Pick another question from your list, "What do these users need from us?"; or
  2. Switch one of your axes to something different, but stick to the same question.

Start filling in the matrix again from the top. Remember, this is a brainstorming process. Putting down ideas that you can refine later is more important, so try to move rapidly through each iteration.

When you have done as much as you can with this iteration of the matrix, do the dance again: pick another question, or switch another axis.

It's best when your team collectively chooses which questions and spectrums to think about.

Rinse and repeat. You'll likely find that you can generate a lot of matrices in the space of just an hour, even if it may be a slow start at first.

Analysis And Key Insights

Once you have done a few of these, it is time to sit back and look for patterns. Let's look at a few things that could emerge.

Assumptions vs. Knowledge

One important thing to remember — I cannot emphasize this enough — is when you and your team sit down and write this all out, what you have is merely a summary of a complex set of assumptions. As you manage your discussions around any insights, keep in mind that you are discussing various degrees of potential truth. This is an handy tactic to avoid getting into fights about too much detail!

With your matrices in hand, now is a very good time to see which set of users we already know about, and how confident we are in stating their needs. Obviously, it is also a very good time to identify which users we know nothing about. Have we already done any research on any of these user groups? Do we have any case studies that back up any of the answers we have listed in the matrices? In short, what do we know, and what don't we know?

If we don't have any evidence at hand to back up some of these user needs we have written down, then these are merely assumptions that we need to test. Assumptions are great because they serve as perfect design hypotheses. With this set of matrices, we can now identify what kind of user research we need to undertake to validate our assumptions.

Common Factors

Quite often you'll notice that some questions generate similar results all the way down one column or one row. For example, in figure 7, we assumed that all "exploring" users would likely be interested in finding new routes regardless of whether they are locals or visitors and, similarly, that all "competitive" users would likely be interested in time-keeping.

Nothing is wrong with this; it just means that when we come to test for these needs, we will have some parameters to decide what kind of users we need to talk to. And when we come to design for these scenarios, these features will likely represent the "baseline" functionality to include in our app.

Priority and Dependencies

Sometimes, when you are trying to prioritize features, the practice of generating these user matrices can help you unpack some clear dependencies. In the case of our app, it became clear very quickly that the type of users who would populate the routes in a meaningful way would be locals — before being used by visitors. This means we needed to make the app attractive to local runners first, from all standpoints: in our feature set, in our communications and in our marketing.

Core Value Proposition

"Value proposition" is just a fancy way of describing the promise of the value you will be providing to customers. When you work through a set of matrices, you might find that you have a clearer view of what you are really promising users by addressing the ranges of users' needs and contexts.

As for our little example, we had done a handful of matrices in less than an hour. Suddenly, one of the team members shouted excitedly, "'I wish I knew where to run!' That is the question we need to answer!"

I handed her the pen, and she scribbled the figure below (8) at the bottom of our last matrix. We knew then that, for this app to succeed, we would have to be able to answer this question, no matter what the user's context — and that would be our core value proposition at its rawest. With this, we now had an excellent focus on the reasoning behind the design, and we'd just given ourselves a clear fundamental principle through some bottom-up thinking.

Value proposition.
Figure 8. Value proposition.

Taking It Further

So, we have a set of matrices on our hands and some high-level analysis and insight. What next?

First, as with many workshop tools that encourage structured brainstorming, the process is as important as the result itself, possibly more so. As I stated in the beginning, this process doesn't generate a pretty formatted deliverable — rather, it clarifies how we really think about our users.

Having gone through the process of generating these matrices and analyzing them, you should find that you can take on subsequent challenges with more clarity:

  • Decide which user groups require more research, from which you can generate personas, mental models and user journeys for more detailed tasks, if required.
  • Establish a product road map based on having identified which needs should be met across user groups, so that you can decide which features to design and build together.

One happy little byproduct of expressing user needs through such matrices is that you can delineate each of them into a corresponding user story, which fits nicely into an agile methodology. Using our app again as an example, we can create a user story like, "As a local runner, I want to find new routes to run." You could then decide whether that user story is a validated user need; if so, you could transfer it into a design-then-build process.

When Does It Work Best?

I've successfully used this method in conjunction with others when I help startups figure out how to approach their user base, and also what they ought to build first. It fits neatly into methodologies such as the Lean Startup because it creates a structured basis for generating hypotheses. I've found it to be excellent both as a preliminary thinking tool to facilitate design decisions and as a synthesizing tool in the process of user research.

No doubt, as you explore this method, you may find other ways it works for you, or not at all. You could say that there is the right tool for every job, but sometimes the best tool is the one that gets the job done in the simplest and quickest way.

In this case, we have a very simple way to enable us to think about the ranges of user behaviors and motivations — while keeping their contexts in mind.

Further Reading

Acknowledgements

Many thanks to David Rollert, who sparked the idea for the approach described in this article, and who I hold wholly responsible for opening my eyes to better ways to achieve great user experiences.

(al)


© Stephanie Troeth for Smashing Magazine, 2013.

RSF Names Names In Report On Online Spying
Mar 12th 2013, 12:44

eldavojohn writes "Reporters without Borders has released a report on governments and the companies they employ to spy on their own citizens online. Syria and China were singled out as the worst with Iran, Bahrain and Vietnam not far behind. In addition, RSF named names when it came to the corporate entities (a market worth 5 billion dollars) that provided specific services to these oppressive governments: Gamma, Trovicor, Hacking Team, Amesys and Blue Coat. The report is aptly titled 'Enemies of the Internet' and, though lengthy, provides a detailed examination in the destruction of online rights as well as very specific attacks each government employs. RSF also noted the many attempted solutions to these problems and a link to their online survival kit."

Share on Google+

Read more of this story at Slashdot.



Bitcoin Blockchain Forked By Backward-Compatibility Issue
Mar 12th 2013, 12:03

New submitter jhantin writes "The Bitcoin blockchain has forked due to a lurking backward-compatibility issue: versions older than 0.8 do not properly handle blocks larger than about 500k, and Slush's pool mined a 974k block today. The problem is that not all mining operations are on 0.8; blocks are being generated by a mix of several different versions of the daemon, each making its own decision as to which of the two forks is preferable to extend, and older versions refuse to honor or extend from a block of this size. The consensus on #bitcoin-dev is damage control: miners need to mine on pre-0.8 code so the backward-compatible fork will outgrow and thus dominate the compatibility-breaking one; merchants need to stop accepting transactions until the network re-converges on the backward-compatible fork of the chain; and average users can ignore the warning that they are out of sync and need to upgrade." Turns out there's an approximately 512K limit to atomic updates in Berkeley DB which were used by versions prior to 0.8. 0.8 uses a new database, allowing blockchains that old versions won't accept to be created.

Share on Google+

Read more of this story at Slashdot.



Don't Write Them Off: A Palm Retrospective
Mar 12th 2013, 09:06

An anonymous reader writes "OSNews' managing editor Thom Holwerda has posted a lavish five-part retrospective on Palm, covering its history, user interface, internal technology, and competition. Holwerda first pays tribute to the pioneers of automatic handwriting recognition, including two remarkable stylus tablets (connected to mainframe computers) produced by RAND Corporation during the 1960s. The action picks up a couple decades later as Jeff Hawkins implements a handwriting recognition engine for his employer, the makers of the high end GRiD compass (MS-DOS) laptop. Hawkins dreamed of developing handwriting recognition for a device small enough to be carried around in one's pocket and cheap enough to be sold to a mass market. Along the way he had an epiphany: instead of trying to recognize the user's natural handwriting, why not create a simple alphabet that could be recognized reliably by the software? When Bill Gates entered the game, Hawkins had another big idea: why not compete against the Microsofts of the world by having fewer features, instead of more?" The handwriting recognition part is chock full of screenshots and video demos of early recognition systems, too.

Share on Google+

Read more of this story at Slashdot.



Dad Hacks "Donkey Kong" - Now Pauline Rescues Mario
Mar 12th 2013, 08:06

H_Fisher writes "What do you do when your daughter wants the girl to be the hero of your old video game? If you're Mike Mika, you hack the game ROM to reverse the roles. He even changed the 'M' at the top of the screen to a 'P.'"

Share on Google+

Read more of this story at Slashdot.



Bolt CMS: Simple & Straightforward Content Management
Mar 12th 2013, 07:10

Advertise here via BSA

Bolt is a tool for Content Management, which strives to be as simple and straightforward as possible. It is quick to set up, easy to configure, uses elegant templates, and above all: It's a joy to use. Bolt is created using modern open source libraries, and is best suited to build sites in HTML5 with modern markup.

Bolt is written in PHP, and uses either SQLite, MySQL or PostgreSQL as a database. It’s built upon the Silex framework together with a number of Symfony components and other libraries. Bolt is released under the open source MIT-license.

bolt-cms

Requirements: PHP Framework
Demo: http://bolt.cm/
License: MIT License

Sponsors

Professional Web Icons for Your Websites and Applications

CSS3 Selectors: Structural Pseudo-Classes Part 1
Mar 12th 2013, 07:01

Advertise here via BSA

Today's front-end developers don't just need to understand how to write CSS, we need to know how to write it efficiently. And what "efficiently" means can depend on your project and environment. Perhaps you have a team with several members working in the CSS and you need an efficient way to work together. Or maybe you have a huge enterprise site and you need your CSS optimized for speed. You could even be working with a legacy system that restricts access to HTML, which means you need efficient selectors to effectively style elements without ids or classes. You might even face all these situations and more.

Whatever your goals for CSS are, the best way to reach them is to know your options, and that means understanding all the selectors available to you. Most of us are already familiar with id and class selectors, and I introduced you to the beauty of attribute selectors in "Understanding CSS Selectors." But there's so much more.

In this two-part series, I'll look at the new selectors in CSS3, starting with structural pseudo-classes.

What's a Pseudo-Class?

CSS pseudo-classes target elements that can't be targeted with combinators or simple selectors like id or class. You use pseudo-classes to select elements based on their attributes, states, and relative position. For example, you are probably already familiar with pseudo-classes for link states:

:link
:visited
:hover
:active
:focus

CSS3 introduces a number of new pseudo-classes, including structural pseudo-classes that target elements according to their position in the document tree and relation to other elements. Here's a list of the structural pseudo-classes you'll see examples of in this article.

:root
: only-child
:empty
:nth-child(n)
:nth-last-child(n)
:first-of-type
:last-of-type
: only-of-type
:nth-of-type(n)
:nth-last-of-type(n)
:first-child
:last-child

Before we look at the details, let's touch briefly on the syntax you use with pseudo-classes.

Pseudo-Class Syntax

The syntax for pseudo-classes uses a colon (:) followed by the pseudo-class name:

:pseudo-class {}

If you want to target a specific element (e), you append that element to the beginning of the pseudo-class syntax:

e:pseudo-class {}

You can even use pseudo-classes alongside id and class selectors, as you see here:

#id:pseudo-class {}

.class:pseudo-class {}

Numeric Values

Some of the CSS3 pseudo-classes target elements on the basis of the elements' specific location in the document tree. You indicate the position with a numeric value in parenthesis (n) appended to the pseudo-class name:

:pseudo-class(n) {}

The value of (n) can be an integer to indicate an element's position in the document tree. The following example targets the third element that meets the pseudo-class rule:

:pseudo-class(3) {}

You can also specify numeric formulas, such as "every fifth element," which is indicated as a value of (5n):

:pseudo-class(5n) {}

Additionally, you can specify an offset formula (negative values allowed; default is zero) by adding (+) or subtracting (-) the offset value:

:pseudo-class(5n+1) {}

These new selectors also allow you to target elements by their document tree order with the keywords odd and even. For example, if you want to target the odd-numbered elements, use the following:

:pseudo-class(odd) {}

Putting Pseudo-Classes to Work

Now that you've seen the general syntax, let's look at some of the new selectors in more detail and see examples of the style effects you can achieve by using them.

:root

The :root pseudo-class targets the root element—the html element. Consider the following basic markup for a page:

<!DOCTYPE html>    <head>    <title>Getting to Know CSS3 Selectors</title>    </head>    <body>    </body>    </html>

If you want to apply a main background color to this page, with a different background color to show a "container," you could do this with CSS only and no new markup, as shown here:

:root{    background-color: rgb(56,41,48);    }    body {    background-color: rgba(255, 255, 255, .9);    margin: 0 auto;    min-height: 350px;    width: 700px;    }

In this example, I applied the background color to the html element via :root and applied the styles for the container via a type selector for body. This results in the simple visual layout shown in Figure 1.

Figure 1 An example of a page with a dark background color assigned to the root html element and a lighter background color assigned to the body element.

: only-child

The : only-child pseudo-class targets an element that is the only child of its parent. That means the parent element contains only one other element. The : only-child pseudo-class is different from the :root pseudo-class, which assumes the html element. You can use : only-child to target any element by appending the pseudo-class syntax to the element (e), like this:

e: only-child {}

For example, perhaps you have a block of text in which you promote a new item:

<h2><b>Available Now!</b> Paperback edition of The Zombie Survival Guide: Complete Protection from the Living Dead</h2>

If you want to style the text "Available Now" as a callout, you could use : only-child to target the b element, which is the only child of the h2. Figure 2 shows the code you would use.

h2 {    background: rgb(255, 255, 255) url(zombies.png) no-repeat 97% 4%;    border: 1px solid rgba(125, 104, 99, .3);    border-radius: 10px;    color: rgb(125,104,99);    font: normal 20px Georgia, "Times New Roman", Times, serif;    padding: 20px 20px 20px 60px;    position: relative;    width: 450px;    }    b:only-child {    background-color: rgb(156,41,48);    color: rgb(255,255,255);    display: block;    font: bold 12px Arial, Helvetica, sans-serif;    font-weight: bold;    letter-spacing: 1px;    padding: 10px;    text-align: center;    text-transform: uppercase;    -moz-transform: translate(-70px)    rotate(-5deg) matrix(1, -0.2, 0, 1, 0, 0);    -moz-transform-origin: 50px 0;    -webkit-transform: translate(-70px)    rotate(-5deg) matrix(1, -0.2, 0, 1, 0, 0);    -webkit-transform-origin: 50px 0;    -o-transform: translate(-70px)    rotate(-5deg) matrix(1, -0.2, 0, 1, 0, 0);    -o-transform-origin: 50px 0;    -ms-transform: translate(-70px)    rotate(-5deg) matrix(1, -0.2, 0, 1, 0, 0);    -ms-transform-origin: 50px 0;    transform: translate(-30px)    rotate(-5deg) matrix(1, -0.2, 0, 1, 0, 0);    transform-origin: 50px 0 0;    width: 150px;    }

Figure 2 Use the : only-child pseudo-class to callout and emphasize text within a heading.

This CSS results in the visual callout seen in Figure 3, which doesn't need any id or class attributes added to the HTML.

Figure 3 An example of a callout for a product promotion.

:empty

The :empty pseudo-class targets elements that don't have any children or any text—an empty element such as:

<p></p>

Personally, I can't think of a situation when I would allow an empty element to be rendered on a site, but that doesn't mean there isn't an edge case. In terms of syntax, you could target every empty element with the pseudo-class on its own:

:empty {    background-color: red;    }

Or, as in the example of the : only-child pseudo-class, you can target a specific element, like td:

td:empty {    background-color: red;    }

:nth-child(n)

This is the first pseudo-class I'm covering that takes advantage of the numeric values described earlier. The :nth-child pseudo-class targets a child element in relation to its position within the parent element. A list of blog comments, for example, might look nice with alternating background colors, as in Figure 4.

Figure 4 An example of a list of blog post comments with alternating styles

The HTML for this example is just an ordered list, as shown in Figure 5.

<ol>    <li>    <p>March 14, 2012</p>    <a href="http://nocommonsense.com"><img src="tdog.jpg" alt="T-Dog" /></a>    <p><a href="http://nocommonsense.com">T-Dog</a></p>    <p>C'mon, man, don't give me that gansta s**t!</p>    </li>    <li>    <p>March 13, 2012</p>    <a href="http://itsallblackandwhite.com"><img src="rickgrimes.jpg"    alt="Rick Grimes" /></a>    <p><a href="http://itsallblackandwhite.com">Rick Grimes</a></p>    <p>You want to kill me, you're going to have to do better than that    wrench.</p>    </li>    <li>    <p>March 13, 2012</p>    <a href="http://becameawalker.com"><img src="shanewalsh.jpg"    alt="Shane Walsh" /></a>    <p><a href="http://becameawalker.com">Shane Walsh</a></p>    <p>You can't just be the good guy and expect to live. Not anymore.</p>    </li>    </ol>

Figure 5 The HTML for the blog post example.

To style this markup, I first target the list items with a simple type selector, as shown in Figure 6:

li {    background-color: rgba(194, 181, 158, .5);    background-image: -webkit-gradient(linear,    left top, left bottom,    from(rgba(194, 181, 158, .7)),    to(rgba(194, 181, 158, 0)));    background-image: -moz-linear-gradient(top,    rgba(194, 181, 158, .7),    rgba(194, 181, 158, 0));    background-image: -o-linear-gradient(    rgba(194, 181, 158, .7),    rgba(194, 181, 158,    0));    border: 1px solid rgb(194, 181, 158);    border-radius: 10px;    margin: 15px 0;    padding: 25px;    }

Figure 6 Styles for the blog post example.

Then, using the :nth-child() pseudo-class, I target the even-numbered list items:

li:nth-child(even){    background-color: rgba(242, 224, 131, .5);    background-image: -webkit-gradient(linear,    left top, left bottom,    from(rgba(242, 224, 131, .7)),    to(rgba(242, 224, 131, 0)));    background-image: -moz-linear-gradient(top,    rgba(242, 224, 131, .7),    rgba(242, 224, 131, 0));    background-image: -o-linear-gradient(    rgba(242, 224, 131, .7),    rgba(242,224, 131, 0));    border: 1px solid rgb(242, 224, 131);    }

:nth-last-child(n)

The :nth-last-child(n) pseudo-class works just like :nth-child(n), except the order is determined in relation to the last child element, rather than the first. Using the same blog comments example, consider the content within each list item:

<li>    <p>March 14, 2012</p>    <a href="http://nocommonsense.com"><img src="tdog.jpg" alt="T-Dog" /></a>    <p><a href="http://nocommonsense.com">T-Dog</a></p>    <p>C'mon, man, don't give me that gansta s**t!</p>    </li>

Each of the paragraph elements that comprise the comment need to be uniquely styled, as does the image. (See Figure 7).

Figure 7 This blog comment features different styles for the different types of content within it

For the commenter name and link, I use the :nth-last-child(n) pseudo-class with a numeric value to target the second-to-last paragraph within the list item:

p:nth-last-child(2) {    clear: left;    float: left;    font-size: 12px;    margin-top: 5px;    text-align: center;    width: 80px;    }

:first-of-type

The :first-of-type pseudo-class targets the first of a specific type of element within a parent. In the blog comment example, I can target the date content as the first paragraph within the list item:

<li>    <p>March 14, 2012</p>    <a href="http://nocommonsense.com"><img src="tdog.jpg" alt="T-Dog" /></a>    <p><a href="http://nocommonsense.com">T-Dog</a></p>    <p>C'mon, man, don't give me that gansta s**t!</p>    </li>

Using :first-of-type, I style the first paragraph (containing the date) to be right-justified with a bottom border:

p:first-of-type {    border-bottom: 1px solid rgba(56,41,48, .5);    float: right;    font-weight: bold;    padding-bottom: 3px;    text-align: right;    width: 560px;    }

:last-of-type

The :last-of-type pseudo-class targets just what the name says: the last element type within a parent. In the blog example, I can style the comment text in the last paragraph like this:

<li>    <p>March 14, 2012</p>    <a href="http://nocommonsense.com"><img src="tdog.jpg" alt="T-Dog" /></a>    <p><a href="http://nocommonsense.com">T-Dog</a></p>    <p>C'mon, man, don't give me that gansta s**t!</p>    </li>

In Figure 7 you can see how I used :last-of-type to style the last paragraph. Here is the CSS I used:

p:last-of-type {    font-style: italic;    margin: 50px 10px 10px 100px;    }

: only-of-type

The : only-of-type pseudo-class targets a child element that is the only one of its type within the parent element. Continuing with the blog comment example, you can use this selector to target the avatar:

<li>    <p>March 14, 2012</p>    <a href="http://nocommonsense.com"><img src="tdog.jpg" alt="T-Dog" /></a>    <p><a href="http://nocommonsense.com">T-Dog</a></p>    <p>C'mon, man, don't give me that gansta s**t!</p>    </li>

CSS:

img:only-of-type{    background-color: rgb(255, 255,255);    border: 1px solid rgba(56,41,48, .5);    float: left;    padding: 3px;    }

:nth-of-type(n)

The :nth-of-type(n) pseudo-class works similarly to the other numeric-based pseudo-classes I've covered. This pseudo-class targets a specific element type according to its position relative to the parent element. You can see an example of the effects you can achieve in the simple shopping cart view shown in Figure 8.

Figure 8 A shopping cart view that features unique styles for different table cells

The HTML for this cart, listed in Figure 9, is in a table. (Remember that tables are fine for data but please avoid them for layout).

<table cellspacing="0">    <tr>    <th>Quanity</th>    <th>Item</th>    <th>Price</th>    </tr>    <tr>    <td>1</td>    <td>The Zombie Survival Guide: Complete Protection from the Living    Dead</td>    <td>$13.95</td>    </tr>    <tr>    <td>1</td>    <td>Gerber Apocalypse Kit</td>    <td>$349.00</td>    </tr>    <tr>    <td>1</td>    <td>Kookaburra BIG Kahuna 2010 Cricket Bat</td>    <td>$189.95</td>    </tr>    <tr>    <td>1</td>    <td>40" Samurai Sword</td>    <td>$159.00</td>    </tr>

Figure 9 The HTML for the shopping cart.

To style several of these table elements, I use the :nth-of-type(n) selector to style the text alignment of the table header and data cells. For example, the Item table header cell needs to be aligned left (the default is centered).

<tr>    <th>Quanity</th>    <th>Item</th>    <th>Price</th>    </tr>

With the :nth-of-type(n) selector, you can target that specific child:

th:nth-of-type(2) {    text-align: left;    }

I can use the same pseudo-class to style the remaining text alignment needed, without a single class or id:

th:nth-of-type(3), td:nth-of-type(3) {    text-align: right;    }    th:nth-of-type(1), td:nth-of-type(1) {    text-align: center;    }

:nth-last-of-type(n)

The :nth-last-of-type(n) pseudo-class works just like :nth-of-type(n), but the relative position is offset from the last child rather than the first. In the shopping cart example, the Subtotal, Tax, Shipping and Total rows need unique styles, as shown in Figure 10.

Figure 10 Unique styles for the subtotal, total and other rows

Let's look at the Subtotal row, which is the fourth row (tr) from the bottom in the table:

<tr>    <td colspan="2">Subtotal</td>    <td>$711.19</td>    </tr>

I used :nth-last-of-type(n) to give this row of cells the style seen in the figure. This is the CSS I used:

tr:nth-last-of-type(4) td {    border-top: 1px solid rgb(56,41,48);    font-style: italic;    font-weight: bold;    text-align: right;    }

And I continued with this pseudo-class for the remaining rows of the table:

tr:nth-last-of-type(1) td {    background-color: rgb(56,41,48);    color: rgb(255, 255, 255);    font-size: 14px;    font-style: italic;    font-weight: bold;    padding: 5px 10px;    text-align:right;    }    tr:nth-last-of-type(2) td, tr:nth-last-of-type(3) td {    font-style: italic;    text-align: right;    }

:first-child

The :first-child pseudo-class targets the first child element, regardless of type, in a parent element. For this example, let's consider a sidebar that has a series of content elements (Figure 11).

Figure 11 A sidebar with different content sections

The markup I used for this example is a containing div, with nested aside elements, which is shown in Figure 12.

<div role="complementary">    <aside>    <ul>    <li><a href="http://youtube.com/whenzombiesattack">Subscribe to our    YouTube channel</a></li>    <li><a href="http://twitter.com/whenzombiesattack">Follow us on    Twitter</a></li>    <li><a href="http://facebook.com/whenzombiesattack">Like us on    Facebook</a></li>    </ul>    </aside>    <aside>    <h3>Newsletter Sign-Up</h3>    <p>The voodoo sacerdos flesh eater, suscitat mortuos comedere carnem    virus.</p>    <p><a href="http://www.webappers.com/newsletter/">Sign up now</a></p>    </aside>    <aside>    <h3>From the Blog</h3>    <p>Zombie ipsum reversus ab viral inferno, nam rick grimes malum cerebro.    De carne lumbering animata corpora quaeritis. Summus brains sit, morbo    vel maleficia? De apocalypsi gorger omero undead survivor dictum    mauris.</p>    <p><a href="/blog/">Read more</a></p>    </aside>    </div>

Figure 12 Markup for the sidebar

As you can see in Figure 11, the sidebar contains sections of content that have a defined border and background:

aside {    background-color: rgb(255, 255, 255);    border: 1px solid rgba(125, 104, 99, .5);    border-radius: 10px;    -moz-box-shadow: inset 0 0 20px    rgba(125, 104, 99, .5);    -webkit-box-shadow: inset 0 0 20px    rgba(125, 104, 99, .5);    box-shadow: inset 0 0 20px    rgba(125, 104, 99, .5);    margin-bottom: 20px;    padding: 25px;    }

However, the first aside contains social media icons and lacks a border and background (see the top of Figure 11). I used the :first-child pseudo-class to target this first section of content:

aside:first-child {    background-color: transparent;    border: 0;    -moz-box-shadow: none;    -webkit-box-shadow: none;    box-shadow: none;    padding: 0;    }

:last-child

The :last-child pseudo-class is the opposite of :first-child, targeting the last child element within a parent. Going back to the sidebar example shown in Figure 11, the first section contains a list (ul) of social media links:

<ul>    <li><a href="http://youtube.com/whenzombiesattack">Subscribe to our YouTube    channel</a></li>    <li><a href="http://twitter.com/whenzombiesattack">Follow us on Twitter</a></li>    <li><a href="http://facebook.com/whenzombiesattack">Like us on Facebook</a></li>    </ul>

Each of these links is rendered on the screen as a different icon, achieved with a simple image-replacement technique and sprites:

li a {    background: url(Sprites.png) no-repeat 2px 7px;    display:block;    height: 64px;    text-indent: -5000px;    width: 64px;    }

In order to style the last link in the list, I use the :last-child pseudo-class:

li:last-child a {    background-position: -100px 7px;    }

The remaining middle link is styled with the :nth-child() pseudo-class:

li:nth-child(2) a {    background-position: -200px 7px;    }

Browser Support

The good news is that all the latest browser versions, including Internet Explorer 10 and 9, support these CSS3 pseudo-classes. Some older browser versions may provide limited support for a few of the CSS3 selectors in this article.

When it comes to support in earlier version of Internet Explorer, it really should be about your project. How are you using any unsupported selectors? If it is purely for design and aesthetic purposes, ask yourself whether you can allow those Internet Explorer users to have a slightly degraded experience, while allowing Internet Explorer 9 and other browser users to have an enhanced experience. If the answer is yes, consider focusing on an adaptive approach to your CSS.

If you need earlier versions of Internet Explorer to support your CSS3 pseudo-classes, check out Selectivzr, a JS utility that emulates CSS3 pseudo-class support in Internet Explorer. It works with jQuery, Dojo, MooTools and Prototype.

Processing

The (sorta) bad news about browsers and CSS3 pseudo-classes is that in terms of how efficiently browsers process selectors, pseudo-classes fall to the bottom of the list. If performance and speed are paramount for your project, you should use pseudo-classes judiciously. I recommend taking advantage of some testing tools to help you best optimize your CSS selectors. Some good ones are:

CSS Test Creator
CSSLint

Knowing When and What to Use

So how do you decide which selectors to use? The answer depends on your project. Knowing both your project and the CSS selectors available will help you decide. The CSS3 pseudo-classes I covered in this article may not be the "bread and butter" selectors for your stylesheets, but they can be invaluable tools, particularly for cases when you can't rely on id and class selectors. Remember, writing good CSS is about finding the most efficient way to achieve a project's goals.

Stay Tuned!

Keep your eye out for Part 2 of "CSS3 Selectors: Structural Pseudo-Classes" In that article, I'll cover UI element state pseudo-classes as well as the :target and negation pseudo-classes.

About the Author

Emily Lewis is a freelance web designer of the standardista variety, which means she gets geeky about things like semantic markup andCSS, usability and accessibility. As part of her ongoing quest to spread the good word about standards, she writes about web design on her blog, A Blog Not Limited, and is the author of Microformats Made Simple and a contributing author for the HTML5 Cookbook. She's also a guest writer for Web Standards Sherpa, .net magazine and MIX Online.

In addition to loving all things web, Emily is passionate about community building and knowledge sharing. She co-founded and co-manages Webuquerque, the New Mexico Adobe User Group for Web Professionals, and is a co-host of the The ExpressionEngine Podcast. Emily also speaks at conferences and events all over the country, including SXSW, MIX, In Control, Voices That Matter, New Mexico Technology Council, InterLab and the University of New Mexico.

Sponsors

Professional Web Icons for Your Websites and Applications

Make the right deploy decision when applying Microsoft's March 2013 patches
Mar 12th 2013, 07:00

Deb Shinder gathers the information you need to make the right deploy decision when applying Microsoft's March 2013 patches in your organization.

You are receiving this email because you subscribed to this feed at blogtrottr.com.

If you no longer wish to receive these emails, you can unsubscribe from this feed, or manage all your subscriptions