Monday, December 7, 2015

Doodletopia: Cartoons by Christopher Hart


http://images.randomhouse.com/cover/9781607746911?height=450&alt=no_cover_b4b.gif
The neat part of this book and why I think I am going to enjoy giving it as a gift, is that you are able to draw side by side with the author which makes the book interactive and the experience greater. You don't need special paper or a certain medium (pen, pencil, marker, etc.) to take advantage of the tutorial. There are a lot of helpful tips on each page to get you going in the right direction. If you have ever done uncork the artist or something similar where the artist really makes creating "art" easy by breaking down the drawing or painting into simple steps - then you will enjoy using this book. I am a terrible artist - I can't draw anything but mathematical graphs so seeing this book and how it broke it down into steps made it a lot more interesting for me. My father-in-law though is an exceptional artist. He will be able to really take advantage of fine tuning his skills with this book.

There are 10 chapters over 160 pages covering different types of drawing which covers a wide variety of interests: people, animals, fantasy, props, or doodles.

I hadn't heard about Christopher Hart until I saw this book on Blogging for Books, but his website has a lot of credentials worth noting and backing up the authority of this book. The one that stood out to me was
Chris has had the rare distinction of having had the top 1, 2 & 3 art books in the country, simultaneously, as reported by Nielsen Bookscan.
That's an impressive feat and definitely worthy of checking out this book.

Blogging for Books: http://www.bloggingforbooks.com/reviews/view/58566

Friday, November 20, 2015

Evanced Code for Dynamically Pulling Events in ASPX

I can't take the credit for this one - this was all our IT department bailing me out. I needed to dynamically grab the events through with the XML or JSON feed so I could display them on our OPAC. I can do the front-end piece and if this was PHP no problem, but it was much faster to toss pride away and just ask for help.

This code assumes you only have on URL (mURL) - if you have mutliple locations you'll need to create a dynamic solution. This was a pretty rapid test, but we will be adding in dynamic code. Once we do, I'll update the page accordingly.

SINGLE EVANCED FEED
<script runat="server">
        Sub Page_Load()
            If Not Page.IsPostBack Then
               
                Dim mURL As String

                mURL = "http://toledolibrary.evanced.info/signup/eventsxml.aspx?dm=exml&nd=365&lib=1010&ongoing=1"

                Dim xmlDoc As New XmlDocument()
                xmlDoc.Load(mURL)
                Dim nodes As XmlNodeList = xmlDoc.DocumentElement.SelectNodes("/event/item")
                Dim pTitle As String = ""
                Dim pTitleCk As String = ""
                Dim pDate As String = ""
                Dim pTime As String = ""
                Dim pEndDate As String = ""
                Dim pDescription As String = ""
                Dim pLocation As String = ""
                Dim pLibrary As String = ""
                Dim pLink As String = ""
                Dim intCount As Integer = 0
                Dim pTest as String

                For Each node As XmlNode In nodes

                    pTitle = node.SelectSingleNode("title").InnerText
                    pDate = node.SelectSingleNode("date").InnerText
                    pTime = node.SelectSingleNode("time").InnerText
                    pEndDate = node.SelectSingleNode("enddate").InnerText
                    pDescription = node.SelectSingleNode("description").InnerText
                    pLocation = node.SelectSingleNode("location").InnerText
                    pLibrary = node.SelectSingleNode("library").InnerText
                    pLink = node.SelectSingleNode("link").InnerText

                    If (pTitle = pTitleCk) Then
                    Else

                        'Eliminate HTML tags
                        pDescription = pDescription.Replace("<p>", "")
                        pDescription = pDescription.Replace("</p>", "")
                        pDescription = pDescription.Replace("<br>", "")

                        pTest = pTest & "<div class='event pull-left'><a class='swipebox-video' href='" & pLink & "?swipeboxVideo=1'><h2 class=''>" & pTitle & "</h2></a><div class=''>" & pDate & " (" & pTime & ")<br>" & pDescription & "</div></div>"
                       
                        'pTest = pTest & "<div class='event pull-left'><a href='" & pLink & "'><h2 class=''>" & pTitle & "</h2></a><div class=''>" & pDate & " (" & pTime & ")<br>" & pDescription & "<a class='more-info' href='" & pLink & "'> More Info</a></div></div>"
                       
                        'Response.Write(pDescription & "<br>" & pLibrary & ":  " & pLocation & "<br><br>")
                        '<a href='" & pLink & "'>More Info</a><br><br>")

                            intCount = intCount + 1
                           
                          Literal1.Text = pTest 

                    End If

                    pTitleCk = pTitle

                Next
               
               
            End If
        End Sub
    </script>

