Noceanhttps://www.nocean.ca
Web Design & DevelopmentMon, 21 Jan 2019 16:37:04 +0000en-CAhourly1https://wordpress.org/?v=5.0.3https://i0.wp.com/www.nocean.ca/wp-content/uploads/2015/07/n-sqr512-icon-55a90299v1_site_icon.png?fit=32%2C32&ssl=1Noceanhttps://www.nocean.ca
323295782973CF7 Honeypot 1.8 Updatehttps://www.nocean.ca/blog/cf7-honeypot-1-8-is-here/?utm_source=rss&utm_medium=rss&utm_campaign=cf7-honeypot-1-8-is-here
https://www.nocean.ca/blog/cf7-honeypot-1-8-is-here/#respondThu, 04 Feb 2016 19:13:53 +0000http://www.nocean.ca/?p=1577Contact Form 7 Honeypot has been updated to version 1.8. The update includes: Additional filters for customizing the honeypot field’s output. Localization/i18n support (.POT file). Minor bug fixes. I’m also happy to report that Contact Form 7 Honeypot has 100,000+ active installs, and more than 200,000 downloads — making it one of the most popular …

]]>https://www.nocean.ca/blog/cf7-honeypot-1-8-is-here/feed/01577We’ve changed our name. Dao By Design is now Noceanhttps://www.nocean.ca/blog/weve-changed-our-name-dao-by-design-is-now-nocean/?utm_source=rss&utm_medium=rss&utm_campaign=weve-changed-our-name-dao-by-design-is-now-nocean
https://www.nocean.ca/blog/weve-changed-our-name-dao-by-design-is-now-nocean/#respondMon, 27 Jul 2015 16:13:56 +0000http://www.nocean.ca/?p=1471I’m proud and a bit giddy to announce that Dao By Design is now Nocean. New look, same great taste! Eight years ago, when I first started Dao By Design, I wanted a name that contained a dash of the business purpose, a dollop of my personal ideology and a smidgen of the business’ roots …

I’m proud and a bit giddy to announce that Dao By Design is now Nocean. New look, same great taste!

Eight years ago, when I first started Dao By Design, I wanted a name that contained a dash of the business purpose, a dollop of my personal ideology and a smidgen of the business’ roots in China.

As the business grew, and its client list expanded to all points of the globe, the name became increasingly untethered from delivering this message. And what’s a business name if not a message?

Nearly two years ago, I began tossing around the idea of a change, pinned loosely to a move out of China and back to Canada that I knew was an eventuality for myself and the business.

So, why Nocean?

After giving some thought to a new name, and tossing out lists of rejects, I landed on “Nocean” as a homophone and portmanteau that I imagined meaning a large body of concepts and ideas. I liked it right away. It hit the conceptual notes I was looking for, was unique, memorable, not so odd as to be complicated, and it was much shorter than the 3-worded ‘Dao By Design’.

It also avoids being overly descriptive. When Dao By Design began, it was a multi-purpose web and print graphic design service. Over the years, I’ve moved away from print to focus solely on the digital domain. However, the word “design” really only directly describes a small portion of what Nocean now does; which includes web development, site and content strategy, search engine optimization, site performance auditing, campaign management, and much more. I was eager to have an identity umbrella that didn’t pigeonhole the business, but rather offered it the breadth to expand as needed.

And so there it sat. For two years.

The Big Move

Then this past June, that event which seemed on the horizon for so long finally arrived. After more than a decade living as an expatriate in Asia, I packed up my things and my China-born family, and returned home to Canada.

Leaving China and coming back to Canada is a new start in a lot of ways, the complexities of which probably belong in a conversation over drinks, not in a post about this name change. It also offered the perfect opportunity to make the switch to the new name and new identity.

And thus, here we are. The same level of quality, service, and economical efficiency that Dao By Design has always made a priority — now known as Nocean.

