Blog

Support the Arts by Supporting an Artist: Rachael Ashe

August 27, 2010

Rachael Ashe, our beloved office manager, left Hop Studios at the beginning of this year to pursue her lifelong passion: art.

Rachael is a talented and innovative artist that works deftly in several mediums, among them photography and mixed-media collage. This year, she began to work with a new format: altered books. These beautiful pieces combine created, found, and purchased objects in collages where an old book is the canvas. She frequently cuts holes in the book’s pages, or folds and cuts the pages to incorporate them as elements of the collage. They are amazing pieces, and you don’ t have to take my word for it! A series of 25 (yes, 25!) of Rachael’s altered books is on display at the Pacific National Exhibition’s Container Art Show in Vancouver. Another piece is on display in the UK at the Artworks-mk exhibit.

I am lucky enough to own several of Rachael’s pieces, and I bought one of the altered books for my knitting studio early in the year. There’s something very special about having original artwork by a working artist in your home or work space. The pieces are creatively inspiring and of course beautiful to look at. So I’m very lucky, but I have good news: you, too, can own one of Rachael’s pieces. She has put quite a few of her photos, metal prints, collages, and altered books up for sale in her Etsy shop. And I’m sure I don’t have to tell you how wonderful artwork can be as a gift, for yourself or others.

Regardless of who you purchase one of these pieces for, you will be giving Rachael something invaluable: the ability to continue her work as an artist. Our culture needs people like her, that contribute so much creativity and beauty to our world, making it a richer and more enjoyable place for all of us. We do a poor job of supporting our artists, generally, so Rachael and other artists deserve extra thanks for choosing to do the work they do.

So, thank you, Rachael. Hop Studios can’t wait to see what you do next!

Posted by Susannah Gardner at 12:16 PM | Comments (2)


How to Restore a Deleted Member in ExpressionEngine 1.6.9

August 27, 2010

It’s happened to a lot of us at one time or another: we’ve deleted a member from our Expression Engine 1.6.9 site and then said—Oops! That wasn’t a spammer! That was our most important forum volunteer!  (OK, maybe not to ALL of us, but to some of us, certainly.)

How do you get that member back?  Well, there are a lot of places within the EE codebase where members can be deleted, and each one is coded slightly differently.  They can be deleted from the control panel by an admin individually or as a batch, they can be deleted from the control panel (or from the public-facing pages) as a self-deletion under the My Account tab, and they can be deleted from a link on any forum post they make, by an admin.  In each case, once you delete them, you will likely end up with all the member’s content and settings deleted—though in some cases, their weblog entries are migrated to someone else, and in some other cases, reply posts to a member’s forum topics don’t seem to be deleted (though they probably ought to be).

In a nutshell, to restore a member deleted accidentally, you’re going to have to:
a) find and access an earlier version of the EE database where that member’s account and data still exists
b) select all the relevant data from that database, and then
c) insert it back into the current database.

You’ll need the data from the following queries:

SELECT * FROM exp_members WHERE member_id = #deleted#;
SELECT * FROM exp_member_data WHERE member_id = #deleted#;
SELECT * FROM exp_member_homepage WHERE member_id = #deleted#;

SELECT * FROM exp_message_copies WHERE sender_id = #deleted#;
SELECT * FROM exp_message_data WHERE sender_id = #deleted#;
SELECT * FROM exp_message_folders WHERE member_id = #deleted#;
SELECT * FROM exp_message_listed WHERE member_id = #deleted#;

SELECT * FROM exp_forum_subscriptions WHERE member_id = #deleted#;
SELECT * FROM exp_forum_pollvotes WHERE member_id = #deleted#;