This is an example of the page in action:
http://images2.toledolibrary.org/imagewall/_new/2015%20-%20OPAC/index.aspx

Friday, November 13, 2015

CASE STUDY: Breadcrumbs

Breadcrumb trails on a page indicate the page's position in the site hierarchy. A user can navigate all the way up in the site hierarchy, one level at a time, by starting from the last breadcrumb in the breadcrumb trail. For complex or deep websites, the correct type of breadcrumbs are extremely helpful. There are three types of breadcrumbs: location-based, path-based, and attribute-based. Share Thurow from Marketing Land does a good job summarizing the types of breadcrumbs and when to use them. I've modified them to Library world examples.  

Location-Based  
Location-based breadcrumbs help the user understand the websites structure by identifying your current page and linking to pages above in the hierarchy.  

Example:  
Home > Services > Book Kits  
The structure is pretty obvious here. The user is on the Book Kits page that resides under Services and Services resides under Home. This type of breadcrumb supports usability, findability, and accessibility to improve the user experience. Findability is an important part of how I define User Experience and it often gets left off of many User Experience diagrams.  
User Experience Honeycomb  
User Experience Honeycomb by Peter Morville. Used with Permission.  
  
Path-Based  
Path-based breadcrumbs are pointless. I'm not sure why they were ever invented, but they essentially create a trail for you of every page you've been to on the website.   

Example:  
Home > Services > Book Kits > About Us > Home > Contact Us > Catalog  
There is no structure here that helps navigation. It duplicates the function of the back button, it confuses a user who might want to reference where they are in the website hierarchy compared to home, it displays a creepy tracking history trail is not helpful, and it confuses search engines by showing duplicate content links with endless variations for robots to find.  
  
Attribute-Based  
Attribute-based is what every good e-commerce website should have implemented for filtering and faceted searching. This is the most complicated type of breadcrumb to implement correctly because with search engines it is extremely important not to portray duplicate content. So making sure you setup correct redirects (.htaccess or proxy level) to ensure the order of the filters doesn't matter is critical.  

Example:  
| Fiction x | Adult x | War x | History x  
When using Attribute-based breadcrumbs it may or may not be helpful to include Location-based breadcrumbs. In the next example, I've mixed Location-based breadcrumbs and Attribute-based breadcrumbs. The first 3 items are Location-based and the last 4 are Attribute-based.  
Home > Services > Book Kits | Fiction x | Adult x | War x | History x  
  
Hypothesis  
Breadcrumbs aren't aiding the user significantly and taking up valuable space.  

Data  
Home Button: 1,555
First Tier: 190
Second Tier: 0

Total Users: 235,986
  
Results   
There is an article from Google on Structured Data and using breadcrumbs in searches which should put down all arguments about breadcrumbs being dated and pointless. They use structured data and breadcrumbs to directly impact search results allowing user to not hit the desired landing page, but navigate to a subset of that page whether it is location or attribute based. If the big G uses it to help you tailor searches better for your audience, you better get on board.   
Structured Data  
  
Un-Structured Data  
  
Having trouble finding the structure? Pay close attention to the URL.  

While the 2009 study from Jakob Nielson and Kara Pernice is ancient in regards to breadcrumb tracking, the large amount of data there is definitely one reason we still have breadcrumbs. The book Eyetracking Web Usability summarized the data and concluded that "People look at breadcrumbs 30% of the time". Now realize that number has changed over 6 years, but the study combined with Google using structured data and you have a really hard argument to discredit.