So, please have a poke around the new site, and expect to hear more from me in this space as I get back into the writing seat and use this platform to share my thoughts and advice on web design, development and what it takes to make and maintain an effective web presence.

]]>https://www.nocean.ca/blog/weve-changed-our-name-dao-by-design-is-now-nocean/feed/01471Learn more about digital analytics with Google's free Analytic Academyhttps://www.nocean.ca/blog/learn-more-about-digital-analytics-with-googles-free-analytic-academy/?utm_source=rss&utm_medium=rss&utm_campaign=learn-more-about-digital-analytics-with-googles-free-analytic-academy
https://www.nocean.ca/blog/learn-more-about-digital-analytics-with-googles-free-analytic-academy/#respondMon, 07 Oct 2013 03:11:24 +0000http://www.daobydesign.com/?p=1068Google has recently launched the Analytics Academy, a spot for anyone interested in digital analyst/marketing to learn more about digital analytics — specifically using Google Analytics. While it features a community and announcements, the primary purpose of the academy is the course, Digital Analytics Fundamentals. The three-week course “provides a foundation for marketers and analysts …

]]>Google has recently launched the Analytics Academy, a spot for anyone interested in digital analyst/marketing to learn more about digital analytics — specifically using Google Analytics.

While it features a community and announcements, the primary purpose of the academy is the course, Digital Analytics Fundamentals. The three-week course “provides a foundation for marketers and analysts seeking to understand the core principles of digital analytics and to improve business performance through better digital measurement.”

It will feature video and text lessons from Google’s Justin Cutroni, as well as quizzes and practice exercises to test your comprehension of the material.

]]>https://www.nocean.ca/blog/learn-more-about-digital-analytics-with-googles-free-analytic-academy/feed/01068Video: Google’s Matt Cutts lays down some knowledge about snake-oil spam conshttps://www.nocean.ca/blog/video-googles-matt-cutts-lays-down-some-knowledge-about-snake-oil-spam-cons/?utm_source=rss&utm_medium=rss&utm_campaign=video-googles-matt-cutts-lays-down-some-knowledge-about-snake-oil-spam-cons
https://www.nocean.ca/blog/video-googles-matt-cutts-lays-down-some-knowledge-about-snake-oil-spam-cons/#respondThu, 07 Feb 2013 02:17:54 +0000http://www.daobydesign.com/?p=1023Some commonsense advice from Google’s Matt Cutts on those “too good to be true” scams that claim they can get your site ranked #1 on Google instantly.

]]>https://www.nocean.ca/blog/video-googles-matt-cutts-lays-down-some-knowledge-about-snake-oil-spam-cons/feed/01023ToTop Link 1.4 for WordPresshttps://www.nocean.ca/blog/totop-link-1-4-for-wordpress/?utm_source=rss&utm_medium=rss&utm_campaign=totop-link-1-4-for-wordpress
https://www.nocean.ca/blog/totop-link-1-4-for-wordpress/#respondTue, 07 Aug 2012 02:31:08 +0000http://www.daobydesign.com/?p=1002ToTop Link 1.4 for WordPress is out. This simple plugin gives WordPress-powered sites an easy way to add a “return to top” link to their pages. You can see it in action on this site, simply scroll down the page a bit and you’ll see a “return to top” link appear in the top right. …

This simple plugin gives WordPress-powered sites an easy way to add a “return to top” link to their pages. You can see it in action on this site, simply scroll down the page a bit and you’ll see a “return to top” link appear in the top right.

New in v1.4: This update brings with it the ability to customize the scroll trigger offset — meaning, instead of the ToTop Link appearing as soon as the page is scrolled, you can now set it to appear at a certain point of scrolling (eg. greater than 300px down the page).

]]>https://www.nocean.ca/blog/totop-link-1-4-for-wordpress/feed/01002Quickly killing manually submitted spam with Drupalhttps://www.nocean.ca/blog/quickly-killing-manually-submitted-spam-with-drupal/?utm_source=rss&utm_medium=rss&utm_campaign=quickly-killing-manually-submitted-spam-with-drupal
https://www.nocean.ca/blog/quickly-killing-manually-submitted-spam-with-drupal/#commentsSun, 19 Feb 2012 07:56:47 +0000http://www.daobydesign.com/?p=783I run a relatively popular Drupal-powered site that entirely depends on user-generated content. Because the site has a decent amount of clout with the search engines, and because the principle of the site is about sharing links, it tends to get hammered with spam. The vast majority of spam is submitted by bots, which is relatively easy to combat (I use reCAPTCHA and Spamicide). However, and somewhat surprisingly, there is still a solid amount of manually-submitted spam.