SELECT * FROM exp_forum_polls WHERE author_id = #deleted#;
SELECT * FROM exp_forum_topics WHERE author_id = #deleted#;
SELECT * from exp_forum_posts WHERE topic_id IN (SELECT topic_id FROM exp_forum_topics WHERE author_id = #deleted#) OR author_id = #deleted#;
/* NOTE: This selects the author’s own posts and the posts that were deleted when the member’s topics were deleted. */

SELECT * FROM exp_forum_attachments WHERE member_id = #deleted#;
/* NOTE: Deleting a member deletes their file attachments—restoring those is beyond being a database issue, and restoring the attachment entries doesn’t re-create the files. */

SELECT * FROM exp_forum_administrators WHERE admin_member_id = #deleted#;
SELECT * FROM exp_forum_moderators WHERE mod_member_id = #deleted#;

SELECT * FROM exp_weblog_titles WHERE author_id = #deleted#;
/* NOTE: If there are any, you have an even bigger restore issue, because you need to restore exp_weblog_data and exp_weblog_comments as well, which the next two lines find */
SELECT * FROM exp_weblog_data WHERE entry_id IN (SELECT entry_id FROM exp_weblog_titles WHERE author_id = #deleted#;)
SELECT * FROM exp_comments WHERE entry_id IN (SELECT entry_id FROM exp_weblog_titles WHERE author_id = #deleted#;)
/* NOTE: I left out exp_gallery_entries because I don’t use it.  If you do, don’t overlook it. */

SELECT * FROM exp_comments WHERE author_id = #deleted#;

At this point, with all these selects, you should have all the data you need to reinsert, not including any third-party modules which likely didn’t have their data erased—but you never know, so it’s worth checking third-party tables, too.

Side note: if you write a module that stores data tied to user accounts, you should likely deal with that data when the member delete is called—there’s an extension hook you can watch.

Make lots of backups, reinsert, and hope you never have to do this again.

Oh, and lastly, go here: CP Home ›  Admin ›  Utilities ›  Recount Statistics

Final thought: If you need a member restored, give us a shout, we’ll be glad to help.

Posted by Travis Smith at 12:44 AM | Comments (3)


Fine Tuning Taken to the Maximum

August 23, 2010

dan appel screenshot

It’s rare to have a client so detail-oriented as Dan Appel, but when one comes along, we have to bring all our design and code skills to bear to make sure the job gets done right. It takes an eagle eye to see small differences on the Web—a pixel here and there is basically invisible to most eyes, and don’t even get me started on the small differences between how a page renders from one browser to another. But Dan Appel is special, as you can see by looking at the creative video work he produces with his team at danAppelcreative.

Dan’s particular design vision meant that we were looking at integrating the use of a specialized font in order to display the minimalist navigation system for his site. There are several ways to approach fonts online, each with a certain set of limitations and difficulties. The easiest route would probably have been to simply create each navigation item as a graphic in Photoshop using a transparent background to allow the wood grain background to show. Browsers handle images well and it’s easy to control layout using nice rectangular images. But this is only the easiest route from a production point of view. Using images has some serious drawbacks in the realm of SEO but also for making changes and additions down the line. Since we wanted the site to be very easy for Dan to update in the future, images were simply a bad choice. After all, anything that makes updating your Web site harder or more time-consuming has one effect: the Web site doesn’t get updated. And that’s no good.

So images were out. The solution we opted for was the technology called Cufón. Cufón allows you to take an existing font file, and assuming the use license permits it, create a file that encodes the font for display on the Web and then render it using JavaScript. If you’re not a tech nerd, the important thing is that you can use fonts that are non-standard, meaning fonts that aren’t already installed on the Web site visitor’s computer. For a designer, this is a real gift! Cufón isn’t designed to allow you to replace body type; it’s best suited for use in headlines and other short bits of text. We pushed that boundary a bit with Dan Appel’s site by using it as body type and for navigation. Since there isn’t much body type on the site, however, we decided to go for it.

With Cufón in place, and a content management system running the backend, the site can be easily updated if Dan ever decides to add an additional section of content, or wants to change the name of an existing one. In our book, that’s a win.

Dan himself was very focused on making sure the site conformed to his personal aesthetic, and we worked closely with him on tiny improvements like text leading, and interactive effects. It was exciting to work with a client who is so invested in creating a high-quality experience for visitors to the site across all areas of the site, from content to design to functionality, and at such a detailed level. Thanks for the challenge, Dan!

Posted by Susannah Gardner at 12:53 PM | Comments (1)


Deeploy Helper 2.0 Released

July 19, 2010

Deeploy Helper is a simple module to make our lives as EE developers just a little easier. It collects many of the configuration parameters we most frequently modify on one page, where power users can modify them all at once. And, to celebrate the release of EE 2.1, we’ve finally released a new Deeploy Helper with EE 2.0 compatibility.

Are you an EE developer who wouldn’t mind a few extra minutes in your day?  Maybe Deeploy Helper can help!

Deeploy Helper is compatible with EE 2.1 and also includes a copy of the last version that was compatible with EE 1.6.9.

Please note: This is a very powerful tool. It works in our tests, and it’s worked for many other EE developers who have downloaded it. But because it directly updates system settings tables in your EE database, this tool has the potential to damage your installation.  We encourage its use on well-backed-up systems.

Posted by Travis Smith at 12:15 PM | Comments (9)


Site launch: Greater Good Science Center and magazine

May 5, 2010

For nearly a decade, the Greater Good Science Center and its magazine have been at the cutting edge of the science of compassion, happiness, and altruism—the science of a meaningful life. But last year, the Greater Good decided that their Web site was not at the cutting edge—or even in the productive center.  It was lagging, which was a double shame because it had both a heck of a lot of excellent content as well as a mission to share that information with a world wide audience.

The site’s editors has a clear vision of what they wanted in a new site, and reached out to us to make that vision real.  Hop Studios came in and assessed what had grown organically (that means: not particularly efficiently or logically, and often with workarounds needed to deal with the entrenched publishing tools). We retooled everything (using ExpressionEngine, natch) and shaped it all into a flowing, organized, and well-designed site for the next who-knows-how-many years. (We keep on top of the latest design and technology trends, but try to avoid creating sites that will seem “so 2009” in two years. Let us now how we did, 24 months from now.  )

As always, we faced a lot of challenges in a site of this size, but perhaps the biggest challenge was that we kept stopping to read all the great articles. Many revealed that the secret of a meaningful life was to simplify and focus on what was important: good advice in life, and good advice in a Web site overhaul.  Some of the highlights of this new site include:

  • The entire Greater Good archive—hundreds of articles that appeared in the print magazine—is available online, categorized and tagged, for the first time ever.
  • Complete integration of original flat-file articles, PDFs, and two award-winning blogs with all their comments, simplifying the editorial process and making it easy to jump from one story to related blog posts, videos, events and more
  • An extensive new video section cross-referenced by speaker and series, with multiple podcasts to launch soon as well
  • Complete forum customization
  • Paid subscriber and free member registration co-existing, with a member import process, so that subscribers to the previously paid magazine get access to custom member-only information and downloads
  • Complete preservation and forwarding of the previous site URLs. Don’t you hate it when old links turn up dead? We do, too, so we made sure it wouldn’t happen.
  • Integration with Disqus, Sharethis, Google Analytics, Constant Contact, 3rd party ad services, Twitter… you name it, we integrated it.

I’m particularly proud of the article handling; it’s the first EE site we’ve built that lets editors embed an arbitrary number of pull-quotes or automatically resized photos into an article body without knowing any HTML or using the dreaded “File Upload” link in EE 1.6.8. The site has quite a few jQuery and CSS flourishes that add ease of use but work without it, too.  This site was so reliant on third-party add-ons, we have to give a special thank-you to DC Template Manager, Freeform, LinkLocker, Low NoSpam, Playa, FF Matrix, Tag, Tracker, User, Image Sizer, Fasta, Gypsy, LG Add Sitename, nGen File Field, Simple Math, Hop Inject and Edit This (that’s us smile ), Nice Date, Splitter, Ajax Detect, Video Player, Reeposition, TruncHTML and of course Fieldframe. 

We look forward to building our next site this size in EE 2.0!

Posted by Travis Smith at 2:52 PM | Comments (4)


More posts from August 2010