I have a love - hate relationship with RSS feeds. Being able to view updates from several hundred sites in one place rather than having to visit them all individually is certainly a benefit. But only consuming a site through NetNewsWire means you never see the site itself. There’s something to be said for the manner in which people present their digital selves on the web.
Recently I closed NNW thinking that i’d like to view the actual sites every day, rather than only on occasion. With 95 sites in my “A-List” folder, visiting each site was rather taxing for my aging PowerBook. Well, taxing in the sense that while Safari can open all 95 pages in individual tabs more or less simultaneously, it takes a long time for the last tab to complete.
Instead I now trying a hybrid approach. I keep NNW open throughout the day, and I can dip into the large pool of content whenever I choose. But there are those sites whose visual presentation is exceptional, and I visit those in the browser, usually without having check NNW to see if there are any updates. Part of the fun of visiting sites via the browser is the anticipation while you wait for the page to load.
Type and “s” and let Safari auto-complete it to “shawnblanc.net” and hit the return key. For a second or so you get to wonder if Shawn posted something new today or not. If so, great, sit back and enjoy. If not, well, you still get to see his finely modified Hemingway theme. Or “p” for “paragiraffe.com.
RSS is perfect for drinking from the Web hose, but a browser is best for truly enjoying your favorite flavors, a sip at a time.
Recently Sibylle added a repeating event to one of her Google Calendars. She’s been auditing a class at K-State, and added the three-times-a-week classroom schedule to her calendar. This week is spring break here, and so she wanted to remove the three events from her calendar, since she won’t be going to class.
Google Calendar refused to remove the events. They would disappear from the calendar when you deleted them, but the next time the calendar was refreshed, they would reappear. Opening up any of the events in the series showed that the title had been changed to the word CANCELED. The title shown inside the event bubble on the calendar was still correct, however. Sometimes in the past Google Calendar has been slow to respond to changes, and waiting a few minutes to try an action again is all it takes to set things right. This time waiting didn’t accomplish anything.
Over the course of several days we both tried to remove the now offending events with no success. Poking around in the help pages didn’t provide any insight or advice. Doing a Google search led me to a couple of forum threads filled with postings of similar issues. There appeared to be a work around, which involves exporting your calendar and editing it outside of Google Calendar, and then importing the corrected calendar. Since this is a calendar Sibylle has had for years, and one filled with history she wants to keep, we were hesitant to go the export-edit-import route.
One of the last comments in the thread suggested finding the very last event in the series and deleting it. In at least two cases this removed all the other CANCELED but still visible events. She tried that with no success, and later I tried it as well. Finally in desperation, and because “no” is a powerful motivator for me at times, I manually deleted every single occurrence of the event. All 312 of them.
Working on the assumption that the problem was somewhere in the long tail of events, stretching out to May 2011, I deleted events in reverse order. Each time I selected the “All events in series” option hoping that I’d finally found the magic event that would clear away the rest. It wasn’t until I reached February 2009, events that had already occurred, that deleting an instance wiped out others in the series.
Yes my solution was labor intensive, in all I spent maybe 15 minutes deleting one event after another. In the end, however, Sibylle gets her calendar back.
There is one comment buried in the thread from a Google employee that indicates they are aware of the issue and are working on it. I don’t know when (or if) they will address it. Hopefully we won’t need it.
Recently Sibylle asked me if we could add a photo gallery to her piano studio web site, so that she might be able to display pictures there. I started to look at various examples but wasn’t really excited about any of the templates I had found, until I read the Create a Slick Flickr Gallery with SimplePIE on Nettuts.com.
The tutorial shows how to use the SimplePIE RSS reader to dynamically pull pictures from your Flickr account and make a nice gallery page on your website. Want new pictures on your website? Just add new pictures to the collection or set you used as the source for the RSS feed.
I was able to get Sibylle’s photographs page working in relatively little time. The one stumbling block (once I got the example page provided working with her style sheet) was dealing with pictures of varying sizes. The RSS feed from Flickr contains links to all the available image sizes for each image in the set. The gallery page uses the thumbnail size image for display; when that image is clicked the large image size is shown in a modal window. Not all of the images in the set had a large size, so clicking on their thumbnail resulted in an “image not available” message from Flickr.
Since I had the URLs for all the image sizes, I decided to see if I could test the results for the large image URL, and if it wasn’t available, substitute the URL for the medium image size. The gallery page uses PHP to manipulate the images, so I did come Google searches and discovered the curl function. Using that function I was able to capture the HTTP response header from Flickr when the large image URL was used as the request. Parsing that response using the string position function, strpos, I was able to determine if the image existed or was unavailable.
The php code that does this image pre-fetch is shown below. $full_url is set to the large image size URL by the time this code is reached. $not_available is set to the image not available URL from Flickr, or http://l.yimg.com/g/images/photo_unavailable.gif. If strpos returns a value greater than zero the image isn’t there, and we set $full_url to be the medium sized URL from the $img collection.
// make sure the full size image exists
$timeout = 2;
$ch = curl_init();
// set the URL we are interested in
curl_setopt($ch, CURLOPT_URL, $full_url);
// bring back the HEADER
curl_setopt($ch, CURLOPT_HEADER, 1);
// and just the HEADER please
curl_setopt($ch, CURLOPT_NOBODY, 1);
// don't show results in browswer
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// time out after the value set above
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$output = curl_exec($ch);
curl_close($ch);
// test the result
if (strpos($output,$not_available) > 0) {
$full_url = select_image($img, 3);
}If you are interested it the full source listing of the page, please leave a comment with a working email address and I’ll be happy to send it to you.
You’ll need a slice of your favorite bread, with just a smear of mayonnaise on it, perhaps 2 or 3 tablespoons of crushed pineapple, and about an equal amount of your favorite cheese, shredded, and a 2 or 3 ounce slice of ham cut into strips.
Heat a cast iron skillet over medium-high heat until a drop of water hops and dances on the surface. Toss in the ham and cook until heated through, maybe 2 minutes. Add the pineapple (juice too) to the ham and continue to stir for another minute or so. Top with the cheese and let it stand until the cheese starts to melt.
Lift the whole thing onto your bread (or bun) and enjoy.
In object oriented programming, polymorphism is defined as the ability of different objects to respond to the same message in different ways. Polymorphism is a Greek term meaning “many forms.” While the term may seem intimidating, the basic idea couldn’t be simpler: Each object can have a unique response to the same message.
Take people for example; ask a dozen people the same question and they all could determine their answers differently, but the meaning of the question and the form of the answer would be the same. The private mental process is different.
As I learn to play the piano, I am struck again and again by the similarity between music and programming. Music is a language, just like Java or Python, and it has its own syntax, rules, and constructs, just like Java or Python. Take chords, for example. (For the sake of this discussion I’m only going to talk about three-note chords. I haven’t learned any chords with four or more notes.)
In programming a function is a set of instructions that performs a task and returns a value. The function may or may not accept an input value (or set of values). A chord is a musical function that accepts the scale as it’s input value and returns a set of notes as its output. To use object oriented nomenclature, the scales are objects, and the chords are messages sent to those objects to perform some function.
The Major Scale object has 8 attributes, one for each scale degree. From Wikipedia:
Again, to use object oriented concepts; the Major scale class would define the eight scale degrees, and methods for each of the chords (I, IV, V, V7, et cetera). Each instance of a major scale (C, G, D, A, et cetera) would inherit the scale degrees and chord methods from the Major scale class. Something like this:
The C Major scale is comprised of the following notes: C D E F G A B C. So a I chord in C Major would return C-E-G as the notes. A IV chord, F-A-C.
A G Major scale is comprised of G A B C D E F# G, so a IV chord would return C-E-G, just like the I chord in C Major.
The chord functions (I, IV, V) are polymorphic. They respond to the same question in different ways. Ask a D Major scale the IV chord question and you get G-B-D, ask the same IV chord question of F# Major and you get B-D#-F#. The chord function always returns the same scale degrees, but the result is polymorphic in that the scale degrees vary based on scale to which they are being applied.
Several times in the past couple of months I have gotten emails that indicate to me someone is trying to access one or more of my online personas. The latest was this morning and took this form:
[… snipped for obvious reasons …] Apparently someone is trying to create an account using my old user name, on Blogger. I’ve not been active on that service since 2001, but it still contains all the old postings I made there. I’ve also had password reset emails for my primary Google email account.
The problem with GMail is compounded by their unusual practice of granting you all the variations on your email address using a dot separator. For example, if you registered an account as first.last@gmail.com, you also have firstlast@gmail.com, and f.irstlast@, and fi.rstlast@, and so on. I continually get emails addressed to my account minus the dot. And I am starting to get password reset confirmations for that variation as well.
That these services require an email confirmation is good, it prevents my accounts from being hijacked. However, getting these emails and realizing that someone is testing the locks on the door makes me nervous.
Like most people I’m fairly lazy when it comes to passwords. I have several that I like and use, and I hope that they are secure enough to withstand casual cracking attempts. I tend to use a combination of upper and lower case, numbers, and misspelled or foreign words, but I also reuse the same password across many accounts. I am of the opinion that one really good password, that has lots of entropy used across accounts is better than individual passwords that maybe weaker for each account. The trick is finding a really good password and trusting that it is really good.
I’ve tried patterns on the keyboard where I don’t need to remember the password itself, just the pattern and a starting point. However I am not entirely convinced that a smart cracker wouldn’t attempt pattern based attacks, so hopefully my pattern isn’t obvious.
I’ve been experimenting with 1Password on my Mac, which in addition to remembering passwords for you, will generate new ones. The problem I see with using a password generator is that while the resulting password may be much stronger than one I would think up, I can’t remember it and therefore am totally reliant upon the software to remember it for me. If something should happen to 1Password, then I will be dependent upon the email verifications that started this posting. I suppose that wouldn’t be the end of the world but it seems messy somehow.
So I’m searching for a 12 ~ 15 character password that doesn’t contain dictionary words, has numbers and symbols, isn’t a readily identifiable pattern and is something I can remember and easily type.
Zanshin.net will be thirteen years old tomorrow. I know that when I first got the domain I never imagined I would still be actively hosting a web site more than a decade later. The oldest blog postings go back to December 1999, so I’ve been archiving my life for almost a decade here.
Happy Birthday, Zanshin, and many happy returns.
Sibylle discovered this on the DailyOM, and I thought it was well worth sharing.
Staying Grounded in a Big City or Busy World
1. Live simply and live deliberately. By choosing not to get caught up in the details of this fast-paced world, you are doing your part to slow down the . You will also discover that you have more time to enjoy being alive.
Stay in touch with yourself. Soul searching, meditation, and journaling are just a few of the many activities you can take part in to stay aware and learn as much as you can about your emotions, reactions, likes, dislikes, dreams, and fears. Having a solid sense of self gives you a firm foundation for living in this world.
Support or teach others as often as you can. This can help you form connections with people while also giving you an opportunity to make the world a better place.
Consciously choose what you will allow into your being. The media bombards us with visions of hate, war, and pain. Be judicious about what you read, watch, and listen to.
Acknowledge the beauty that resides around you. Whether you live in a sprawling metropolis or a stereotypical suburb, there are natural and man-made wonders just waiting to be discovered by you.
Nurture your ties to your tribe. If you don’t have one, create a community that you can belong to. Modern life can be isolating. When you have a tribe, you have a circle that you are a part of. Its members – loved ones, friends, or neighbors - can be a source of support, caring, guidance, and companionship.
See the larger picture. Remember that the way that you choose to live is not the only way to live. Widen your perspective by exploring other modes of being through research, travel, and discussion.
Embrace the challenges that life presents to you, and challenge yourself often. After a time, even the most exciting jobs or lifestyles can seem routine. Never stop assimilating new knowledge about whatever you are doing, and your life will never seem dull.
Move your body. In this busy world, it can be easy to live a sedentary life. Movement reacquaints us with our bodies and connects us to the earth in a visceral way. It also restores our vitality.
Make time for stillness, silence, and solitude. The world can be noisy, and we are subject to all kinds of noises nearly every waking hour. We are also often “on the go” and unable to relax. Being alone in a peaceful place and making time for quiet can help you stay in touch with yourself.