By "manually-submitted", I mean someone is actually taking the time to create a (probably fake) e-mail address, registering on the site, confirming the e-mail and then submitting their pieces of spam one-by-one. When last I counted, I receive about 100 to 200 spam content items by this method per week. That the spam never sees the public eye doesn't seem to deter spammers in the least. None of this spam is ever "published" on the site, it is all held in a queue until I can manually delete it. A pain for me, and of absolutely no value to spammers. I'd e-mail them and ask why they bother if I thought it would result in an answer.

I run a relatively popular Drupal-powered site that entirely depends on user-generated content. Because the site has a decent amount of clout with the search engines, and because the principle of the site is about sharing links, it tends to get hammered with spam.

The vast majority of spam is submitted by bots, which is relatively easy to combat (I use reCAPTCHA and Spamicide). However, and somewhat surprisingly, there is still a solid amount of manually-submitted spam.

By “manually-submitted”, I mean someone is actually taking the time to create a (probably fake) e-mail address, registering on the site, confirming the e-mail and then submitting their pieces of spam one-by-one. When last I counted, I receive about 100 to 200 spam content items by this method per week. That the spam never sees the public eye doesn’t seem to deter spammers in the least. None of this spam is ever “published” on the site, it is all held in a queue until I can manually delete it. A pain for me, and of absolutely no value to spammers. I’d e-mail them and ask why they bother if I thought it would result in an answer.

Under the assumption that my pleas to stop would go unanswered, I decided to sit down and come up with an efficient way of dealing with it. The problem is that the queue could potentially hold submitted material from new users (once a user has submitted good content, they immediately get a role that allows them to bypass the queue), so each item must be vetted as either ham or spam.

A while back I began using the Spambot module, which does a great job. With it you can click a “Spam” link on a user’s profile page and immediately delete them and all their content. What’s more, you can report them to the excellent Stop Forum Spam service and give the spammers a slightly harder time respamming (or spamming others).

Spambot is great, but slow. To moderate, I need to look at a piece of content, determine if it’s spam, click the submitter’s name, click the “spam” menu item, select some options and then delete. For intermittent spam submissions this would be fine, but for dozens of spammers every few days, it’s too labourious.

And so today I came up with a better system of bulk/batch killing mass amounts of manually submitted spam in one fell swoop, and also report the spammers to Stop Forum Spam. The following is what I did and how I did it. Please, pleaseread the disclaimer + warning at the bottom of the post before proceeding.

How To Do It

My goal was to create a system whereby I could simply select all the spam content directly from the main list of Drupal content, select a “Kill Spam” action from the “Update” dropdown and be done with it. So if a spammer submitted 10 articles, I could simply select one, flag it as spam and the system would kill all the content by that user, delete the user and report them to Stop Forum Spam.

Once we have those installed, we need to configure each one to do what we need.

Create a “Spam” flag

The first step is to create an action we can use on the Content page to flag our content as spam (and then automatically do something with it). For this we turn to the appropriately named “Flag” module — /build/flags/add — give the flag any name you wish (eg. “kill_spam”) and then click “submit”. The following screen will give you a number of fields to fill in to define your flag. The key fields are:

Flag Link Text: this is the text that will be shown as the update action on our Content page. Set it to something obvious (“Flag as Spam”)

Global flag: make sure it’s checked

Roles that may use this flag: You’ll probably want to limit this to the administrator (or moderators)

What nodes this flag may be used on: You can limit which content types this flag can be applied to

Don’t worry much about the other fields, as they are mostly all for interface/display, which we’ll not be using as we’ll be flagging things directly from the Content list page.

Create a VBO View to list all content by a certain author

Things are going to start to get a bit trickier, but hold on tight and we’ll get through this together. Next up is creating a list of content we can perform batch operations to. We want to be able to select a single piece of content and from that get the user who submitted it, and all their other content. To do this we use the extremely powerful combination of Views and Views Bulk Operations (VBO).

Create a new View (Site Building -> Views -> Add), call it whatever you’d like (eg. “content_by_user”) and make sure View type is set to “node”. The settings for the view are:

Style: Bulk Operations — Under the Style Options you’ll be presented with a long list of available operations. Put a check beside “Delete Node“.

Items to display: Unlimited

Add an Argument of User: Uid — This filters the results by a specific user ID. Very important, as we don’t want to bulk delete just any old content. See this screenshot for detailed settings.

Fields — strictly speaking, you do not need to add fields, as the bulk operation isn’t going to use them. However, I found it handy for testing and so added a few.

Filter — The only filter I set was for “Published” and then set it to “no”. This was a bit of a failsafe to assure that I could only ever bulk kill unpublished nodes.

That’s it, if you set everything right, it should look similar to the screenshot below. You can test and see if the right results are occurring by putting a spam user’s UID in the argument field for the preview section below the view (you’ll need to have added some fields as mentioned in the points above). It should list all the spammer’s content. If no argument is given, no content should show up. If content does show up when no argument is present, double check your settings.

What your View should look like

Creating the Rule & putting it all together

The final step is to create an action (or rule) that triggers when the content is flagged. We do this with the (again, appropriately named) Rules module — /admin/rules/trigger/add.

Give it a label, any label, and then select A node has been flagged, under “Spam Flag” for the event. The next screen will allow you to choose conditions (IF) and actions (DO).

Conditions
We only need one condition, and if that is optional.

Content is Published: NOT. You need to check the “Negate” checkbox to get the NOT part. This is another failsafe so that the action will never get triggered unless the content you’re flagging is unpublished. It’s not strictly necessary, and may not be applicable in all cases (ie. if your spam content could potentially be published when moderating it).

Actions
We will add four actions: Load the flagged content author, Use user object to execute a VBO programmatically, Report to StopForumSpam.com, Delete user.

Load the flagged content author: From the select box choose Content->Load the content author. This is where we get the author (ie. spammer) UID to pass to our VBO View we created above. The “Content” select box under “Argument configuration” should have “flagged content” selected.

Use user object to execute a VBO programmatically: This action deletes all content by our spammer based on the Bulk Operations view we created above. The key part of this step is supplying the View with the user UID of our spammer. On the edit screen, use the following options (screen capture):

Object: We choose “flagged content author”.

View: We select the view we created earlier, in my case it’s called content_by_user.

Operation: Assuming you followed the directions above, you should only have one option here, Delete Node.

View Arguments: This is where we pass the UID argument to the view. Simply input the following into the box: return array($object->uid);

Report to StopForumSpam.com: This is an optional action that will report the spammer to StopForumSpam.com and hopefully help prevent the spammer from spamming your site or mine in the future. For this step you’re going to need a free API key from StopForumSpam.com. To create it we create a new action of the type “Execute custom PHP code”. Give the action a label (eg. “Report to StopForumSpam.com”) and put the following PHP in the PHP Code area. NOTE: You should not include the <?php or ?> delimiters:

Much credit for this code is owed to Spambot, as a good chunk of it was lifted directly from that module. The code hunts down various IPs that the user used to access the site, including Sessions, Comments, Statistics (if enabled) and User Stats (if enabled — the User Stats module is required).

Delete user: The final action simply kills the spammer user account. Make sure the User setting is set to Flagged content author.

Your Rule should now look something like the following:

Spam Cleanup Rule

Wrap Up

If you made it this far, give yourself a pat on the back — that wasn’t for the faint of heart. You should now be able to head over to your Content list, select the spam content items and choose your flag from the “Update options” list. As soon as you hit update, your system should trigger the rule, which will delete the spam content items, report the spammer and delete the spam user’s account.

Disclaimer + Warning

Please be aware that while I’ve tried to be thorough in the above information, and everything is working fine on my own site, you should not attempt any of the above if you’re not confident working with Drupal or some of the above is clear and logical to you. This how-to is written for advanced Drupal users in mind, there is a very real potential to delete content and users unintentionally if the above is implemented incorrectly. And remember, backup, backup, backup. Oh, and don’t forget to backup.

]]>https://www.nocean.ca/blog/quickly-killing-manually-submitted-spam-with-drupal/feed/5783ToTop Link 1.2 & 1.3 for WordPresshttps://www.nocean.ca/blog/totop-link-1-2-for-wordpress/?utm_source=rss&utm_medium=rss&utm_campaign=totop-link-1-2-for-wordpress
https://www.nocean.ca/blog/totop-link-1-2-for-wordpress/#respondSun, 29 Jan 2012 08:41:15 +0000http://www.daobydesign.com/?p=765ToTop Link 1.2 for WordPress is out. This simple plugin gives WordPress-powered sites an easy way to add a “return to top” link to their pages. You can see it in action here, simply scroll down the page a bit and you’ll see a “return to top” link appear. New in v1.2: You can now …

This simple plugin gives WordPress-powered sites an easy way to add a “return to top” link to their pages. You can see it in action here, simply scroll down the page a bit and you’ll see a “return to top” link appear.

New in v1.2: You can now completely customize the positioning of the link/graphic. All the pre-sets (top-left, bottom-right, etc.) are still there, but now you can also define your own offset values. Additionally, you can now customize the ToTop Link image to be whatever image you’d like.

EDIT: Version 1.3 Replaces Version 1.2

I jumped the gun a bit with yesterday’s release of ToTop Link 1.2. One of the new features was using getimagesize(), a PHP function that on some systems will return an error. I’ve reworked the plugin to avoid this issue, and have also sexed up the admin interface a little bit. You can upgrade to v1.3 via your site’s admin interface, or just go directly to the WordPress page and download it.

]]>https://www.nocean.ca/blog/totop-link-1-2-for-wordpress/feed/0765SEOSimple now for Joomla 2.5https://www.nocean.ca/blog/seosimple-now-for-joomla-2-5/?utm_source=rss&utm_medium=rss&utm_campaign=seosimple-now-for-joomla-2-5
https://www.nocean.ca/blog/seosimple-now-for-joomla-2-5/#respondSat, 28 Jan 2012 08:46:21 +0000http://www.daobydesign.com/?p=759Just a quick update to say SEOSimple 2.1 has been released, and now has a Joomla 2.5 version. I’ve also added an option that allows you to define whether you wish your category description to be used as the category page’s meta description. Optionally, you can use the content of the top-most article in the …

]]>Just a quick update to say SEOSimple 2.1 has been released, and now has a Joomla 2.5 version.

I’ve also added an option that allows you to define whether you wish your category description to be used as the category page’s meta description. Optionally, you can use the content of the top-most article in the category listing. If set to “category description”, and no category description is available, it will default to the top-most article’s content (which was what occurred in SEOSimple 2.0). This is actually a re-addition, as this behavior was (and still is) standard in the original Joomla 1.5 version of the plugin. As such, if you’re still using Joomla 1.5, there’s no update for you, as no new features were added.

]]>https://www.nocean.ca/blog/seosimple-now-for-joomla-2-5/feed/0759New WP Plugin: ToTop Linkhttps://www.nocean.ca/blog/new-wp-plugin-totop-link/?utm_source=rss&utm_medium=rss&utm_campaign=new-wp-plugin-totop-link
https://www.nocean.ca/blog/new-wp-plugin-totop-link/#respondWed, 02 Nov 2011 02:38:03 +0000http://www.daobydesign.com/?p=746I’m pleased to announce the release of our latest WordPress plugin, ToTop Link. This simple plugin gives WordPress-powered sites an easy way to add a “return to top” link to their pages. Rather than explain how it works, simply scroll down the page here and you’ll see the link image appear in the top right …

This simple plugin gives WordPress-powered sites an easy way to add a “return to top” link to their pages. Rather than explain how it works, simply scroll down the page here and you’ll see the link image appear in the top right corner.

Settings allow you easily to adjust the positioning and style to best fit your site. As always, it’s the first version, so all bug reports and feature suggestions are warmly welcomed.

]]>A bit of a landmark co-interview with opensource CMS luminaries Matt Mullenweg (founder of WordPress) and Dries Buytaert (founder of Drupal) at SchipulCon 2011 in Houston, Texas. Bear with the initial audio — the irony of tech stuff going wrong is not lost on me either.

Here at Dao By Design we near exclusively build using one or the other, and I couldn’t agree with Matt’s comment that initially Drupal was a very powerful and complicated CMS that has become easier to use, and WordPress was a simple platform that has become much more powerful. Some things are still easier on one or the other (WordPress still leads with backend UI/UX; whereas Drupal has better i18n support and much better handling of custom content types).

Squabbles aside, I agree with Matt that either CMS could handle the scope of virtually any project.